On Tue, Aug 23, 2022 at 11:06:05AM +0200, Claudio Jeker wrote:
> The RDE does some magic dance around connected networks and their gateway
> which should be done in kroute.c instead. At least then both functions doing
> gateway lookups do this magic in the same .c file.
> It also makes the RDE code a simpler which is good. The RDE actually no
> longer uses this information apart from reporting it to bgpctl.

ok tb

> 
> -- 
> :wq Claudio
> 
> Index: kroute.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/kroute.c,v
> retrieving revision 1.295
> diff -u -p -r1.295 kroute.c
> --- kroute.c  19 Aug 2022 09:11:18 -0000      1.295
> +++ kroute.c  23 Aug 2022 09:01:26 -0000
> @@ -2265,11 +2265,11 @@ knexthop_send_update(struct knexthop *kn
>               kr = kn->kroute;
>               n.valid = kroute_validate(kr);
>               n.connected = kr->flags & F_CONNECTED;
> -             if (kr->nexthop.s_addr != 0) {
> +             if (!n.connected) {
>                       n.gateway.aid = AID_INET;
>                       n.gateway.v4.s_addr = kr->nexthop.s_addr;
> -             }
> -             if (n.connected) {
> +             } else {
> +                     n.gateway = n.nexthop;
>                       n.net.aid = AID_INET;
>                       n.net.v4.s_addr = kr->prefix.s_addr;
>                       n.netlen = kr->prefixlen;
> @@ -2279,13 +2279,12 @@ knexthop_send_update(struct knexthop *kn
>               kr6 = kn->kroute;
>               n.valid = kroute6_validate(kr6);
>               n.connected = kr6->flags & F_CONNECTED;
> -             if (memcmp(&kr6->nexthop, &in6addr_any,
> -                 sizeof(struct in6_addr)) != 0) {
> +             if (!n.connected) {
>                       n.gateway.aid = AID_INET6;
>                       n.gateway.v6 = kr6->nexthop;
>                       n.gateway.scope_id = kr6->nexthop_scope_id;
> -             }
> -             if (n.connected) {
> +             } else {
> +                     n.gateway = n.nexthop;
>                       n.net.aid = AID_INET6;
>                       n.net.v6 = kr6->prefix;
>                       n.net.scope_id = kr6->prefix_scope_id;
> Index: rde_rib.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/rde_rib.c,v
> retrieving revision 1.243
> diff -u -p -r1.243 rde_rib.c
> --- rde_rib.c 10 Aug 2022 14:17:01 -0000      1.243
> +++ rde_rib.c 23 Aug 2022 09:01:26 -0000
> @@ -1739,12 +1739,10 @@ nexthop_update(struct kroute_nexthop *ms
>               TAILQ_REMOVE(&nexthop_runners, nh, runner_l);
>       }
>  
> -     if (msg->connected) {
> +     if (msg->connected)
>               nh->flags |= NEXTHOP_CONNECTED;
> -             nh->true_nexthop = nh->exit_nexthop;
> -     } else
> -             nh->true_nexthop = msg->gateway;
>  
> +     nh->true_nexthop = msg->gateway;
>       nh->nexthop_net = msg->net;
>       nh->nexthop_netlen = msg->netlen;
>  
> 

Reply via email to