Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Sep 2005 03:03:45 +0400
From:      Yar Tikhiy <yar@comp.chem.msu.su>
To:        Fredrik Lindberg <fli+freebsd-current@shapeshifter.se>
Cc:        freebsd-current@freebsd.org
Subject:   Re: "ifconfig -vlandev" syntax
Message-ID:  <20050929230345.GC3035@comp.chem.msu.su>
In-Reply-To: <433C14EE.6010105@shapeshifter.se>
References:  <20050922104104.GA13539@comp.chem.msu.su> <20050925213741.GG15981@odin.ac.hmc.edu> <20050928110413.GE86457@comp.chem.msu.su> <433C14EE.6010105@shapeshifter.se>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Sep 29, 2005 at 06:23:10PM +0200, Fredrik Lindberg wrote:
> Yar Tikhiy wrote:
> >On Sun, Sep 25, 2005 at 02:37:41PM -0700, Brooks Davis wrote:
> >
> >>On Thu, Sep 22, 2005 at 02:41:05PM +0400, Yar Tikhiy wrote:
> >>
> >>>As our ifconfig(8) is growing more options for special interface
> >>>types, inconsistencies sneak into their syntax.  In particular,
> >>>-vlandev takes a useless argument (vlan(4) cannot attach to more
> >>>than one parent anyway) while, e.g., -carpdev doesn't need one.
> >>>Personally, I like the latter since having to type unneeded words
> >>>on the command line annoys me.  Do you think that making -vlandev
> >>>need no arguments in CURRENT would break many existing things?
> >>
> >>I agree the argument is useless.  Unfortunatly, it's going to be hard to
> >>deprecate the old syntax so we may need to keep it around.
> >
> >
> >Alas, there doesn't seem to exist an easy way to support both
> >syntaxes in the ifconfig(8) parameter parser.  Perhaps we can
> >survive the pain of syntax change in CURRENT only, with a
> >heads-up message sent, release notes updated, etc?  I wonder
> >if many people use "ifconfig -vlandev XXX" in automated tools.
> >
> 
> Why not use something simple such as the following (maybe even
> without that printf().
> 
> root@genesis> ./ifconfig vlan0 create
> root@genesis> ./ifconfig vlan0 vlan 1 vlandev em0
> root@genesis> ./ifconfig vlan0 -vlandev
> root@genesis> ./ifconfig vlan0 vlan 1 vlandev em0
> root@genesis> ./ifconfig vlan0 -vlandev em0
> Passing interface to -vlandev is deprecated.
> 
> 
> Index: ifvlan.c
> ===================================================================
> RCS file: /home/ncvs/src/sbin/ifconfig/ifvlan.c,v
> retrieving revision 1.7
> diff -u -r1.7 ifvlan.c
> --- ifvlan.c    31 Dec 2004 19:46:27 -0000      1.7
> +++ ifvlan.c    29 Sep 2005 16:19:32 -0000
> @@ -130,6 +130,9 @@
>  {
>         struct vlanreq          vreq;
> 
> +       if (val != NULL)
> +               fprintf(stderr, "Passing interface to -vlandev is 
> deprecated.\n");
> +
>         bzero((char *)&vreq, sizeof(struct vlanreq));
>         ifr.ifr_data = (caddr_t)&vreq;
> 
> @@ -148,7 +151,7 @@
>  static struct cmd vlan_cmds[] = {
>         DEF_CMD_ARG("vlan",                             setvlantag),
>         DEF_CMD_ARG("vlandev",                          setvlandev),
> -       DEF_CMD_ARG("-vlandev",                         unsetvlandev),
> +       DEF_CMD_OPTARG("-vlandev", 
> unsetvlandev),
>         DEF_CMD("vlanmtu",      IFCAP_VLAN_MTU,         setifcap),
>         DEF_CMD("-vlanmtu",     -IFCAP_VLAN_MTU,        setifcap),
>         DEF_CMD("vlanhwtag",    IFCAP_VLAN_HWTAGGING,   setifcap),

Thank you very much for this suggestion!  I missed DEF_CMD_OPTARG()
completely, perhaps because it didn't seem to be used in ifconfig
*.c files yet.

-- 
Yar



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050929230345.GC3035>