This diff simply changes all the nexthop accesses from asp->nexthop to
calling prefix_nexthop() which currently does the same. This will ease
moving the nexthop into struct prefix and is part of a larger diff that
does exactly that.

OK?
-- 
:wq Claudio

Index: mrt.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/mrt.c,v
retrieving revision 1.85
diff -u -p -r1.85 mrt.c
--- mrt.c       17 Jul 2018 07:02:11 -0000      1.85
+++ mrt.c       24 Jul 2018 08:19:35 -0000
@@ -310,7 +310,7 @@ mrt_dump_entry_mp(struct mrt *mrt, struc
 
        pt_getaddr(p->re->prefix, &addr);
 
-       n = prefix_aspath(p)->nexthop;
+       n = prefix_nexthop(p);
        if (n == NULL) {
                bzero(&nexthop, sizeof(struct bgpd_addr));
                nexthop.aid = addr.aid;
@@ -385,7 +385,7 @@ mrt_dump_entry(struct mrt *mrt, struct p
                return (-1);
        }
 
-       nexthop = prefix_aspath(p)->nexthop;
+       nexthop = prefix_nexthop(p);
        if (nexthop == NULL) {
                bzero(&addr, sizeof(struct bgpd_addr));
                addr.aid = p->re->prefix->aid;
@@ -501,7 +501,7 @@ mrt_dump_entry_v2(struct mrt *mrt, struc
                struct bgpd_addr        *nh;
                struct ibuf             *tbuf;
 
-               nexthop = prefix_aspath(p)->nexthop;
+               nexthop = prefix_nexthop(p);
                if (nexthop == NULL) {
                        bzero(&addr, sizeof(struct bgpd_addr));
                        addr.aid = re->prefix->aid;
Index: rde.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v
retrieving revision 1.399
diff -u -p -r1.399 rde.c
--- rde.c       22 Jul 2018 16:59:08 -0000      1.399
+++ rde.c       24 Jul 2018 08:19:35 -0000
@@ -2028,10 +2028,10 @@ rde_dump_rib_as(struct prefix *p, struct
        memcpy(&rib.remote_addr, &prefix_peer(p)->remote_addr,
            sizeof(rib.remote_addr));
        rib.remote_id = prefix_peer(p)->remote_bgpid;
-       if (asp->nexthop != NULL) {
-               memcpy(&rib.true_nexthop, &asp->nexthop->true_nexthop,
+       if (prefix_nexthop(p) != NULL) {
+               memcpy(&rib.true_nexthop, &prefix_nexthop(p)->true_nexthop,
                    sizeof(rib.true_nexthop));
-               memcpy(&rib.exit_nexthop, &asp->nexthop->exit_nexthop,
+               memcpy(&rib.exit_nexthop, &prefix_nexthop(p)->exit_nexthop,
                    sizeof(rib.exit_nexthop));
        } else {
                /* announced network may have a NULL nexthop */
@@ -2050,7 +2050,8 @@ rde_dump_rib_as(struct prefix *p, struct
                rib.flags |= F_PREF_INTERNAL;
        if (asp->flags & F_PREFIX_ANNOUNCED)
                rib.flags |= F_PREF_ANNOUNCE;
-       if (asp->nexthop == NULL || asp->nexthop->state == NEXTHOP_REACH)
+       if (prefix_nexthop(p) == NULL ||
+           prefix_nexthop(p)->state == NEXTHOP_REACH)
                rib.flags |= F_PREF_ELIGIBLE;
        if (asp->flags & F_ATTR_LOOP)
                rib.flags &= ~F_PREF_ELIGIBLE;
@@ -2425,7 +2426,7 @@ rde_send_kroute(struct rib *rib, struct 
        if (asp->flags & F_NEXTHOP_BLACKHOLE)
                kr.flags |= F_BLACKHOLE;
        if (type == IMSG_KROUTE_CHANGE)
-               memcpy(&kr.nexthop, &asp->nexthop->true_nexthop,
+               memcpy(&kr.nexthop, &prefix_nexthop(p)->true_nexthop,
                    sizeof(kr.nexthop));
        strlcpy(kr.label, rtlabel_id2name(asp->rtlabelid), sizeof(kr.label));
 
@@ -2442,7 +2443,8 @@ rde_send_kroute(struct rib *rib, struct 
                         * is chosen
                         */
                        if (type == IMSG_KROUTE_CHANGE)
-                               memcpy(&kr.nexthop, &asp->nexthop->exit_nexthop,
+                               memcpy(&kr.nexthop,
+                                   &prefix_nexthop(p)->exit_nexthop,
                                    sizeof(kr.nexthop));
                        if (imsg_compose(ibuf_main, type, rd->rtableid, 0, -1,
                            &kr, sizeof(kr)) == -1)
@@ -3495,11 +3497,11 @@ network_dump_upcall(struct rib_entry *re
 
                bzero(&k, sizeof(k));
                memcpy(&k.prefix, &addr, sizeof(k.prefix));
-               if (asp->nexthop == NULL ||
-                   asp->nexthop->state != NEXTHOP_REACH)
+               if (prefix_nexthop(p) == NULL ||
+                   prefix_nexthop(p)->state != NEXTHOP_REACH)
                        k.nexthop.aid = k.prefix.aid;
                else
-                       memcpy(&k.nexthop, &asp->nexthop->true_nexthop,
+                       memcpy(&k.nexthop, &prefix_nexthop(p)->true_nexthop,
                            sizeof(k.nexthop));
                k.prefixlen = p->re->prefix->prefixlen;
                k.flags = F_KERNEL;
Index: rde_decide.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/rde_decide.c,v
retrieving revision 1.68
diff -u -p -r1.68 rde_decide.c
--- rde_decide.c        21 Jun 2018 17:26:16 -0000      1.68
+++ rde_decide.c        24 Jul 2018 08:19:35 -0000
@@ -136,9 +136,11 @@ prefix_cmp(struct prefix *p1, struct pre
                return (1);
 
        /* 1. check if prefix is eligible a.k.a reachable */
-       if (asp2->nexthop != NULL && asp2->nexthop->state != NEXTHOP_REACH)
+       if (prefix_nexthop(p2) != NULL &&
+           prefix_nexthop(p2)->state != NEXTHOP_REACH)
                return (1);
-       if (asp1->nexthop != NULL && asp1->nexthop->state != NEXTHOP_REACH)
+       if (prefix_nexthop(p1) != NULL &&
+           prefix_nexthop(p1)->state != NEXTHOP_REACH)
                return (-1);
 
        /* 2. local preference of prefix, bigger is better */
@@ -274,8 +276,8 @@ prefix_evaluate(struct prefix *p, struct
        if (xp != NULL) {
                struct rde_aspath *xasp = prefix_aspath(xp);
                if (xasp->flags & (F_ATTR_LOOP|F_ATTR_PARSE_ERR) ||
-                   (xasp->nexthop != NULL &&
-                   xasp->nexthop->state != NEXTHOP_REACH))
+                   (prefix_nexthop(xp) != NULL &&
+                   prefix_nexthop(xp)->state != NEXTHOP_REACH))
                        /* xp is ineligible */
                        xp = NULL;
        }

Reply via email to