Module Name: src
Committed By: pgoyette
Date: Sun Jan 13 23:32:22 UTC 2019
Modified Files:
src/sys/compat/common [pgoyette-compat]: rtsock_50.c
src/sys/compat/net [pgoyette-compat]: if.h route.h
src/sys/kern [pgoyette-compat]: compat_stub.c
src/sys/net [pgoyette-compat]: route.h rtsock.c
src/sys/sys [pgoyette-compat]: compat_stub.h
Log Message:
Add the required hooks for rtsock_50 and modify the COMPATCALL() macro
to use the hooks. While the rtsock_50 situation is still sub-optimal
(it includes the main rtsock.c with a whole bunch of function and
variable redefinitions via macros), this at least makes it possible to
load the rtsock_50 code separately from more recent code, rather than
the previous requirement that rtsock_50 be built-in.
To generate a diff of this commit:
cvs rdiff -u -r1.6.2.2 -r1.6.2.3 src/sys/compat/common/rtsock_50.c
cvs rdiff -u -r1.4.14.1 -r1.4.14.2 src/sys/compat/net/if.h
cvs rdiff -u -r1.2.14.1 -r1.2.14.2 src/sys/compat/net/route.h
cvs rdiff -u -r1.1.2.34 -r1.1.2.35 src/sys/kern/compat_stub.c
cvs rdiff -u -r1.117.2.3 -r1.117.2.4 src/sys/net/route.h
cvs rdiff -u -r1.238.2.17 -r1.238.2.18 src/sys/net/rtsock.c
cvs rdiff -u -r1.1.2.46 -r1.1.2.47 src/sys/sys/compat_stub.h
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_50.c
diff -u src/sys/compat/common/rtsock_50.c:1.6.2.2 src/sys/compat/common/rtsock_50.c:1.6.2.3
--- src/sys/compat/common/rtsock_50.c:1.6.2.2 Fri Jan 11 06:27:45 2019
+++ src/sys/compat/common/rtsock_50.c Sun Jan 13 23:32:21 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: rtsock_50.c,v 1.6.2.2 2019/01/11 06:27:45 pgoyette Exp $ */
+/* $NetBSD: rtsock_50.c,v 1.6.2.3 2019/01/13 23:32:21 pgoyette Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rtsock_50.c,v 1.6.2.2 2019/01/11 06:27:45 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtsock_50.c,v 1.6.2.3 2019/01/13 23:32:21 pgoyette Exp $");
#ifdef _KERNEL_OPT
#include "opt_compat_netbsd.h"
@@ -80,7 +80,7 @@ __KERNEL_RCSID(0, "$NetBSD: rtsock_50.c,
#include <net/rtsock.c>
#include <compat/net/route_50.h>
-void
+int
compat_50_rt_oifmsg(struct ifnet *ifp)
{
struct if_msghdr50 oifm;
@@ -88,7 +88,7 @@ compat_50_rt_oifmsg(struct ifnet *ifp)
struct rt_addrinfo info;
if (COMPATNAME(route_info).ri_cb.any_count == 0)
- return;
+ return 0;
(void)memset(&info, 0, sizeof(info));
(void)memset(&oifm, 0, sizeof(oifm));
oifm.ifm_index = ifp->if_index;
@@ -116,8 +116,10 @@ compat_50_rt_oifmsg(struct ifnet *ifp)
oifm.ifm_addrs = 0;
m = COMPATNAME(rt_msg1)(RTM_OIFINFO, &info, (void *)&oifm, sizeof(oifm));
if (m == NULL)
- return;
+ return 0;
COMPATNAME(route_enqueue)(m, 0);
+
+ return 0;
}
int
@@ -158,19 +160,52 @@ compat_50_iflist(struct ifnet *ifp, stru
return 0;
}
-MODULE_SET_HOOK(rtsock_50_hook, "rts_50", compat_50_iflist);
-MODULE_UNSET_HOOK(rtsock_50_hook);
-
+MODULE_SET_HOOK(rtsock_50_iflist_hook, "rts_50", compat_50_iflist);
+MODULE_UNSET_HOOK(rtsock_50_iflist_hook);
+
+MODULE_SET_HOOK(rtsock_50_oifmsg_hook, "rts_50", compat_50_rt_oifmsg);
+MODULE_UNSET_HOOK(rtsock_50_oifmsg_hook);
+
+MODULE_SET_HOOK(rtsock_50_rt_missmsg_hook, "rts_50", compat_50_rt_missmsg);
+MODULE_UNSET_HOOK(rtsock_50_rt_missmsg_hook);
+
+MODULE_SET_HOOK(rtsock_50_rt_ifmsg_hook, "rts_50", compat_50_rt_ifmsg);
+MODULE_UNSET_HOOK(rtsock_50_rt_ifmsg_hook);
+
+MODULE_SET_HOOK(rtsock_50_rt_newaddrmsg_hook, "rts_50",
+ compat_50_rt_newaddrmsg);
+MODULE_UNSET_HOOK(rtsock_50_rt_newaddrmsg_hook);
+
+MODULE_SET_HOOK(rtsock_50_rt_ifannouncemsg_hook, "rts_50",
+ compat_50_rt_ifannouncemsg);
+MODULE_UNSET_HOOK(rtsock_50_rt_ifannouncemsg_hook);
+
+MODULE_SET_HOOK(rtsock_50_rt_ieee80211msg_hook, "rts_50",
+ compat_50_rt_ieee80211msg);
+MODULE_UNSET_HOOK(rtsock_50_rt_ieee80211msg_hook);
+
void
rtsock_50_init(void)
{
- rtsock_50_hook_set();
+ rtsock_50_iflist_hook_set();
+ rtsock_50_oifmsg_hook_set();
+ rtsock_50_rt_missmsg_hook_set();
+ rtsock_50_rt_ifmsg_hook_set();
+ rtsock_50_rt_newaddrmsg_hook_set();
+ rtsock_50_rt_ifannouncemsg_hook_set();
+ rtsock_50_rt_ieee80211msg_hook_set();
}
void
rtsock_50_fini(void)
{
- rtsock_50_hook_unset();
+ rtsock_50_iflist_hook_unset();
+ rtsock_50_oifmsg_hook_unset();
+ rtsock_50_rt_missmsg_hook_unset();
+ rtsock_50_rt_ifmsg_hook_unset();
+ rtsock_50_rt_newaddrmsg_hook_unset();
+ rtsock_50_rt_ifannouncemsg_hook_unset();
+ rtsock_50_rt_ieee80211msg_hook_unset();
}
Index: src/sys/compat/net/if.h
diff -u src/sys/compat/net/if.h:1.4.14.1 src/sys/compat/net/if.h:1.4.14.2
--- src/sys/compat/net/if.h:1.4.14.1 Mon Sep 17 11:04:30 2018
+++ src/sys/compat/net/if.h Sun Jan 13 23:32:21 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: if.h,v 1.4.14.1 2018/09/17 11:04:30 pgoyette Exp $ */
+/* $NetBSD: if.h,v 1.4.14.2 2019/01/13 23:32:21 pgoyette Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001 The NetBSD Foundation, Inc.
@@ -153,7 +153,7 @@ struct if_msghdr50 {
struct if_data50 ifm_data;/* statistics and other data about if */
};
-void compat_50_rt_oifmsg(struct ifnet *);
+int compat_50_rt_oifmsg(struct ifnet *);
int compat_50_iflist(struct ifnet *, struct rt_walkarg *, struct rt_addrinfo *,
size_t);
Index: src/sys/compat/net/route.h
diff -u src/sys/compat/net/route.h:1.2.14.1 src/sys/compat/net/route.h:1.2.14.2
--- src/sys/compat/net/route.h:1.2.14.1 Mon Oct 15 04:33:34 2018
+++ src/sys/compat/net/route.h Sun Jan 13 23:32:21 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: route.h,v 1.2.14.1 2018/10/15 04:33:34 pgoyette Exp $ */
+/* $NetBSD: route.h,v 1.2.14.2 2019/01/13 23:32:21 pgoyette Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -81,13 +81,13 @@ struct rt_msghdr50 {
#ifdef _KERNEL
extern struct route_info compat_50_route_info;
void compat_50_route_enqueue(struct mbuf *, int);
-void compat_50_rt_ifannouncemsg(struct ifnet *, int);
-void compat_50_rt_ieee80211msg(struct ifnet *, int, void *, size_t);
-void compat_50_rt_ifmsg(struct ifnet *);
-void compat_50_rt_missmsg(int, const struct rt_addrinfo *, int, int);
+int compat_50_rt_ifannouncemsg(struct ifnet *, int);
+int compat_50_rt_ieee80211msg(struct ifnet *, int, void *, size_t);
+int compat_50_rt_ifmsg(struct ifnet *);
+int compat_50_rt_missmsg(int, const struct rt_addrinfo *, int, int);
struct mbuf *
compat_50_rt_msg1(int, struct rt_addrinfo *, void *, int);
-void compat_50_rt_newaddrmsg(int, struct ifaddr *, int, struct rtentry *);
+int compat_50_rt_newaddrmsg(int, struct ifaddr *, int, struct rtentry *);
int compat_70_rt_newaddrmsg1(int, struct ifaddr *);
#endif
Index: src/sys/kern/compat_stub.c
diff -u src/sys/kern/compat_stub.c:1.1.2.34 src/sys/kern/compat_stub.c:1.1.2.35
--- src/sys/kern/compat_stub.c:1.1.2.34 Sun Jan 13 10:49:50 2019
+++ src/sys/kern/compat_stub.c Sun Jan 13 23:32:21 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: compat_stub.c,v 1.1.2.34 2019/01/13 10:49:50 pgoyette Exp $ */
+/* $NetBSD: compat_stub.c,v 1.1.2.35 2019/01/13 23:32:21 pgoyette Exp $ */
/*-
* Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -165,7 +165,13 @@ struct rtsock_14_iflist_hook_t rtsock_14
/*
* rtsock 50 compatability
*/
-struct rtsock_50_hook_t rtsock_50_hook;
+struct rtsock_50_iflist_hook_t rtsock_50_iflist_hook;
+struct rtsock_50_oifmsg_hook_t rtsock_50_oifmsg_hook;
+struct rtsock_50_rt_missmsg_hook_t rtsock_50_rt_missmsg_hook;
+struct rtsock_50_rt_ifmsg_hook_t rtsock_50_rt_ifmsg_hook;
+struct rtsock_50_rt_ifannouncemsg_hook_t rtsock_50_rt_ifannouncemsg_hook;
+struct rtsock_50_rt_newaddrmsg_hook_t rtsock_50_rt_newaddrmsg_hook;
+struct rtsock_50_rt_ieee80211msg_hook_t rtsock_50_rt_ieee80211msg_hook;
/*
* rtsock 70 compatability
Index: src/sys/net/route.h
diff -u src/sys/net/route.h:1.117.2.3 src/sys/net/route.h:1.117.2.4
--- src/sys/net/route.h:1.117.2.3 Mon Nov 26 01:52:50 2018
+++ src/sys/net/route.h Sun Jan 13 23:32:22 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: route.h,v 1.117.2.3 2018/11/26 01:52:50 pgoyette Exp $ */
+/* $NetBSD: route.h,v 1.117.2.4 2019/01/13 23:32:22 pgoyette Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -508,14 +508,14 @@ struct rtentry *
void rtcache_unref(struct rtentry *, struct route *);
/* rtsock */
-void rt_ieee80211msg(struct ifnet *, int, void *, size_t);
-void rt_ifannouncemsg(struct ifnet *, int);
-void rt_ifmsg(struct ifnet *);
-void rt_missmsg(int, const struct rt_addrinfo *, int, int);
+int rt_ieee80211msg(struct ifnet *, int, void *, size_t);
+int rt_ifannouncemsg(struct ifnet *, int);
+int rt_ifmsg(struct ifnet *);
+int rt_missmsg(int, const struct rt_addrinfo *, int, int);
struct mbuf *
rt_msg1(int, struct rt_addrinfo *, void *, int);
int rt_msg3(int, struct rt_addrinfo *, void *, struct rt_walkarg *, int *);
-void rt_newaddrmsg(int, struct ifaddr *, int, struct rtentry *);
+int rt_newaddrmsg(int, struct ifaddr *, int, struct rtentry *);
void route_enqueue(struct mbuf *, int);
struct llentry;
Index: src/sys/net/rtsock.c
diff -u src/sys/net/rtsock.c:1.238.2.17 src/sys/net/rtsock.c:1.238.2.18
--- src/sys/net/rtsock.c:1.238.2.17 Sun Jan 13 10:49:51 2019
+++ src/sys/net/rtsock.c Sun Jan 13 23:32:22 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: rtsock.c,v 1.238.2.17 2019/01/13 10:49:51 pgoyette Exp $ */
+/* $NetBSD: rtsock.c,v 1.238.2.18 2019/01/13 23:32:22 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.238.2.17 2019/01/13 10:49:51 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.238.2.18 2019/01/13 23:32:22 pgoyette Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -120,7 +120,6 @@ extern void sctp_delete_ip_address(struc
#define DOMAINNAME "oroute"
CTASSERT(sizeof(struct ifa_xmsghdr) == 20);
DOMAIN_DEFINE(compat_50_routedomain); /* forward declare and add to link set */
-#undef COMPAT_70
#else /* COMPAT_RTSOCK */
#define RTM_XVERSION RTM_VERSION
#define RTM_XNEWADDR RTM_NEWADDR
@@ -137,11 +136,10 @@ DOMAIN_DEFINE(compat_50_routedomain); /*
#define DOMAINNAME "route"
CTASSERT(sizeof(struct ifa_xmsghdr) == 32);
#ifdef COMPAT_50
-#define COMPATCALL(name, args) compat_50_ ## name args
+#define COMPATCALL(name, args) rtsock_50_ ## name ## _hook_call args
#endif
DOMAIN_DEFINE(routedomain); /* forward declare and add to link set */
#undef COMPAT_50
-#undef COMPAT_14
#endif /* COMPAT_RTSOCK */
#ifndef COMPATCALL
@@ -1145,37 +1143,41 @@ rt_getlen(int type)
case RTM_ODELADDR:
case RTM_ONEWADDR:
case RTM_OCHGADDR:
-#ifdef COMPAT_70
- return sizeof(struct ifa_msghdr70);
-#else
+ if (rtsock_70_iflist_hook.hooked)
+ return sizeof(struct ifa_msghdr70);
+ else {
#ifdef RTSOCK_DEBUG
- printf("%s: unsupported RTM type %d\n", __func__, type);
-#endif
- return -1;
+ printf("%s: unsupported RTM type %d\n", __func__, type);
#endif
+ return -1;
+ }
+
case RTM_DELADDR:
case RTM_NEWADDR:
case RTM_CHGADDR:
return sizeof(struct ifa_xmsghdr);
case RTM_OOIFINFO:
-#ifdef COMPAT_14
- return sizeof(struct if_msghdr14);
-#else
+ if (rtsock_14_iflist_hook.hooked)
+ return sizeof(struct if_msghdr14);
+ else {
#ifdef RTSOCK_DEBUG
- printf("%s: unsupported RTM type RTM_OOIFINFO\n", __func__);
-#endif
- return -1;
+ printf("%s: unsupported RTM type RTM_OOIFINFO\n",
+ __func__);
#endif
+ return -1;
+ }
+
case RTM_OIFINFO:
-#ifdef COMPAT_50
- return sizeof(struct if_msghdr50);
-#else
+ if (rtsock_50_iflist_hook.hooked)
+ return sizeof(struct if_msghdr50);
+ else {
#ifdef RTSOCK_DEBUG
- printf("%s: unsupported RTM type RTM_OIFINFO\n", __func__);
-#endif
- return -1;
+ printf("%s: unsupported RTM type RTM_OIFINFO\n",
+ __func__);
#endif
+ return -1;
+ }
case RTM_IFINFO:
return sizeof(struct if_xmsghdr);
@@ -1340,35 +1342,6 @@ rt_msg3(int type, struct rt_addrinfo *rt
#endif
/*
- * This routine is called to generate a message from the routing
- * socket indicating that a redirect has occurred, a routing lookup
- * has failed, or that a protocol has detected timeouts to a particular
- * destination.
- */
-void
-COMPATNAME(rt_missmsg)(int type, const struct rt_addrinfo *rtinfo, int flags,
- int error)
-{
- struct rt_xmsghdr rtm;
- struct mbuf *m;
- const struct sockaddr *sa = rtinfo->rti_info[RTAX_DST];
- struct rt_addrinfo info = *rtinfo;
-
- COMPATCALL(rt_missmsg, (type, rtinfo, flags, error));
- if (COMPATNAME(route_info).ri_cb.any_count == 0)
- return;
- memset(&rtm, 0, sizeof(rtm));
- rtm.rtm_pid = curproc->p_pid;
- rtm.rtm_flags = RTF_DONE | flags;
- rtm.rtm_errno = error;
- m = COMPATNAME(rt_msg1)(type, &info, &rtm, sizeof(rtm));
- if (m == NULL)
- return;
- mtod(m, struct rt_xmsghdr *)->rtm_addrs = info.rti_addrs;
- COMPATNAME(route_enqueue)(m, sa ? sa->sa_family : 0);
-}
-
-/*
* MODULE_HOOK glue for rtsock_14_oifmsg and rtsock_14_iflist
*/
MODULE_CALL_HOOK_DECL(rtsock_14_oifmsg_hook, (struct ifnet *ifp));
@@ -1388,19 +1361,59 @@ MODULE_CALL_HOOK(rtsock_14_iflist_hook,
#endif
/*
- * MODULE_HOOK glue for rtsock50_ifaddr_listif
+ * MODULE_HOOK glue for rtsock_50 ifaddr_list and various message routines
*/
-MODULE_CALL_HOOK_DECL(rtsock_50_hook,
+MODULE_CALL_HOOK_DECL(rtsock_50_iflist_hook,
(struct ifnet *ifp, struct rt_walkarg *w, struct rt_addrinfo *info,
size_t len));
#ifndef COMPAT_RTSOCK
-MODULE_CALL_HOOK(rtsock_50_hook,
+MODULE_CALL_HOOK(rtsock_50_iflist_hook,
(struct ifnet *ifp, struct rt_walkarg *w, struct rt_addrinfo *info,
size_t len),
(ifp, w, info, len),
enosys());
#endif
+MODULE_CALL_HOOK_DECL(rtsock_50_rt_missmsg_hook,
+ (int, const struct rt_addrinfo *, int, int));
+#ifndef COMPAT_RTSOCK
+MODULE_CALL_HOOK(rtsock_50_rt_missmsg_hook,
+ (int type, const struct rt_addrinfo *rtinfo, int flags, int error),
+ (type, rtinfo, flags, error), 0);
+#endif
+
+MODULE_CALL_HOOK_DECL(rtsock_50_rt_ifmsg_hook, (struct ifnet *));
+#ifndef COMPAT_RTSOCK
+MODULE_CALL_HOOK(rtsock_50_rt_ifmsg_hook, (struct ifnet *ifp), (ifp), 0);
+#endif
+
+MODULE_CALL_HOOK_DECL(rtsock_50_rt_newaddrmsg_hook,
+ (int, struct ifaddr *, int, struct rtentry *));
+#ifndef COMPAT_RTSOCK
+MODULE_CALL_HOOK(rtsock_50_rt_newaddrmsg_hook,
+ (int cmd, struct ifaddr *ifa, int error, struct rtentry *rt),
+ (cmd, ifa, error, rt), 0);
+#endif
+
+MODULE_CALL_HOOK_DECL(rtsock_50_rt_ifannouncemsg_hook,
+ (struct ifnet *, int what));
+#ifndef COMPAT_RTSOCK
+MODULE_CALL_HOOK(rtsock_50_rt_ifannouncemsg_hook,
+ (struct ifnet *ifp, int what), (ifp, what), 0);
+#endif
+
+MODULE_CALL_HOOK_DECL(rtsock_50_rt_ieee80211msg_hook,
+ (struct ifnet *, int, void *, size_t));
+#ifndef COMPAT_RTSOCK
+MODULE_CALL_HOOK(rtsock_50_rt_ieee80211msg_hook,
+ (struct ifnet *ifp, int what, void *data, size_t data_len),
+ (ifp, what, data, data_len), 0);
+#endif
+
+MODULE_CALL_HOOK_DECL(rtsock_50_oifmsg_hook, (struct ifnet *ifp));
+#ifndef COMPAT_RTSOCK
+MODULE_CALL_HOOK(rtsock_50_oifmsg_hook, (struct ifnet *ifp), (ifp), 0);
+#endif
/*
* MODULE_HOOK glue for rtsock70_newaddrmsg1, rtsock70_ifaddr_listaddr,
@@ -1423,9 +1436,40 @@ MODULE_CALL_HOOK(rtsock_70_iflist_hook,
/*
* This routine is called to generate a message from the routing
+ * socket indicating that a redirect has occurred, a routing lookup
+ * has failed, or that a protocol has detected timeouts to a particular
+ * destination.
+ */
+int
+COMPATNAME(rt_missmsg)(int type, const struct rt_addrinfo *rtinfo, int flags,
+ int error)
+{
+ struct rt_xmsghdr rtm;
+ struct mbuf *m;
+ const struct sockaddr *sa = rtinfo->rti_info[RTAX_DST];
+ struct rt_addrinfo info = *rtinfo;
+
+ COMPATCALL(rt_missmsg, (type, rtinfo, flags, error));
+ if (COMPATNAME(route_info).ri_cb.any_count == 0)
+ return 0;
+ memset(&rtm, 0, sizeof(rtm));
+ rtm.rtm_pid = curproc->p_pid;
+ rtm.rtm_flags = RTF_DONE | flags;
+ rtm.rtm_errno = error;
+ m = COMPATNAME(rt_msg1)(type, &info, &rtm, sizeof(rtm));
+ if (m == NULL)
+ return 0;
+ mtod(m, struct rt_xmsghdr *)->rtm_addrs = info.rti_addrs;
+ COMPATNAME(route_enqueue)(m, sa ? sa->sa_family : 0);
+
+ return 0;
+}
+
+/*
+ * This routine is called to generate a message from the routing
* socket indicating that the status of a network interface has changed.
*/
-void
+int
COMPATNAME(rt_ifmsg)(struct ifnet *ifp)
{
struct if_xmsghdr ifm;
@@ -1434,7 +1478,7 @@ COMPATNAME(rt_ifmsg)(struct ifnet *ifp)
COMPATCALL(rt_ifmsg, (ifp));
if (COMPATNAME(route_info).ri_cb.any_count == 0)
- return;
+ return 0;
(void)memset(&info, 0, sizeof(info));
(void)memset(&ifm, 0, sizeof(ifm));
ifm.ifm_index = ifp->if_index;
@@ -1443,12 +1487,11 @@ COMPATNAME(rt_ifmsg)(struct ifnet *ifp)
ifm.ifm_addrs = 0;
m = COMPATNAME(rt_msg1)(RTM_IFINFO, &info, &ifm, sizeof(ifm));
if (m == NULL)
- return;
+ return 0;
COMPATNAME(route_enqueue)(m, 0);
(void)rtsock_14_oifmsg_hook_call(ifp);
-#ifdef COMPAT_50
- compat_50_rt_oifmsg(ifp);
-#endif
+ (void)rtsock_50_oifmsg_hook_call(ifp);
+ return 0;
}
#ifndef COMPAT_RTSOCK
@@ -1479,7 +1522,7 @@ if_addrflags(struct ifaddr *ifa)
* be unnecessary as the routing socket will automatically generate
* copies of it.
*/
-void
+int
COMPATNAME(rt_newaddrmsg)(int cmd, struct ifaddr *ifa, int error,
struct rtentry *rt)
{
@@ -1506,7 +1549,7 @@ COMPATNAME(rt_newaddrmsg)(int cmd, struc
COMPATCALL(rt_newaddrmsg, (cmd, ifa, error, rt));
if (COMPATNAME(route_info).ri_cb.any_count == 0)
- return;
+ return 0;
for (pass = 1; pass < 3; pass++) {
memset(&info, 0, sizeof(info));
switch (cmdpass(cmd, pass)) {
@@ -1583,6 +1626,7 @@ COMPATNAME(rt_newaddrmsg)(int cmd, struc
COMPATNAME(route_enqueue)(m, sa ? sa->sa_family : 0);
}
#undef cmdpass
+ return 0;
}
@@ -1604,7 +1648,7 @@ rt_makeifannouncemsg(struct ifnet *ifp,
* This is called to generate routing socket messages indicating
* network interface arrival and departure.
*/
-void
+int
COMPATNAME(rt_ifannouncemsg)(struct ifnet *ifp, int what)
{
struct mbuf *m;
@@ -1612,11 +1656,13 @@ COMPATNAME(rt_ifannouncemsg)(struct ifne
COMPATCALL(rt_ifannouncemsg, (ifp, what));
if (COMPATNAME(route_info).ri_cb.any_count == 0)
- return;
+ return 0;
m = rt_makeifannouncemsg(ifp, RTM_IFANNOUNCE, what, &info);
if (m == NULL)
- return;
+ return 0;
COMPATNAME(route_enqueue)(m, 0);
+
+ return 0;
}
/*
@@ -1624,7 +1670,7 @@ COMPATNAME(rt_ifannouncemsg)(struct ifne
* IEEE80211 wireless events.
* XXX we piggyback on the RTM_IFANNOUNCE msg format in a clumsy way.
*/
-void
+int
COMPATNAME(rt_ieee80211msg)(struct ifnet *ifp, int what, void *data,
size_t data_len)
{
@@ -1633,10 +1679,10 @@ COMPATNAME(rt_ieee80211msg)(struct ifnet
COMPATCALL(rt_ieee80211msg, (ifp, what, data, data_len));
if (COMPATNAME(route_info).ri_cb.any_count == 0)
- return;
+ return 0;
m = rt_makeifannouncemsg(ifp, RTM_IEEE80211, what, &info);
if (m == NULL)
- return;
+ return 0;
/*
* Append the ieee80211 data. Try to stick it in the
* mbuf containing the ifannounce msg; otherwise allocate
@@ -1648,7 +1694,7 @@ COMPATNAME(rt_ieee80211msg)(struct ifnet
struct mbuf *n = m_get(M_NOWAIT, MT_DATA);
if (n == NULL) {
m_freem(m);
- return;
+ return 0;
}
(void)memcpy(mtod(n, void *), data, data_len);
n->m_len = data_len;
@@ -1661,6 +1707,8 @@ COMPATNAME(rt_ieee80211msg)(struct ifnet
m->m_pkthdr.len += data_len;
mtod(m, struct if_xannouncemsghdr *)->ifan_msglen += data_len;
COMPATNAME(route_enqueue)(m, 0);
+
+ return 0;
}
#ifndef COMPAT_RTSOCK
@@ -1988,7 +2036,7 @@ sysctl_iflist(int af, struct rt_walkarg
error = sysctl_iflist_if(ifp, w, &info, len);
break;
case NET_RT_OOIFLIST: /* old _50 */
- error = rtsock_50_hook_call(ifp, w, &info,
+ error = rtsock_50_iflist_hook_call(ifp, w, &info,
len);
break;
case NET_RT_OOOIFLIST: /* old _14 */
Index: src/sys/sys/compat_stub.h
diff -u src/sys/sys/compat_stub.h:1.1.2.46 src/sys/sys/compat_stub.h:1.1.2.47
--- src/sys/sys/compat_stub.h:1.1.2.46 Sun Jan 13 10:49:51 2019
+++ src/sys/sys/compat_stub.h Sun Jan 13 23:32:22 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: compat_stub.h,v 1.1.2.46 2019/01/13 10:49:51 pgoyette Exp $ */
+/* $NetBSD: compat_stub.h,v 1.1.2.47 2019/01/13 23:32:22 pgoyette Exp $ */
/*-
* Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -211,8 +211,19 @@ MODULE_HOOK(rtsock_14_iflist_hook,
* Hooks for rtsock_50
*/
-MODULE_HOOK(rtsock_50_hook,
- (struct ifnet *, struct rt_walkarg *, struct rt_addrinfo *, size_t len));
+struct rtentry;
+struct ifaddr;
+MODULE_HOOK(rtsock_50_iflist_hook,
+ (struct ifnet *, struct rt_walkarg *, struct rt_addrinfo *, size_t));
+MODULE_HOOK(rtsock_50_oifmsg_hook, (struct ifnet *));
+MODULE_HOOK(rtsock_50_rt_missmsg_hook,
+ (int, const struct rt_addrinfo *, int, int));
+MODULE_HOOK(rtsock_50_rt_ifmsg_hook, (struct ifnet *));
+MODULE_HOOK(rtsock_50_rt_newaddrmsg_hook,
+ (int, struct ifaddr *, int, struct rtentry *));
+MODULE_HOOK(rtsock_50_rt_ifannouncemsg_hook, (struct ifnet *, int));
+MODULE_HOOK(rtsock_50_rt_ieee80211msg_hook,
+ (struct ifnet *, int, void *, size_t));
/*
* Hooks for rtsock_70