From 1498c0593a75a6beabafbb8ed2b19a9c11bee250 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Tue, 17 Jan 2017 22:01:36 -0500 Subject: [PATCH] zebra: Allow the collection of sg stats on more platforms. The code to collect the sg stats was written for linux. Abstract the call to allow it to work on all platforms. I have not implemented the call for non-linux systems. Signed-off-by: Donald Sharp --- zebra/kernel_null.c | 2 ++ zebra/rt.h | 1 + zebra/rt_netlink.c | 2 +- zebra/rt_netlink.h | 1 - zebra/rt_socket.c | 6 ++++++ zebra/zebra_mroute.c | 4 ++-- 6 files changed, 12 insertions(+), 4 deletions(-) diff --git a/zebra/kernel_null.c b/zebra/kernel_null.c index a20597882c..896ca96b48 100644 --- a/zebra/kernel_null.c +++ b/zebra/kernel_null.c @@ -60,3 +60,5 @@ int kernel_neigh_update (int a, int b, uint32_t c, char *d, int e) void kernel_init (struct zebra_ns *zns) { return; } void kernel_terminate (struct zebra_ns *zns) { return; } void route_read (struct zebra_ns *zns) { return; } + +int kernel_get_ipmr_sg_stats (void *m) { return 0; } diff --git a/zebra/rt.h b/zebra/rt.h index e56e3b8fe3..40beb6a45f 100644 --- a/zebra/rt.h +++ b/zebra/rt.h @@ -40,4 +40,5 @@ extern int kernel_upd_lsp (zebra_lsp_t *); extern int kernel_del_lsp (zebra_lsp_t *); extern int mpls_kernel_init (void); +extern int kernel_get_ipmr_sg_stats (void *mroute); #endif /* _ZEBRA_RT_H */ diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index 2dfe43f5df..d2781f4c4e 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -1526,7 +1526,7 @@ skip: } int -netlink_get_ipmr_sg_stats (void *in) +kernel_get_ipmr_sg_stats (void *in) { int suc = 0; struct mcast_route_data *mr = (struct mcast_route_data *)in; diff --git a/zebra/rt_netlink.h b/zebra/rt_netlink.h index 6774b7dd3d..7183525fba 100644 --- a/zebra/rt_netlink.h +++ b/zebra/rt_netlink.h @@ -37,7 +37,6 @@ extern int netlink_route_change (struct sockaddr_nl *snl, struct nlmsghdr *h, ns_id_t ns_id); extern int netlink_route_read (struct zebra_ns *zns); -extern int netlink_get_ipmr_sg_stats (void *mroute); #endif /* HAVE_NETLINK */ #endif /* _ZEBRA_RT_NETLINK_H */ diff --git a/zebra/rt_socket.c b/zebra/rt_socket.c index b2c99d9813..404bdef57d 100644 --- a/zebra/rt_socket.c +++ b/zebra/rt_socket.c @@ -416,3 +416,9 @@ kernel_neigh_update (int add, int ifindex, uint32_t addr, char *lla, int llalen) /* TODO */ return 0; } + +extern void +kernel_get_ipmr_sg_stats (void *mroute) +{ + return; +} diff --git a/zebra/zebra_mroute.c b/zebra/zebra_mroute.c index d05c906704..86356104bd 100644 --- a/zebra/zebra_mroute.c +++ b/zebra/zebra_mroute.c @@ -30,7 +30,7 @@ #include "zebra/zserv.h" #include "zebra/zebra_vrf.h" #include "zebra/zebra_mroute.h" -#include "zebra/rt_netlink.h" +#include "zebra/rt.h" int zebra_ipmr_route_stats (struct zserv *client, int fd, u_short length, struct zebra_vrf *zvrf) @@ -50,7 +50,7 @@ zebra_ipmr_route_stats (struct zserv *client, int fd, u_short length, struct zeb strcpy (sbuf, inet_ntoa (mroute.sg.src)); strcpy (gbuf, inet_ntoa (mroute.sg.grp)); - suc = netlink_get_ipmr_sg_stats (&mroute); + suc = kernel_get_ipmr_sg_stats (&mroute); s = client->obuf;