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);