For now only OSPF authentication drops... Signed-off-by: Kenth Eriksson <kenth.eriks...@infinera.com> --- proto/ospf/iface.c | 1 + proto/ospf/ospf.h | 6 ++++++ proto/ospf/packet.c | 4 ++++ 3 files changed, 11 insertions(+)
diff --git a/proto/ospf/iface.c b/proto/ospf/iface.c index 6e7e498f..988c0b70 100644 --- a/proto/ospf/iface.c +++ b/proto/ospf/iface.c @@ -1404,4 +1404,5 @@ ospf_iface_info(struct ospf_iface *ifa) cli_msg(-1015, "\tBackup designated router (ID): %R", ifa->bdrid); cli_msg(-1015, "\tBackup designated router (IP): %I", ifa->bdrip); } + cli_msg(-1015, "\tAuthentication drops: %u", ifa->stats.drop_auth); } diff --git a/proto/ospf/ospf.h b/proto/ospf/ospf.h index 8318ee95..e13e4bb2 100644 --- a/proto/ospf/ospf.h +++ b/proto/ospf/ospf.h @@ -273,6 +273,11 @@ struct ospf_area struct fib rtr; /* Routing tables for routers */ }; +struct ospf_iface_stats +{ + u32 drop_auth; /* Drops due to authentication fail */ +}; + struct ospf_iface { node n; @@ -316,6 +321,7 @@ struct ospf_iface u8 instance_id; /* Used to differentiate between more OSPF instances on one interface */ u8 autype; /* Authentication type (OSPF_AUTH_*) */ + struct ospf_iface_stats stats;/* Interface statistics */ u8 type; /* OSPF view of type (OSPF_IT_*) */ u8 strictnbma; /* Can I talk with unknown neighbors? */ u8 stub; /* Inactive interface */ diff --git a/proto/ospf/packet.c b/proto/ospf/packet.c index 599f3094..7c6c328e 100644 --- a/proto/ospf/packet.c +++ b/proto/ospf/packet.c @@ -214,6 +214,7 @@ ospf_pkt_checkauth2(struct ospf_neighbor *n, struct ospf_iface *ifa, struct ospf if (n && (rcv_csn < n->csn)) // DROP("lower sequence number", rcv_csn); { + ifa->stats.drop_auth++; /* We want to report both new and old CSN */ LOG_PKT_AUTH("Authentication failed for nbr %R on %s - " "lower sequence number (rcv %u, old %u)", @@ -245,6 +246,7 @@ ospf_pkt_checkauth2(struct ospf_neighbor *n, struct ospf_iface *ifa, struct ospf } drop: + ifa->stats.drop_auth++; LOG_PKT_AUTH("Authentication failed for nbr %R on %s - %s (%u)", (n ? n->rid : ntohl(pkt->routerid)), ifa->ifname, err_dsc, err_val); @@ -327,6 +329,7 @@ ospf_pkt_checkauth3(struct ospf_neighbor *n, struct ospf_iface *ifa, struct ospf u64 rcv_csn = get_u64(&auth->csn); if (n && (rcv_csn <= n->csn64[pt])) { + ifa->stats.drop_auth++; /* We want to report both new and old CSN */ LOG_PKT_AUTH("Authentication failed for nbr %R on %s - " "lower sequence number (rcv %u, old %u)", @@ -358,6 +361,7 @@ ospf_pkt_checkauth3(struct ospf_neighbor *n, struct ospf_iface *ifa, struct ospf return 1; drop: + ifa->stats.drop_auth++; LOG_PKT_AUTH("Authentication failed for nbr %R on %s - %s (%u)", (n ? n->rid : ntohl(pkt->routerid)), ifa->ifname, err_dsc, err_val); -- 2.21.0