Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: -current cloner interfaces broken/gone/unusable



Frank Kardel <kardel%netbsd.org@localhost> wrote:
>using -current as of 20180421 (NetBSD 8.99.14 (GENERIC) #0: Sat Apr 21 
>23:01:29 UTC 2018 
>mkrepro%mkrepro.NetBSD.org@localhost:/usr/src/sys/arch/amd64/compile/GENERIC amd64)
>
>no cloning interfaces are visible:
>
>gateway# ifconfig -l
>ixg0 ixg1 ixg2 ixg3 lo0 tun0 tun1
>gateway# ifconfig -C
>ifconfig: SIOCIFGCLONERS for count: Device not configured
>gateway# ifconfig vlan0 create
>ifconfig: clone_command: Device not configured
>ifconfig: exec_matches: Device not configured
>gateway#
>
>This does not seem to be a desirable state - any clues what broke here ?

It looks to be the test for a valid interface name in
sys/compat/common/uipc_syscalls_50.c that is causing this, I think it
should only be done when the ioctl command is SIOCGIFDATA or SIOCZIFDATA.

This works for me but is a bit ugly:

Index: uipc_syscalls_50.c
===================================================================
RCS file: /cvsroot/src/sys/compat/common/uipc_syscalls_50.c,v
retrieving revision 1.4
diff -u -r1.4 uipc_syscalls_50.c
--- uipc_syscalls_50.c  12 Apr 2018 18:50:13 -0000      1.4
+++ uipc_syscalls_50.c  23 Apr 2018 22:33:14 -0000
@@ -63,9 +63,17 @@
        struct ifnet *ifp;
        int error;
 
-       ifp = ifunit(ifdr->ifdr_name);
-       if (ifp == NULL)
-               return ENXIO;
+       switch (cmd) {
+       case SIOCGIFDATA:
+       case SIOCZIFDATA:
+               ifp = ifunit(ifdr->ifdr_name);
+               if (ifp == NULL)
+                       return ENXIO;
+               break;
+       default:
+               ifp = NULL;
+               break;
+       }
 
        switch (cmd) {
        case SIOCGIFDATA:



Home | Main Index | Thread Index | Old Index