bin/88119: [patch] partial matching for ifconfig
Brooks Davis
brooks at one-eyed-alien.net
Fri Oct 28 15:40:21 PDT 2005
The following reply was made to PR bin/88119; it has been noted by GNATS.
From: Brooks Davis <brooks at one-eyed-alien.net>
To: bw at desync.com
Cc: Brooks Davis <brooks at one-eyed-alien.net>, freebsd-gnats-submit at freebsd.org
Subject: Re: bin/88119: [patch] partial matching for ifconfig
Date: Fri, 28 Oct 2005 15:32:02 -0700
On Fri, Oct 28, 2005 at 05:42:58PM -0400, bw at desync.com wrote:
> Comments inline.
>
> On Fri, Oct 28, 2005 at 11:39:57AM -0700, Brooks Davis wrote:
> > Nice idea. I'm not convinved of the implementation though. First, the
> > isdigit() check is bogus because of interface renaming. You might well
> > want to match all the wan interfaces on a system with a naming scheme
> > like lax-wan, sfo-wan, sea-wan.
>
> That's true. This functionality might be less useful if your interface
> naming scheme doesn't have some sort of sensible prefix.
>
> The isdigit() call wasn't well thought out with regard to interface
> renaming. I have revised the patch to match partially only if
> the interface specified doesn't exist.
>
> http://desync.com/~bw/ifconfig.partialmatch.revised.diff
The manpage entry is problematic in that "match" is poorly defined.
Also, "if (ifindex == 0)" should probably be "if (ifindex == 0 && argc
== 0)" so the result of "ifconfig l <stuff>" isn't:
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet 127.0.0.1 netmask 0xff000000
> > Second, this turns something that was previously an error
> > into something that works which may be confusing. My suggestion would
> > be to implement a new flag, probably -e, which implements egrep style
> > matching using regex(3) (usr.bin/pkill looks like a good example.) This
> > would be both more powerful and avoid the whole issue of POLA
> > violations.
>
> This is a very simple modification, intended to add convenience for those
> of us that use FreeBSD with lots of interfaces. I don't think the
> addition of a flag or regex matching adds convenience.
Thinking about it more I find this to be a significant POLA violation.
It means you can no longer reliably test for interface existence with:
if ifconfig $ifn > /dev/null 2>&1; then
...
As such I believe a new flag is required. If you used strstr to
implement grep-like semantics, -g would be appropriate. I'm not sure
what flag would be best for prefix matching. IMO, -e with egrep regexps
would be best. Ideally, -l would be enhanced to support this filtering
as well.
-- Brooks
More information about the freebsd-bugs
mailing list