Now that the accounting in bgpctl is fixed we can move some structs from rde.h into rde_prefix.c and hide them from everyone else. Also cleanup the AID_PTSIZE define it is only used in one place now.
-- :wq Claudio Index: bgpd.h =================================================================== RCS file: /cvs/src/usr.sbin/bgpd/bgpd.h,v retrieving revision 1.467 diff -u -p -r1.467 bgpd.h --- bgpd.h 28 Mar 2023 12:15:23 -0000 1.467 +++ bgpd.h 28 Mar 2023 12:17:31 -0000 @@ -184,15 +184,6 @@ extern const struct aid aid_vals[]; { AFI_IPv6, AF_INET6, SAFI_MPLSVPN, "IPv6 vpn" } \ } -#define AID_PTSIZE { \ - 0, \ - sizeof(struct pt_entry4), \ - sizeof(struct pt_entry6), \ - sizeof(struct pt_entry_vpn4), \ - sizeof(struct pt_entry_vpn6) \ -} - - #define BGP_MPLS_BOS 0x01 struct bgpd_addr { Index: rde.h =================================================================== RCS file: /cvs/src/usr.sbin/bgpd/rde.h,v retrieving revision 1.286 diff -u -p -r1.286 rde.h --- rde.h 13 Mar 2023 16:52:42 -0000 1.286 +++ rde.h 28 Mar 2023 12:17:32 -0000 @@ -266,48 +266,7 @@ struct pt_entry { uint8_t aid; uint8_t prefixlen; uint16_t refcnt; -}; - -struct pt_entry4 { - RB_ENTRY(pt_entry) pt_e; - uint8_t aid; - uint8_t prefixlen; - uint16_t refcnt; - struct in_addr prefix4; -}; - -struct pt_entry6 { - RB_ENTRY(pt_entry) pt_e; - uint8_t aid; - uint8_t prefixlen; - uint16_t refcnt; - struct in6_addr prefix6; -}; - -struct pt_entry_vpn4 { - RB_ENTRY(pt_entry) pt_e; - uint8_t aid; - uint8_t prefixlen; - uint16_t refcnt; - struct in_addr prefix4; - uint64_t rd; - uint8_t labelstack[21]; - uint8_t labellen; - uint8_t pad1; - uint8_t pad2; -}; - -struct pt_entry_vpn6 { - RB_ENTRY(pt_entry) pt_e; - uint8_t aid; - uint8_t prefixlen; - uint16_t refcnt; - struct in6_addr prefix6; - uint64_t rd; - uint8_t labelstack[21]; - uint8_t labellen; - uint8_t pad1; - uint8_t pad2; + uint8_t data[4]; /* data depending on aid */ }; struct prefix { Index: rde_prefix.c =================================================================== RCS file: /cvs/src/usr.sbin/bgpd/rde_prefix.c,v retrieving revision 1.43 diff -u -p -r1.43 rde_prefix.c --- rde_prefix.c 28 Mar 2023 12:06:15 -0000 1.43 +++ rde_prefix.c 28 Mar 2023 12:17:32 -0000 @@ -48,7 +48,55 @@ static struct pt_entry *pt_alloc(struct pt_entry *); static void pt_free(struct pt_entry *); -size_t pt_sizes[AID_MAX] = AID_PTSIZE; +struct pt_entry4 { + RB_ENTRY(pt_entry) pt_e; + uint8_t aid; + uint8_t prefixlen; + uint16_t refcnt; + struct in_addr prefix4; +}; + +struct pt_entry6 { + RB_ENTRY(pt_entry) pt_e; + uint8_t aid; + uint8_t prefixlen; + uint16_t refcnt; + struct in6_addr prefix6; +}; + +struct pt_entry_vpn4 { + RB_ENTRY(pt_entry) pt_e; + uint8_t aid; + uint8_t prefixlen; + uint16_t refcnt; + struct in_addr prefix4; + uint64_t rd; + uint8_t labelstack[21]; + uint8_t labellen; + uint8_t pad1; + uint8_t pad2; +}; + +struct pt_entry_vpn6 { + RB_ENTRY(pt_entry) pt_e; + uint8_t aid; + uint8_t prefixlen; + uint16_t refcnt; + struct in6_addr prefix6; + uint64_t rd; + uint8_t labelstack[21]; + uint8_t labellen; + uint8_t pad1; + uint8_t pad2; +}; + +size_t pt_sizes[AID_MAX] = { + 0, + sizeof(struct pt_entry4), + sizeof(struct pt_entry6), + sizeof(struct pt_entry_vpn4), + sizeof(struct pt_entry_vpn6) +}; RB_HEAD(pt_tree, pt_entry); RB_PROTOTYPE(pt_tree, pt_entry, pt_e, pt_prefix_cmp);