]> git.proxmox.com Git - mirror_frr.git/commitdiff
bgpd, lib, zebra: Wrapper get/set of table->info pointer
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 30 Aug 2018 23:11:39 +0000 (19:11 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 24 Sep 2018 00:04:39 +0000 (20:04 -0400)
Wrapper the get/set of the table->info pointer so that
people are not directly accessing this data.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
12 files changed:
bgpd/bgp_table.c
bgpd/bgp_table.h
lib/agg_table.c
lib/agg_table.h
lib/srcdest_table.c
lib/srcdest_table.h
lib/table.h
zebra/rib.h
zebra/zebra_ns.c
zebra/zebra_rib.c
zebra/zebra_vrf.c
zebra/zebra_vty.c

index 234553b6ead27dd8262d00e666f3115b86a62c9e..f7bb6e1054ee81e1121ab677fafd54dce94b20a7 100644 (file)
@@ -101,7 +101,7 @@ struct bgp_table *bgp_table_init(struct bgp *bgp, afi_t afi, safi_t safi)
        /*
         * Set up back pointer to bgp_table.
         */
-       rt->route_table->info = rt;
+       route_table_set_info(rt->route_table, rt);
 
        /*
         * pointer to bgp instance allows working back from bgp_info to bgp
index bec95c71ae567476466c2e4ba56170799ca1ff22..60a26b76cc8d61b6dcfbf90fedd74d703fd1dec0 100644 (file)
@@ -112,7 +112,7 @@ static inline struct route_node *bgp_node_to_rnode(struct bgp_node *node)
  */
 static inline struct bgp_table *bgp_node_table(struct bgp_node *node)
 {
-       return bgp_node_to_rnode(node)->table->info;
+       return route_table_get_info(bgp_node_to_rnode(node)->table);
 }
 
 /*
index 6033fc3f0567af6ca7d63eca820301c541797f04..dad6a13d674a6c445be069d0be6d9cb5b54173dc 100644 (file)
@@ -53,7 +53,7 @@ struct agg_table *agg_table_init(void)
        at = XCALLOC(MTYPE_TMP, sizeof(struct agg_table));
 
        at->route_table = route_table_init_with_delegate(&agg_table_delegate);
-       at->route_table->info = at;
+       route_table_set_info(at->route_table, at);
 
        return at;
 }
index 235f0d37a390ef3417a11aa468c0bb61582fe235..a703969fdb1cf4ef89bc0839fe44647f6203d424 100644 (file)
@@ -148,6 +148,6 @@ static inline struct agg_node *agg_route_table_top(struct agg_node *node)
 
 static inline struct agg_table *agg_get_table(struct agg_node *node)
 {
-       return (struct agg_table *)node->table->info;
+       return (struct agg_table *)route_table_get_info(node->table);
 }
 #endif
index e49735192d13f378d98f2c62ab602cec0642290d..80004b41acaf73c0371c55172570e73696644053 100644 (file)
@@ -103,7 +103,7 @@ static void srcdest_srcnode_destroy(route_table_delegate_t *delegate,
 
        XFREE(MTYPE_ROUTE_SRC_NODE, rn);
 
-       srn = table->info;
+       srn = route_table_get_info(table);
        if (srn->src_table && route_table_count(srn->src_table) == 0) {
                /* deleting the route_table from inside destroy_node is ONLY
                 * permitted IF table->count is 0!  see lib/table.c
@@ -140,7 +140,7 @@ static struct route_node *srcdest_srcnode_get(struct route_node *rn,
                 * here */
                srn->src_table = route_table_init_with_delegate(
                        &_srcdest_srcnode_delegate);
-               srn->src_table->info = srn;
+               route_table_set_info(srn->src_table, srn);
 
                /* there is no route_unlock_node on the original rn here.
                 * The reference is kept for the src_table. */
@@ -220,7 +220,7 @@ struct route_node *srcdest_route_next(struct route_node *rn)
        }
 
        /* This part handles the case of iterating source nodes. */
-       parent = route_lock_node(rn->table->info);
+       parent = route_lock_node(route_table_get_info(rn->table));
        next = route_next(rn);
 
        if (next) {
@@ -268,7 +268,7 @@ void srcdest_rnode_prefixes(struct route_node *rn, const struct prefix **p,
                            const struct prefix **src_p)
 {
        if (rnode_is_srcnode(rn)) {
-               struct route_node *dst_rn = rn->table->info;
+               struct route_node *dst_rn = route_table_get_info(rn->table);
                if (p)
                        *p = &dst_rn->p;
                if (src_p)
index 9ceb876f81b81bba96a85b8133d6ccd0d7da1c31..54acb51b03543b65f77bc6ea61c022d872cfcada 100644 (file)
@@ -84,7 +84,7 @@ static inline int rnode_is_srcnode(struct route_node *rn)
 static inline struct route_table *srcdest_rnode_table(struct route_node *rn)
 {
        if (rnode_is_srcnode(rn)) {
-               struct route_node *dst_rn = rn->table->info;
+               struct route_node *dst_rn = route_table_get_info(rn->table);
                return dst_rn->table;
        } else {
                return rn->table;
@@ -92,7 +92,7 @@ static inline struct route_table *srcdest_rnode_table(struct route_node *rn)
 }
 static inline void *srcdest_rnode_table_info(struct route_node *rn)
 {
-       return srcdest_rnode_table(rn)->info;
+       return route_table_get_info(srcdest_rnode_table(rn));
 }
 
 #endif /* _ZEBRA_SRC_DEST_TABLE_H */
index 711ace111ec15a39d9ee9d611908f3718bc665f4..541d74d77bff9f1c3b32d000acc4dfa6ad43bdd1 100644 (file)
@@ -179,6 +179,16 @@ route_table_init_with_delegate(route_table_delegate_t *delegate);
 
 extern route_table_delegate_t *route_table_get_default_delegate(void);
 
+static inline void *route_table_get_info(struct route_table *table)
+{
+       return table->info;
+}
+
+static inline void route_table_set_info(struct route_table *table, void *d)
+{
+       table->info = d;
+}
+
 extern void route_table_finish(struct route_table *table);
 extern struct route_node *route_top(struct route_table *table);
 extern struct route_node *route_next(struct route_node *node);
index f821c6edb4cfa0377d0202437d78aa08d6e6584d..f3aead32d804422f9591f31914ce9f283b5eabec 100644 (file)
@@ -355,7 +355,7 @@ extern uint8_t route_distance(int type);
  */
 static inline rib_table_info_t *rib_table_info(struct route_table *table)
 {
-       return (rib_table_info_t *)table->info;
+       return (rib_table_info_t *)route_table_get_info(table);
 }
 
 /*
index c5e88daf791900e7f74659d3ca14980bf4d6d1f3..e251b26be157f85d6d68cfd4d445db7455864b81 100644 (file)
@@ -249,7 +249,7 @@ struct route_table *zebra_ns_get_table(struct zebra_ns *zns,
        info->zvrf = zvrf;
        info->afi = afi;
        info->safi = SAFI_UNICAST;
-       znst->table->info = info;
+       route_table_set_info(znst->table, info);
        znst->table->cleanup = zebra_rtable_node_cleanup;
 
        RB_INSERT(zebra_ns_table_head, &zns->ns_tables, znst);
@@ -262,7 +262,7 @@ static void zebra_ns_free_table(struct zebra_ns_table *znst)
 
        rib_close_table(znst->table);
 
-       table_info = znst->table->info;
+       table_info = route_table_get_info(znst->table);
        route_table_finish(znst->table);
        XFREE(MTYPE_RIB_TABLE_INFO, table_info);
        XFREE(MTYPE_ZEBRA_NS, znst);
index 5853bdd4658737f2b38172a590d28c7cf9601c05..bb79f96327b48b93ed4d6a9182258b328a80afdb 100644 (file)
@@ -2955,7 +2955,7 @@ void rib_close_table(struct route_table *table)
        if (!table)
                return;
 
-       info = table->info;
+       info = route_table_get_info(table);
 
        for (rn = route_top(table); rn; rn = srcdest_route_next(rn)) {
                dest = rib_dest_from_rnode(rn);
index be8f879246b8ae3be58f405cbeee2d44bbd2c41a..9a0ebbaba78686c6f67685fbbcca9c7b9df661a9 100644 (file)
@@ -205,7 +205,7 @@ static int zebra_vrf_disable(struct vrf *vrf)
 
                for (safi = SAFI_UNICAST; safi <= SAFI_MULTICAST; safi++) {
                        table = zvrf->table[afi][safi];
-                       table_info = table->info;
+                       table_info = route_table_get_info(table);
                        route_table_finish(table);
                        XFREE(MTYPE_RIB_TABLE_INFO, table_info);
                        zvrf->table[afi][safi] = NULL;
@@ -261,7 +261,7 @@ static int zebra_vrf_delete(struct vrf *vrf)
                for (safi = SAFI_UNICAST; safi <= SAFI_MULTICAST; safi++) {
                        table = zvrf->table[afi][safi];
                        if (table) {
-                               table_info = table->info;
+                               table_info = route_table_get_info(table);
                                route_table_finish(table);
                                XFREE(MTYPE_RIB_TABLE_INFO, table_info);
                        }
@@ -384,7 +384,7 @@ static void zebra_vrf_table_create(struct zebra_vrf *zvrf, afi_t afi,
        info->zvrf = zvrf;
        info->afi = afi;
        info->safi = safi;
-       table->info = info;
+       route_table_set_info(table, info);
 }
 
 /* Allocate new zebra VRF. */
index de08e323af115b61de3b345260be056775f8e7d2..86792fdd899de7ad03e4e240aad6fcda0c185863 100644 (file)
@@ -1358,7 +1358,7 @@ static void vty_show_ip_route_summary(struct vty *vty,
                }
 
        vty_out(vty, "%-20s %-20s %s  (vrf %s)\n", "Route Source", "Routes",
-               "FIB", zvrf_name(((rib_table_info_t *)table->info)->zvrf));
+               "FIB", zvrf_name(((rib_table_info_t *)route_table_get_info(table))->zvrf));
 
        for (i = 0; i < ZEBRA_ROUTE_MAX; i++) {
                if ((rib_cnt[i] > 0) || (i == ZEBRA_ROUTE_BGP
@@ -1434,7 +1434,7 @@ static void vty_show_ip_route_summary_prefix(struct vty *vty,
 
        vty_out(vty, "%-20s %-20s %s  (vrf %s)\n", "Route Source",
                "Prefix Routes", "FIB",
-               zvrf_name(((rib_table_info_t *)table->info)->zvrf));
+               zvrf_name(((rib_table_info_t *)route_table_get_info(table))->zvrf));
 
        for (i = 0; i < ZEBRA_ROUTE_MAX; i++) {
                if (rib_cnt[i] > 0) {