Module Name: src Committed By: pgoyette Date: Mon Apr 29 05:42:09 UTC 2019
Modified Files: src/sys/compat/common: rtsock_70.c src/sys/net: route.h rtsock.c rtsock_shared.c Log Message: For the rtsock compat code, make sure we create the "oroute" sysctl tree. Otherwise a 5.2 version of getifaddrs(2) gets errors. This makes the 5.2 version of ifconfig(8) behave the same on both NetBSD-8 and -current. HOWEVER, both of them print nothing (for ``ifconfig -l'' command) so there's still a bug somewhere. As reported originally by der Mouse. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/compat/common/rtsock_70.c cvs rdiff -u -r1.120 -r1.121 src/sys/net/route.h cvs rdiff -u -r1.248 -r1.249 src/sys/net/rtsock.c cvs rdiff -u -r1.5 -r1.6 src/sys/net/rtsock_shared.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/compat/common/rtsock_70.c diff -u src/sys/compat/common/rtsock_70.c:1.5 src/sys/compat/common/rtsock_70.c:1.6 --- src/sys/compat/common/rtsock_70.c:1.5 Fri Mar 1 11:06:56 2019 +++ src/sys/compat/common/rtsock_70.c Mon Apr 29 05:42:09 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rtsock_70.c,v 1.5 2019/03/01 11:06:56 pgoyette Exp $ */ +/* $NetBSD: rtsock_70.c,v 1.6 2019/04/29 05:42:09 pgoyette Exp $ */ /* * Copyright (c) 2016 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rtsock_70.c,v 1.5 2019/03/01 11:06:56 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rtsock_70.c,v 1.6 2019/04/29 05:42:09 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -46,6 +46,8 @@ __KERNEL_RCSID(0, "$NetBSD: rtsock_70.c, #include <compat/net/route.h> #include <compat/net/route_70.h> +struct sysctllog *clog; + void compat_70_rt_newaddrmsg1(int cmd, struct ifaddr *ifa) { @@ -122,12 +124,14 @@ rtsock_70_init(void) MODULE_HOOK_SET(rtsock_newaddr_70_hook, "rts_70", compat_70_rt_newaddrmsg1); MODULE_HOOK_SET(rtsock_iflist_70_hook, "rts_70", compat_70_iflist_addr); + sysctl_net_route_setup(&clog, PF_OROUTE, "ortable"); } void rtsock_70_fini(void) { + sysctl_teardown(&clog); MODULE_HOOK_UNSET(rtsock_newaddr_70_hook); MODULE_HOOK_UNSET(rtsock_iflist_70_hook); } Index: src/sys/net/route.h diff -u src/sys/net/route.h:1.120 src/sys/net/route.h:1.121 --- src/sys/net/route.h:1.120 Tue Oct 30 05:54:42 2018 +++ src/sys/net/route.h Mon Apr 29 05:42:09 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: route.h,v 1.120 2018/10/30 05:54:42 ozaki-r Exp $ */ +/* $NetBSD: route.h,v 1.121 2019/04/29 05:42:09 pgoyette Exp $ */ /* * Copyright (c) 1980, 1986, 1993 @@ -544,6 +544,8 @@ struct rtentry * int (*)(struct rtentry *, void *), void *); void rtbl_init(void); +void sysctl_net_route_setup(struct sysctllog **, int, const char *); + #endif /* _KERNEL */ #endif /* !_NET_ROUTE_H_ */ Index: src/sys/net/rtsock.c diff -u src/sys/net/rtsock.c:1.248 src/sys/net/rtsock.c:1.249 --- src/sys/net/rtsock.c:1.248 Fri Mar 1 11:06:57 2019 +++ src/sys/net/rtsock.c Mon Apr 29 05:42:09 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rtsock.c,v 1.248 2019/03/01 11:06:57 pgoyette Exp $ */ +/* $NetBSD: rtsock.c,v 1.249 2019/04/29 05:42:09 pgoyette Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.248 2019/03/01 11:06:57 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.249 2019/04/29 05:42:09 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -101,7 +101,6 @@ __KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1 #endif static int if_addrflags(struct ifaddr *); -static void sysctl_net_route_setup(struct sysctllog **); #include <net/rtsock_shared.c> @@ -498,24 +497,24 @@ again: return error; } -static void -sysctl_net_route_setup(struct sysctllog **clog) +void +sysctl_net_route_setup(struct sysctllog **clog, int pf, const char *name) { const struct sysctlnode *rnode = NULL; sysctl_createv(clog, 0, NULL, &rnode, CTLFLAG_PERMANENT, - CTLTYPE_NODE, DOMAINNAME, + CTLTYPE_NODE, name, SYSCTL_DESCR("PF_ROUTE information"), NULL, 0, NULL, 0, - CTL_NET, PF_XROUTE, CTL_EOL); + CTL_NET, pf, CTL_EOL); sysctl_createv(clog, 0, NULL, NULL, CTLFLAG_PERMANENT, CTLTYPE_NODE, "rtable", SYSCTL_DESCR("Routing table information"), sysctl_rtable, 0, NULL, 0, - CTL_NET, PF_XROUTE, 0 /* any protocol */, CTL_EOL); + CTL_NET, pf, 0 /* any protocol */, CTL_EOL); sysctl_createv(clog, 0, &rnode, NULL, CTLFLAG_PERMANENT, Index: src/sys/net/rtsock_shared.c diff -u src/sys/net/rtsock_shared.c:1.5 src/sys/net/rtsock_shared.c:1.6 --- src/sys/net/rtsock_shared.c:1.5 Wed Apr 10 04:06:52 2019 +++ src/sys/net/rtsock_shared.c Mon Apr 29 05:42:09 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: rtsock_shared.c,v 1.5 2019/04/10 04:06:52 thorpej Exp $ */ +/* $NetBSD: rtsock_shared.c,v 1.6 2019/04/29 05:42:09 pgoyette Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rtsock_shared.c,v 1.5 2019/04/10 04:06:52 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rtsock_shared.c,v 1.6 2019/04/29 05:42:09 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1618,7 +1618,7 @@ COMPATNAME(route_init)(void) #endif #ifndef COMPAT_RTSOCK - sysctl_net_route_setup(NULL); + sysctl_net_route_setup(NULL, PF_ROUTE, "rtable"); #endif ri->ri_intrq.ifq_maxlen = ri->ri_maxqlen; ri->ri_sih = softint_establish(SOFTINT_NET | SOFTINT_MPSAFE,