> On 5 Jun 2017, at 17:05, Reyk Floeter <r...@openbsd.org> wrote:
> 
> Well, not just muscle memory but the fact that some people including me had 
> hostname.vlanX files without an explicit "vlan X" in it.

hrm. yes.

that means if you change the vnetid on such an interface at runtime, and then 
re-run netstart later on to try and reset the stack, it wont configure it back 
to the state it would be on boot. im not sure we support running netstart after 
boot though, so maybe it doesnt matter.

> 
> And I did like the implicit tags, despite your vlan6000 problem that nobody 
> ever had ;-)

i had the opposite problem where new vlan interfaces would collide with 
existing ones.

> 
> But it is time to move on, we have to cope with it.
> 
> So no objections anymore, OK reyk

thank you.

> 
>> Am 05.06.2017 um 07:28 schrieb David Gwynne <da...@gwynne.id.au>:
>> 
>> vlan(4) handles the vnetid and ifparent ioctls, so we dont need the
>> vlan specific handling. i previously removed the code that requests
>> info with a vlan specific ioctl, but this removes the vlan settings
>> code.
>> 
>> there's a couple of semantic changes to note though.
>> 
>> firstly, this aliases the "vlan", "vlandev" and "-vlandev" config
>> options to setvnetid, setifparent, and delifparent respectively.
>> this means hostname.vlan and muscle memory will largely keep working.
>> 
>> secondly, if ifconfig didnt think you'd already configured a vlan
>> tag on an interface, it would set one for you based on the unit
>> number of the interface. eg, the following:
>> 
>> # ifconfig vlan7 create
>> # ifconfig vlan7 vlandev em0
>> 
>> ... would cause vlan7 to be configured with a vnetid of 7 too.
>> 
>> i have proposed this change before, but some people pushed back,
>> mostly claiming they didnt want to learn new muscle memory.
>> 
>> id still like to do this though. the main reasons are: muscle memory
>> hasn't been an excuse not to change things. eg, im still learning
>> to cope with the removal of the sparc architecture, and i still
>> type sudo a few times before remembering it's doas now.
>> 
>> secondly, the implicit vlan tag generation is inconsistent, both
>> with other drivers, and with vlan itself. if you create vlan6000,
>> this doesnt kick in. if you create vxlan0, vxlan1, vxlan6000, there's
>> no implicit tag there either.
>> 
>> id rather the config was explicit, rather than conditially implicit.
>> 
>> ok?
>> 
>> Index: ifconfig.c
>> ===================================================================
>> RCS file: /cvs/src/sbin/ifconfig/ifconfig.c,v
>> retrieving revision 1.342
>> diff -u -p -r1.342 ifconfig.c
>> --- ifconfig.c    5 Jun 2017 05:10:23 -0000    1.342
>> +++ ifconfig.c    5 Jun 2017 05:16:36 -0000
>> @@ -91,8 +91,6 @@
>> 
>> #include <netdb.h>
>> 
>> -#include <net/if_vlan_var.h>
>> -
>> #include <netmpls/mpls.h>
>> 
>> #include <ctype.h>
>> @@ -216,9 +214,6 @@ void    setmpwencap(const char *, int);
>> void    setmpwlabel(const char *, const char *);
>> void    setmpwneighbor(const char *, int);
>> void    setmpwcontrolword(const char *, int);
>> -void    setvlantag(const char *, int);
>> -void    setvlandev(const char *, int);
>> -void    unsetvlandev(const char *, int);
>> void    mpe_status(void);
>> void    mpw_status(void);
>> void    setrdomain(const char *, int);
>> @@ -367,9 +362,9 @@ const struct    cmd {
>>   { "scan",    NEXTARG0,    0,        setifscan },
>>   { "broadcast",    NEXTARG,    0,        setifbroadaddr },
>>   { "prefixlen",  NEXTARG,    0,        setifprefixlen},
>> -    { "vlan",    NEXTARG,    0,        setvlantag },
>> -    { "vlandev",    NEXTARG,    0,        setvlandev },
>> -    { "-vlandev",    1,        0,        unsetvlandev },
>> +    { "vlan",    NEXTARG,    0,        setvnetid },
>> +    { "vlandev",    NEXTARG,    0,        setifparent },
>> +    { "-vlandev",    1,        0,        delifparent },
>>   { "group",    NEXTARG,    0,        setifgroup },
>>   { "-group",    NEXTARG,    0,        unsetifgroup },
>>   { "autoconf",    1,        0,        setautoconf },
>> @@ -3768,83 +3763,6 @@ getencap(void)
>>   }
>> 
>>   printf("\n");
>> -}
>> -
>> -static int __tag = 0;
>> -static int __have_tag = 0;
>> -
>> -/* ARGSUSED */
>> -void
>> -setvlantag(const char *val, int d)
>> -{
>> -    u_int16_t tag;
>> -    struct vlanreq vreq;
>> -    const char *errmsg = NULL;
>> -
>> -    __tag = tag = strtonum(val, 0, 4095, &errmsg);
>> -    if (errmsg)
>> -        errx(1, "vlan tag %s: %s", val, errmsg);
>> -    __have_tag = 1;
>> -
>> -    bzero((char *)&vreq, sizeof(struct vlanreq));
>> -    ifr.ifr_data = (caddr_t)&vreq;
>> -
>> -    if (ioctl(s, SIOCGETVLAN, (caddr_t)&ifr) == -1)
>> -        err(1, "SIOCGETVLAN");
>> -
>> -    vreq.vlr_tag = tag;
>> -
>> -    if (ioctl(s, SIOCSETVLAN, (caddr_t)&ifr) == -1)
>> -        err(1, "SIOCSETVLAN");
>> -}
>> -
>> -/* ARGSUSED */
>> -void
>> -setvlandev(const char *val, int d)
>> -{
>> -    struct vlanreq     vreq;
>> -    int         tag;
>> -    size_t         skip;
>> -    const char    *estr;
>> -
>> -    bzero((char *)&vreq, sizeof(struct vlanreq));
>> -    ifr.ifr_data = (caddr_t)&vreq;
>> -
>> -    if (ioctl(s, SIOCGETVLAN, (caddr_t)&ifr) == -1)
>> -        err(1, "SIOCGETVLAN");
>> -
>> -    (void) strlcpy(vreq.vlr_parent, val, sizeof(vreq.vlr_parent));
>> -
>> -    if (!__have_tag && vreq.vlr_tag == 0) {
>> -        skip = strcspn(ifr.ifr_name, "0123456789");
>> -        tag = strtonum(ifr.ifr_name + skip, 0, 4095, &estr);
>> -        if (estr != NULL)
>> -            errx(1, "invalid vlan tag and device specification");
>> -        vreq.vlr_tag = tag;
>> -    } else if (__have_tag)
>> -        vreq.vlr_tag = __tag;
>> -
>> -    if (ioctl(s, SIOCSETVLAN, (caddr_t)&ifr) == -1)
>> -        err(1, "SIOCSETVLAN");
>> -}
>> -
>> -/* ARGSUSED */
>> -void
>> -unsetvlandev(const char *val, int d)
>> -{
>> -    struct vlanreq vreq;
>> -
>> -    bzero((char *)&vreq, sizeof(struct vlanreq));
>> -    ifr.ifr_data = (caddr_t)&vreq;
>> -
>> -    if (ioctl(s, SIOCGETVLAN, (caddr_t)&ifr) == -1)
>> -        err(1, "SIOCGETVLAN");
>> -
>> -    bzero((char *)&vreq.vlr_parent, sizeof(vreq.vlr_parent));
>> -    vreq.vlr_tag = 0;
>> -
>> -    if (ioctl(s, SIOCSETVLAN, (caddr_t)&ifr) == -1)
>> -        err(1, "SIOCSETVLAN");
>> }
>> 
>> void
>> 
> 

Reply via email to