ok
Florian Obser([email protected]) on 2018.04.29 22:04:47 +0200:
>
> tableid is either initialized to the current routing table or to the
> one specified by the T flag. No need to pass a flag around if the
> tableid is valid. It always is.
>
> This code is now in sync between flushroutes() and p_rttables().
>
> OK?
>
> diff --git route.c route.c
> index 229cca1491d..5e1aacd83e2 100644
> --- route.c
> +++ route.c
> @@ -750,7 +750,7 @@ show(int argc, char *argv[])
> usage(*argv);
> }
>
> - p_rttables(af, tableid, Tflag, prio);
> + p_rttables(af, tableid, prio);
> return (0);
> }
>
> diff --git show.c show.c
> index bfd726e6a20..f67b45b359f 100644
> --- show.c
> +++ show.c
> @@ -111,12 +111,12 @@ char *netname6(struct sockaddr_in6 *, struct
> sockaddr_in6 *);
> * Print routing tables.
> */
> void
> -p_rttables(int af, u_int tableid, int hastable, char prio)
> +p_rttables(int af, u_int tableid, char prio)
> {
> struct rt_msghdr *rtm;
> char *buf = NULL, *next, *lim = NULL;
> size_t needed;
> - int mib[7], mcnt;
> + int mib[7];
> struct sockaddr *sa;
>
> mib[0] = CTL_NET;
> @@ -125,20 +125,16 @@ p_rttables(int af, u_int tableid, int hastable, char
> prio)
> mib[3] = af;
> mib[4] = NET_RT_DUMP;
> mib[5] = prio;
> - if (hastable) {
> - mib[6] = tableid;
> - mcnt = 7;
> - } else
> - mcnt = 6;
> + mib[6] = tableid;
>
> while (1) {
> - if (sysctl(mib, mcnt, NULL, &needed, NULL, 0) == -1)
> + if (sysctl(mib, 7, NULL, &needed, NULL, 0) == -1)
> err(1, "route-sysctl-estimate");
> if (needed == 0)
> break;
> if ((buf = realloc(buf, needed)) == NULL)
> err(1, NULL);
> - if (sysctl(mib, mcnt, buf, &needed, NULL, 0) == -1) {
> + if (sysctl(mib, 7, buf, &needed, NULL, 0) == -1) {
> if (errno == ENOMEM)
> continue;
> err(1, "sysctl of routing table");
> diff --git show.h show.h
> index 14c8b0e9c11..0a06fd8edf6 100644
> --- show.h
> +++ show.h
> @@ -29,7 +29,7 @@ union sockunion {
> };
>
> void get_rtaddrs(int, struct sockaddr *, struct sockaddr **);
> -void p_rttables(int, u_int, int, char);
> +void p_rttables(int, u_int, char);
> void p_sockaddr(struct sockaddr *, struct sockaddr *, int, int);
> char *routename(struct sockaddr *);
> char *netname(struct sockaddr *, struct sockaddr *);
>
> --
> I'm not entirely sure you are real.
>