On Tue, May 01, 2018 at 11:53:16AM +0200, Sebastian Benoit wrote:
> Florian Obser([email protected]) on 2018.04.30 18:27:52 +0200:
> > The -d flag should be a no-op in monitor mode since it does not modify
> > the routing table.
> >
> > However, if -d is provided route monitor lists all interfaces and
> > their associated addresses and exits. This is confusing, unexpected
> > and no longer needed (if ever).
> >
> > Make -d a proper no-op for route monitor and get rid of the interfaces
> > function which didn't use the correct sysctl idiom anyway.
> >
> > OK?
>
> if nobody complains about loosing that "feature", ok benno@
>
I didn't know about it but I could have used this from time to time.
Still it feels overloading the debug flag with that is not the right way.
It is useful since this is what getifaddrs(3) uses in the background.
> > diff --git route.c route.c
> > index 85e76621dd3..738de3a8cde 100644
> > --- route.c
> > +++ route.c
> > @@ -115,7 +115,6 @@ int rtmsg(int, int, int, uint8_t);
> > __dead void usage(char *);
> > void set_metric(char *, int);
> > void inet_makenetandmask(u_int32_t, struct sockaddr_in *, int);
> > -void interfaces(void);
> > void getlabel(char *);
> > int gettable(const char *);
> > int rdomain(int, char **);
> > @@ -1069,36 +1068,6 @@ prefixlen(int af, char *s)
> > return (len == max);
> > }
> >
> > -void
> > -interfaces(void)
> > -{
> > - size_t needed;
> > - int mib[6];
> > - char *buf = NULL, *lim, *next;
> > - struct rt_msghdr *rtm;
> > -
> > - mib[0] = CTL_NET;
> > - mib[1] = PF_ROUTE;
> > - mib[2] = 0; /* protocol */
> > - mib[3] = 0; /* wildcard address family */
> > - mib[4] = NET_RT_IFLIST;
> > - mib[5] = 0; /* no flags */
> > - if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0)
> > - err(1, "route-sysctl-estimate");
> > - if (needed) {
> > - if ((buf = malloc(needed)) == NULL)
> > - err(1, "malloc");
> > - if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0)
> > - err(1, "actual retrieval of interface table");
> > - lim = buf + needed;
> > - for (next = buf; next < lim; next += rtm->rtm_msglen) {
> > - rtm = (struct rt_msghdr *)next;
> > - print_rtmsg(rtm, rtm->rtm_msglen);
> > - }
> > - free(buf);
> > - }
> > -}
> > -
> > void
> > monitor(int argc, char *argv[])
> > {
> > @@ -1107,10 +1076,6 @@ monitor(int argc, char *argv[])
> > time_t now;
> >
> > verbose = 1;
> > - if (debugonly) {
> > - interfaces();
> > - exit(0);
> > - }
> > for (;;) {
> > if ((n = read(s, msg, sizeof(msg))) == -1) {
> > if (errno == EINTR)
> >
> > --
> > I'm not entirely sure you are real.
> >
>
--
:wq Claudio