"ifconfig -vlandev" syntax

Fredrik Lindberg fli+freebsd-current at shapeshifter.se
Thu Sep 29 09:23:18 PDT 2005

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 at genesis> ./ifconfig vlan0 create
root at genesis> ./ifconfig vlan0 vlan 1 vlandev em0
root at genesis> ./ifconfig vlan0 -vlandev
root at genesis> ./ifconfig vlan0 vlan 1 vlandev em0
root at 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 
         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", 
         DEF_CMD("vlanmtu",      IFCAP_VLAN_MTU,         setifcap),
         DEF_CMD("-vlanmtu",     -IFCAP_VLAN_MTU,        setifcap),
         DEF_CMD("vlanhwtag",    IFCAP_VLAN_HWTAGGING,   setifcap),

More information about the freebsd-current mailing list