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

Reply via email to