commit full of PRs
PRs full of commit basically i used the ENTIRE mimo grant to convert a system to another. hope this one is good. may fail.
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
[package]
|
||||
name = "wakey-core"
|
||||
version = "0.2.3"
|
||||
version = "0.3.0"
|
||||
edition = "2024"
|
||||
publish = ["gitea"]
|
||||
|
||||
[dependencies]
|
||||
macaddr = { version = "1", features = ["serde", "serde_std"] }
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
macaddr = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
serde_with = { version = "3", features = ["json"] }
|
||||
strum = { version = "0", features = ["derive", "strum_macros"] }
|
||||
thiserror = "2"
|
||||
|
||||
@@ -7,7 +7,9 @@ use crate::model::{DhcpLease, NeighborEntry, NeighborState};
|
||||
use crate::parse::mac;
|
||||
|
||||
/// Product-level presence derived from raw neighbor state.
|
||||
#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash, Serialize, serde::Deserialize, Default)]
|
||||
#[derive(
|
||||
Debug, PartialEq, Eq, Clone, Copy, Hash, Ord, PartialOrd, Serialize, serde::Deserialize, Default,
|
||||
)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum Presence {
|
||||
Online,
|
||||
@@ -17,6 +19,28 @@ pub enum Presence {
|
||||
Offline,
|
||||
}
|
||||
|
||||
impl Presence {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Presence::Online => "online",
|
||||
Presence::LikelyOnline => "likely_online",
|
||||
Presence::Unknown => "unknown",
|
||||
Presence::Offline => "offline",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&str> for Presence {
|
||||
fn from(s: &str) -> Self {
|
||||
match s {
|
||||
"online" => Presence::Online,
|
||||
"likely_online" => Presence::LikelyOnline,
|
||||
"offline" => Presence::Offline,
|
||||
_ => Presence::Unknown,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<NeighborState> for Presence {
|
||||
fn from(value: NeighborState) -> Self {
|
||||
match value {
|
||||
@@ -50,7 +74,7 @@ pub enum DeviceId {
|
||||
/// from hooks and live inventory so higher layers can explain why a device looks
|
||||
/// online, stale, or unknown without reverse-engineering flattened fields.
|
||||
#[skip_serializing_none]
|
||||
#[derive(Debug, PartialEq, Eq, Clone, Hash, Serialize)]
|
||||
#[derive(Debug, PartialEq, Eq, Clone, Hash, Serialize, Deserialize)]
|
||||
pub struct DeviceObservationFact {
|
||||
pub kind: String,
|
||||
pub action: String,
|
||||
@@ -67,7 +91,7 @@ pub struct DeviceObservationFact {
|
||||
/// This aggregates facts from DHCP leases and neighbor-table rows into a more
|
||||
/// useful application-level shape.
|
||||
#[skip_serializing_none]
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct Device {
|
||||
pub id: Option<DeviceId>,
|
||||
pub names: Vec<String>,
|
||||
|
||||
@@ -7,7 +7,7 @@ use crate::model::NeighborState;
|
||||
use crate::parse::mac;
|
||||
|
||||
/// One parsed DHCP lease row.
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct DhcpLease {
|
||||
pub expires_epoch: u64,
|
||||
pub ip: IpAddr,
|
||||
@@ -18,7 +18,7 @@ pub struct DhcpLease {
|
||||
|
||||
/// DHCP lease row plus optional current neighbor-state enrichment.
|
||||
#[skip_serializing_none]
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct DhcpLeaseWithState {
|
||||
#[serde(flatten)]
|
||||
pub lease_line: DhcpLease,
|
||||
|
||||
@@ -8,7 +8,7 @@ use crate::parse::mac;
|
||||
|
||||
/// One neighbor-table row, typically derived from `ip neigh` or netlink.
|
||||
#[skip_serializing_none]
|
||||
#[derive(Debug, PartialEq, Eq, Clone, Hash, Serialize)]
|
||||
#[derive(Debug, PartialEq, Eq, Clone, Hash, Serialize, Deserialize)]
|
||||
pub struct NeighborEntry {
|
||||
pub ip: IpAddr,
|
||||
pub dev: Option<String>,
|
||||
|
||||
Reference in New Issue
Block a user