]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: Remove re->nexthop_num from re
authorDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 15 Feb 2019 16:16:22 +0000 (11:16 -0500)
committerStephen Worley <sworley@cumulusnetworks.com>
Fri, 25 Oct 2019 15:13:36 +0000 (11:13 -0400)
The nexthop_num is not a function of the re.  It is owned
by the nexthop group.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
zebra/redistribute.c
zebra/rib.h
zebra/rt_netlink.c
zebra/zebra_rib.c
zebra/zebra_rnh.c

index 65b62679e8b9f472d68c1eee529be665aae3e203..42f8c812b44d514cc7c705d436477b4365d319a8 100644 (file)
@@ -676,7 +676,6 @@ int zebra_add_import_table_entry(struct zebra_vrf *zvrf, struct route_node *rn,
        newre->metric = re->metric;
        newre->mtu = re->mtu;
        newre->table = zvrf->table_id;
-       newre->nexthop_num = 0;
        newre->uptime = monotime(NULL);
        newre->instance = re->table;
        newre->ng = nexthop_group_new();
index 455003c930f8f58529f2627f5a3d90da07a5aff5..4bef6e05439549a4f70ec029df0b1001dfcfe162 100644 (file)
@@ -136,7 +136,6 @@ struct route_entry {
 #define ROUTE_ENTRY_FAILED           0x20
 
        /* Nexthop information. */
-       uint8_t nexthop_num;
        uint8_t nexthop_active_num;
 
        /* Sequence value incremented for each dataplane operation */
index 9bc919463ba588b5a5453d3470820817a75709d8..b36fbb2008107112e271adcee67413c8807acb3b 100644 (file)
@@ -609,7 +609,7 @@ static int netlink_route_change_read_unicast(struct nlmsghdr *h, ns_id_t ns_id,
                                &src_p, &nh, table, metric, mtu, distance, tag);
                } else {
                        /* This is a multipath route */
-
+                       uint8_t nhop_num;
                        struct route_entry *re;
                        struct rtnexthop *rtnh =
                                (struct rtnexthop *)RTA_DATA(tb[RTA_MULTIPATH]);
@@ -624,7 +624,6 @@ static int netlink_route_change_read_unicast(struct nlmsghdr *h, ns_id_t ns_id,
                        re->mtu = mtu;
                        re->vrf_id = vrf_id;
                        re->table = table;
-                       re->nexthop_num = 0;
                        re->uptime = monotime(NULL);
                        re->tag = tag;
                        re->ng = nexthop_group_new();
@@ -720,10 +719,10 @@ static int netlink_route_change_read_unicast(struct nlmsghdr *h, ns_id_t ns_id,
                                rtnh = RTNH_NEXT(rtnh);
                        }
 
-                       zserv_nexthop_num_warn(__func__,
-                                              (const struct prefix *)&p,
-                                              re->nexthop_num);
-                       if (re->nexthop_num == 0) {
+                       nhop_num = nexthop_group_nexthop_num(re->ng);
+                       zserv_nexthop_num_warn(
+                               __func__, (const struct prefix *)&p, nhop_num);
+                       if (nhop_num == 0) {
                                nexthop_group_delete(&re->ng);
                                XFREE(MTYPE_RE, re);
                        } else
index c8ba3f9e9dbef1cbe153a9199b3a46483a8c413b..c56c953618cbd791b86b7efa414df000a78f2771 100644 (file)
@@ -197,7 +197,6 @@ int zebra_check_addr(const struct prefix *p)
 void route_entry_nexthop_add(struct route_entry *re, struct nexthop *nexthop)
 {
        _nexthop_group_add_sorted(re->ng, nexthop);
-       re->nexthop_num++;
 }
 
 
@@ -208,8 +207,6 @@ void route_entry_copy_nexthops(struct route_entry *re, struct nexthop *nh)
 {
        assert(!re->ng->nexthop);
        copy_nexthops(&re->ng->nexthop, nh, NULL);
-       for (struct nexthop *nexthop = nh; nexthop; nexthop = nexthop->next)
-               re->nexthop_num++;
 }
 
 /* Delete specified nexthop from the list. */
@@ -221,7 +218,6 @@ void route_entry_nexthop_delete(struct route_entry *re, struct nexthop *nexthop)
                nexthop->prev->next = nexthop->next;
        else
                re->ng->nexthop = nexthop->next;
-       re->nexthop_num--;
 }
 
 
@@ -2485,7 +2481,7 @@ void _route_entry_dump(const char *func, union prefixconstptr pp,
                "%s: metric == %u, mtu == %u, distance == %u, flags == %u, status == %u",
                straddr, re->metric, re->mtu, re->distance, re->flags, re->status);
        zlog_debug("%s: nexthop_num == %u, nexthop_active_num == %u", straddr,
-                  re->nexthop_num, re->nexthop_active_num);
+                  nexthop_group_nexthop_num(re->ng), re->nexthop_active_num);
 
        for (ALL_NEXTHOPS_PTR(re->ng, nexthop)) {
                struct interface *ifp;
@@ -2959,7 +2955,6 @@ int rib_add(afi_t afi, safi_t safi, vrf_id_t vrf_id, int type,
        re->mtu = mtu;
        re->table = table_id;
        re->vrf_id = vrf_id;
-       re->nexthop_num = 0;
        re->uptime = monotime(NULL);
        re->tag = tag;
        re->ng = nexthop_group_new();
index 1494e3bed39be2adb5433b0ed7fbf1e1c131f07c..af3c1b818f2ff3518f90ad0cfe4f8d577771e458 100644 (file)
@@ -984,7 +984,8 @@ static int compare_state(struct route_entry *r1, struct route_entry *r2)
        if (r1->metric != r2->metric)
                return 1;
 
-       if (r1->nexthop_num != r2->nexthop_num)
+       if (nexthop_group_nexthop_num(r1->ng)
+           != nexthop_group_nexthop_num(r2->ng))
                return 1;
 
        if (nexthop_group_hash(r1->ng) != nexthop_group_hash(r2->ng))