> Am 05.06.2017 um 09:26 schrieb David Gwynne <da...@gwynne.id.au>:
> 
> 
>> 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.
> 

We do and I run it all the time, for example

# sh /etc/netstart vlan5

But I'd usually destroy a cloner before creating it again.

>> 
>> 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.
> 

Having the same tag on multiple interfaces? Yes, that was a bit clunky with the 
implicit tags.

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

Reyk

>> 
>>> 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