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

Reply via email to