On 8 June 2014 11:14, Henning Brauer <lists-openbsdt...@bsws.de> wrote:
> since no consensus could be found yet for a new command line option to
> ifconfig, heck, not even about wether it is needed, I propose this for
> now.
>
> 1) make "ifconfig <if> inet6 eui64" reset the NOINET6 flag
> unconditionally, so a link-local will be assigned if there isn't one
> yet.
>
> Index: sbin/ifconfig/ifconfig.c
> ===================================================================
> RCS file: /cvs/src/sbin/ifconfig/ifconfig.c,v
> retrieving revision 1.283
> diff -u -p -r1.283 ifconfig.c
> --- sbin/ifconfig/ifconfig.c    12 May 2014 08:47:37 -0000      1.283
> +++ sbin/ifconfig/ifconfig.c    19 May 2014 00:27:07 -0000
> @@ -411,7 +411,7 @@ const struct        cmd {
>         { "flowdst",    NEXTARG,        0,              setpflow_receiver },
>         { "-flowdst", 1,                0,              unsetpflow_receiver },
>         { "pflowproto", NEXTARG,        0,              setpflowproto },
> -       { "-inet6",     IFXF_NOINET6,   0,              setifxflags } ,
> +       { "-inet6",     IFXF_NOINET6,   0,              setifxflags },
>         { "keepalive",  NEXTARG2,       0,              NULL, setkeepalive },
>         { "-keepalive", 1,              0,              unsetkeepalive },
>         { "add",        NEXTARG,        0,              bridge_add },
> @@ -1312,6 +1312,7 @@ setia6eui64(const char *cmd, int val)
>
>         if (afp->af_af != AF_INET6)
>                 errx(1, "%s not allowed for the AF", cmd);
> +       setifxflags("inet6", -IFXF_NOINET6);
>         in6 = (struct in6_addr *)&in6_addreq.ifra_addr.sin6_addr;
>         if (memcmp(&in6addr_any.s6_addr[8], &in6->s6_addr[8], 8) != 0)
>                 errx(1, "interface index is already filled");
>
> 2) turn the NOINET6 flag on by default.
> As said previously, it will be reset and thus a link-local assigned
> transparently if either
> -rtsol(d) is run
> -an inet6 address is assigned
> -ifconfig <if> inet6 eui64 is run
> and thus should be entirely transparent for the vast majority of inet6
> users.
>
> Index: sys/net/if.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if.c,v
> retrieving revision 1.289
> diff -u -p -r1.289 if.c
> --- sys/net/if.c        16 May 2014 08:21:54 -0000      1.289
> +++ sys/net/if.c        16 May 2014 14:15:24 -0000
> @@ -423,6 +423,9 @@ if_attach(struct ifnet *ifp)
>  #else
>         TAILQ_INSERT_TAIL(&ifnet, ifp, if_list);
>  #endif
> +#ifdef INET6
> +       ifp->if_xflags |= IFXF_NOINET6;
> +#endif
>
>         m_clinitifp(ifp);
>
> wether we need a less obscure ifconfig command than eui64 can be
> discussed after.
>
> oks?
>
> --
> Henning Brauer, h...@bsws.de, henn...@openbsd.org
> BS Web Services GmbH, http://bsws.de, Full-Service ISP
> Secure Hosting, Mail and DNS. Virtual & Dedicated Servers, Root to Fully 
> Managed
> Henning Brauer Consulting, http://henningbrauer.com/
>

Works for me. ok krw@ for what it's worth.

.... Ken

Reply via email to