On Thu, Jun 02, 2022 at 11:05:26AM +0200, Claudio Jeker wrote:
> When setting the default routing table for bgpd make sure that
> ktable_exists() does not fail.
> Also improve the warning message in ktable_exists() a bit.

Sure, ok.

The existing checks in parse.y do 'if (ktable_exists(..) != 1)' and the
check in kroute.c uses 'if (!ktable_exists(..))'. Maybe make them all
use the same variant?

> 
> -- 
> :wq Claudio
> 
> Index: kroute.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/kroute.c,v
> retrieving revision 1.246
> diff -u -p -r1.246 kroute.c
> --- kroute.c  23 May 2022 13:40:12 -0000      1.246
> +++ kroute.c  2 Jun 2022 08:59:10 -0000
> @@ -440,7 +440,7 @@ ktable_exists(u_int rtableid, u_int *rdo
>               if (errno == ENOENT)
>                       /* table nonexistent */
>                       return (0);
> -             log_warn("%s: sysctl", __func__);
> +             log_warn("sysctl net.route.rtableid");
>               /* must return 0 so that the table is considered non-existent */
>               return (0);
>       }
> Index: parse.y
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/parse.y,v
> retrieving revision 1.425
> diff -u -p -r1.425 parse.y
> --- parse.y   31 May 2022 09:45:33 -0000      1.425
> +++ parse.y   2 Jun 2022 08:53:43 -0000
> @@ -3496,7 +3496,9 @@ init_config(struct bgpd_config *c)
>       c->bgpid = get_bgpid();
>       c->fib_priority = RTP_BGP;
>       c->default_tableid = getrtable();
> -     ktable_exists(c->default_tableid, &rdomid);
> +     if (!ktable_exists(c->default_tableid, &rdomid))
> +             fatalx("current routing table %u does not exist",
> +                 c->default_tableid);
>       if (rdomid != c->default_tableid)
>               fatalx("current routing table %u is not a routing domain",
>                   c->default_tableid);
> 

Reply via email to