use crate::ifaddr::InterfaceAddressId;
use crate::interface::InterfaceId;
use crate::neighbor::NeighborId;
use crate::route::RouteId;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum ChangeKind {
Added,
Removed,
Changed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum Event {
Route {
id: RouteId,
kind: ChangeKind,
},
Interface {
id: InterfaceId,
kind: ChangeKind,
},
Neighbor {
id: NeighborId,
kind: ChangeKind,
},
Address {
id: InterfaceAddressId,
kind: ChangeKind,
},
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn events_carry_id_and_kind() {
let event = Event::Route {
id: RouteId::new(1),
kind: ChangeKind::Added,
};
assert_eq!(
event,
Event::Route {
id: RouteId::new(1),
kind: ChangeKind::Added,
}
);
assert_ne!(
event,
Event::Route {
id: RouteId::new(1),
kind: ChangeKind::Removed,
}
);
}
}