Claudio Jeker([email protected]) on 2018.07.24 10:22:40 +0200:
> 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?

read ok benno@

> -- 
> :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