Index: sys/netinet6/in6.h =================================================================== RCS file: /cvs/src/sys/netinet6/in6.h,v retrieving revision 1.78 diff -u -p -r1.78 in6.h --- sys/netinet6/in6.h 10 Jan 2015 11:43:37 -0000 1.78 +++ sys/netinet6/in6.h 8 Feb 2015 12:39:37 -0000 @@ -606,7 +606,8 @@ ifatoia6(struct ifaddr *ifa) #define IPV6CTL_MAXDYNROUTES 48 #define IPV6CTL_DAD_PENDING 49 #define IPV6CTL_MTUDISCTIMEOUT 50 -#define IPV6CTL_MAXID 51 +#define IPV6CTL_IFQUEUE 51 +#define IPV6CTL_MAXID 52 /* New entries should be added here from current IPV6CTL_MAXID value. */ /* to define items, should talk with KAME guys first, for *BSD compatibility */ @@ -663,6 +664,7 @@ ifatoia6(struct ifaddr *ifa) { "maxdynroutes", CTLTYPE_INT }, \ { "dad_pending", CTLTYPE_INT }, \ { "mtudisctimeout", CTLTYPE_INT }, \ + { "ifq", CTLTYPE_NODE }, \ } #define IPV6CTL_VARS { \ Index: sys/netinet6/ip6_input.c =================================================================== RCS file: /cvs/src/sys/netinet6/ip6_input.c,v retrieving revision 1.136 diff -u -p -r1.136 ip6_input.c --- sys/netinet6/ip6_input.c 5 Feb 2015 01:10:57 -0000 1.136 +++ sys/netinet6/ip6_input.c 8 Feb 2015 12:39:37 -0000 @@ -1417,9 +1417,9 @@ ip6_sysctl(int *name, u_int namelen, voi #endif int error, s; - /* All sysctl names at this level are terminal. */ - if (namelen != 1) - return ENOTDIR; + /* Almost all sysctl names at this level are terminal. */ + if (namelen != 1 && name[0] != IPV6CTL_IFQUEUE) + return (ENOTDIR); switch (name[0]) { case IPV6CTL_V6ONLY: @@ -1456,6 +1456,9 @@ ip6_sysctl(int *name, u_int namelen, voi splx(s); } return (error); + case IPV6CTL_IFQUEUE: + return (sysctl_ifq(name + 1, namelen - 1, + oldp, oldlenp, newp, newlen, &ip6intrq)); default: if (name[0] < IPV6CTL_MAXID) return (sysctl_int_arr(ipv6ctl_vars, name, namelen, Index: sbin/sysctl/sysctl.c =================================================================== RCS file: /cvs/src/sbin/sysctl/sysctl.c,v retrieving revision 1.208 diff -u -p -r1.208 sysctl.c --- sbin/sysctl/sysctl.c 16 Jan 2015 06:40:01 -0000 1.208 +++ sbin/sysctl/sysctl.c 8 Feb 2015 12:39:37 -0000 @@ -2129,6 +2138,20 @@ sysctl_inet6(char *string, char **bufpp, return (-1); mib[3] = indx; *typep = lp->list[indx].ctl_type; + if (*typep == CTLTYPE_NODE) { + int tindx; + + if (*bufpp == NULL) { + listall(string, &ifqlist); + return(-1); + } + lp = &ifqlist; + if ((tindx = findname(string, "fifth", bufpp, lp)) == -1) + return (-1); + mib[4] = tindx; + *typep = lp->list[tindx].ctl_type; + return(5); + } return (4); } #endif