From owner-freebsd-bugs@FreeBSD.ORG Fri Oct 28 22:40:20 2005 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B1FA116A423 for ; Fri, 28 Oct 2005 22:40:20 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 38E5643D49 for ; Fri, 28 Oct 2005 22:40:19 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j9SMeJnh007588 for ; Fri, 28 Oct 2005 22:40:19 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j9SMeIaY007587; Fri, 28 Oct 2005 22:40:19 GMT (envelope-from gnats) Date: Fri, 28 Oct 2005 22:40:19 GMT Message-Id: <200510282240.j9SMeIaY007587@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: Brooks Davis Cc: Subject: Re: bin/88119: [patch] partial matching for ifconfig X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Brooks Davis List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 Oct 2005 22:40:21 -0000 The following reply was made to PR bin/88119; it has been noted by GNATS. From: Brooks Davis To: bw@desync.com Cc: Brooks Davis , freebsd-gnats-submit@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@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 " isn't: lo0: flags=8049 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