From af97a18b1015e05f9c5d220b3f64be875a2058e3 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Fri, 21 Sep 2018 15:50:47 -0400 Subject: [PATCH] bgpd: Make `struct bgp_addr` a private data structure The `struct bgp_addr` is not needed for anything other than the address hash. Isolate this data structure so that it is not polluting up the name space. Signed-off-by: Donald Sharp --- bgpd/bgp_nexthop.c | 22 ++++++++++++++++++++++ bgpd/bgp_nexthop.h | 7 +------ bgpd/bgp_vty.c | 12 +----------- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/bgpd/bgp_nexthop.c b/bgpd/bgp_nexthop.c index 76bfa73fee..bcada6c584 100644 --- a/bgpd/bgp_nexthop.c +++ b/bgpd/bgp_nexthop.c @@ -169,6 +169,28 @@ void bgp_tip_del(struct bgp *bgp, struct in_addr *tip) } } +/* BGP own address structure */ +struct bgp_addr { + struct in_addr addr; + int refcnt; +}; + +static void show_address_entry(struct hash_backet *backet, void *args) +{ + struct vty *vty = (struct vty *)args; + struct bgp_addr *addr = (struct bgp_addr *)backet->data; + + vty_out(vty, "addr: %s, count: %d\n", inet_ntoa(addr->addr), + addr->refcnt); +} + +void bgp_nexthop_show_address_hash(struct vty *vty, struct bgp *bgp) +{ + hash_iterate(bgp->address_hash, + (void (*)(struct hash_backet *, void *))show_address_entry, + vty); +} + static void *bgp_address_hash_alloc(void *p) { const struct in_addr *val = (const struct in_addr *)p; diff --git a/bgpd/bgp_nexthop.h b/bgpd/bgp_nexthop.h index a771bead23..1cb05bc853 100644 --- a/bgpd/bgp_nexthop.h +++ b/bgpd/bgp_nexthop.h @@ -68,12 +68,6 @@ struct bgp_nexthop_cache { struct bgp *bgp; }; -/* BGP own address structure */ -struct bgp_addr { - struct in_addr addr; - int refcnt; -}; - /* Own tunnel-ip address structure */ struct tip_addr { struct in_addr addr; @@ -103,4 +97,5 @@ extern void bgp_tip_del(struct bgp *bgp, struct in_addr *tip); extern void bgp_tip_hash_init(struct bgp *bgp); extern void bgp_tip_hash_destroy(struct bgp *bgp); +extern void bgp_nexthop_show_address_hash(struct vty *vty, struct bgp *bgp); #endif /* _QUAGGA_BGP_NEXTHOP_H */ diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index e6d44c1a2c..58f23fd2f4 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -7451,14 +7451,6 @@ DEFUN (show_bgp_vrfs, return CMD_SUCCESS; } -static void show_address_entry(struct hash_backet *backet, void *args) -{ - struct vty *vty = (struct vty *)args; - struct bgp_addr *addr = (struct bgp_addr *)backet->data; - - vty_out(vty, "addr: %s, count: %d\n", inet_ntoa(addr->addr), - addr->refcnt); -} static void show_tip_entry(struct hash_backet *backet, void *args) { @@ -7472,9 +7464,7 @@ static void show_tip_entry(struct hash_backet *backet, void *args) static void bgp_show_martian_nexthops(struct vty *vty, struct bgp *bgp) { vty_out(vty, "self nexthop database:\n"); - hash_iterate(bgp->address_hash, - (void (*)(struct hash_backet *, void *))show_address_entry, - vty); + bgp_nexthop_show_address_hash(vty, bgp); vty_out(vty, "Tunnel-ip database:\n"); hash_iterate(bgp->tip_hash, -- 2.39.5