And then rebuild and install a new kernel:
KK=`sysctl -n kern.osversion | cut -d# -f1`
cd /usr/src/sys/arch/`machine`/compile/$KK
make obj
make config
make
make install
Index: sys/dev/ic/an.c
===================================================================
RCS file: /cvs/src/sys/dev/ic/an.c,v
retrieving revision 1.73
diff -u -p -r1.73 an.c
--- sys/dev/ic/an.c 19 Feb 2018 08:59:52 -0000 1.73
+++ sys/dev/ic/an.c 14 Nov 2019 14:49:58 -0000
@@ -902,6 +902,8 @@ an_ioctl(struct ifnet *ifp, u_long comma
error = 0;
break;
case SIOCS80211NWKEY:
+ if ((error = suser(curproc)) != 0)
+ break;
error = an_set_nwkey(sc, (struct ieee80211_nwkey *)data);
break;
case SIOCG80211NWKEY:
Index: sys/net/if.c
===================================================================
RCS file: /cvs/src/sys/net/if.c,v
retrieving revision 1.588
diff -u -p -r1.588 if.c
--- sys/net/if.c 21 Aug 2019 15:32:18 -0000 1.588
+++ sys/net/if.c 14 Nov 2019 14:49:59 -0000
@@ -2182,6 +2182,7 @@ ifioctl(struct socket *so, u_long cmd, c
case SIOCDELMULTI:
case SIOCSIFMEDIA:
case SIOCSVNETID:
+ case SIOCDVNETID:
case SIOCSVNETFLOWID:
case SIOCSTXHPRIO:
case SIOCSRXHPRIO:
@@ -2195,6 +2196,33 @@ ifioctl(struct socket *so, u_long cmd, c
case SIOCSPWE3FAT:
case SIOCSPWE3NEIGHBOR:
case SIOCDPWE3NEIGHBOR:
+#if NBRIDGE > 0
+ case SIOCBRDGADD:
+ case SIOCBRDGDEL:
+ case SIOCBRDGSIFFLGS:
+ case SIOCBRDGSCACHE:
+ case SIOCBRDGADDS:
+ case SIOCBRDGDELS:
+ case SIOCBRDGSADDR:
+ case SIOCBRDGSTO:
+ case SIOCBRDGDADDR:
+ case SIOCBRDGFLUSH:
+ case SIOCBRDGADDL:
+ case SIOCBRDGSIFPROT:
+ case SIOCBRDGARL:
+ case SIOCBRDGFRL:
+ case SIOCBRDGSPRI:
+ case SIOCBRDGSHT:
+ case SIOCBRDGSFD:
+ case SIOCBRDGSMA:
+ case SIOCBRDGSIFPRIO:
+ case SIOCBRDGSIFCOST:
+ case SIOCBRDGSTXHC:
+ case SIOCBRDGSPROTO:
+ case SIOCSWGDPID:
+ case SIOCSWSPORTNO:
+ case SIOCSWGMAXFLOW:
+#endif
if ((error = suser(p)) != 0)
break;
/* FALLTHROUGH */
@@ -2202,11 +2230,30 @@ ifioctl(struct socket *so, u_long cmd, c
error = ((*so->so_proto->pr_usrreq)(so, PRU_CONTROL,
(struct mbuf *) cmd, (struct mbuf *) data,
(struct mbuf *) ifp, p));
- if (error == EOPNOTSUPP) {
- NET_LOCK();
- error = ((*ifp->if_ioctl)(ifp, cmd, data));
- NET_UNLOCK();
+ if (error != EOPNOTSUPP)
+ break;
+ switch (cmd) {
+ case SIOCAIFADDR:
+ case SIOCDIFADDR:
+ case SIOCSIFADDR:
+ case SIOCSIFNETMASK:
+ case SIOCSIFDSTADDR:
+ case SIOCSIFBRDADDR:
+#ifdef INET6
+ case SIOCAIFADDR_IN6:
+ case SIOCDIFADDR_IN6:
+#endif
+ error = suser(p);
+ break;
+ default:
+ error = 0;
+ break;
}
+ if (error)
+ break;
+ NET_LOCK();
+ error = ((*ifp->if_ioctl)(ifp, cmd, data));
+ NET_UNLOCK();
break;
}