Module Name: src
Committed By: pgoyette
Date: Mon Oct 15 04:33:34 UTC 2018
Modified Files:
src/sys/compat/common [pgoyette-compat]: compat_40_mod.c if_43.c
rtsock_70.c uipc_syscalls_40.c uipc_syscalls_50.c
src/sys/compat/net [pgoyette-compat]: route.h route_70.h
src/sys/kern [pgoyette-compat]: compat_stub.c
src/sys/net [pgoyette-compat]: rtsock.c
src/sys/sys [pgoyette-compat]: compat_stub.h rnd.h
Removed Files:
src/sys/compat/common [pgoyette-compat]: if_40.h if_43.h
src/sys/compat/sys [pgoyette-compat]: if.h
Log Message:
Convert a couple more hooks to the MP-safe mechanism.
While here, clean up some headers and remove any that are now empty.
To generate a diff of this commit:
cvs rdiff -u -r1.1.2.6 -r1.1.2.7 src/sys/compat/common/compat_40_mod.c
cvs rdiff -u -r1.1.2.3 -r0 src/sys/compat/common/if_40.h
cvs rdiff -u -r1.14.2.9 -r1.14.2.10 src/sys/compat/common/if_43.c
cvs rdiff -u -r1.1.20.2 -r0 src/sys/compat/common/if_43.h
cvs rdiff -u -r1.2.2.1 -r1.2.2.2 src/sys/compat/common/rtsock_70.c
cvs rdiff -u -r1.15.2.11 -r1.15.2.12 src/sys/compat/common/uipc_syscalls_40.c
cvs rdiff -u -r1.3.56.11 -r1.3.56.12 src/sys/compat/common/uipc_syscalls_50.c
cvs rdiff -u -r1.2 -r1.2.14.1 src/sys/compat/net/route.h
cvs rdiff -u -r1.1.2.2 -r1.1.2.3 src/sys/compat/net/route_70.h
cvs rdiff -u -r1.1.2.1 -r0 src/sys/compat/sys/if.h
cvs rdiff -u -r1.1.2.27 -r1.1.2.28 src/sys/kern/compat_stub.c
cvs rdiff -u -r1.238.2.11 -r1.238.2.12 src/sys/net/rtsock.c
cvs rdiff -u -r1.1.2.39 -r1.1.2.40 src/sys/sys/compat_stub.h
cvs rdiff -u -r1.49.16.1 -r1.49.16.2 src/sys/sys/rnd.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/compat_40_mod.c
diff -u src/sys/compat/common/compat_40_mod.c:1.1.2.6 src/sys/compat/common/compat_40_mod.c:1.1.2.7
--- src/sys/compat/common/compat_40_mod.c:1.1.2.6 Sat Sep 22 04:56:28 2018
+++ src/sys/compat/common/compat_40_mod.c Mon Oct 15 04:33:34 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: compat_40_mod.c,v 1.1.2.6 2018/09/22 04:56:28 pgoyette Exp $ */
+/* $NetBSD: compat_40_mod.c,v 1.1.2.7 2018/10/15 04:33:34 pgoyette Exp $ */
/*-
* Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: compat_40_mod.c,v 1.1.2.6 2018/09/22 04:56:28 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: compat_40_mod.c,v 1.1.2.7 2018/10/15 04:33:34 pgoyette Exp $");
#if defined(_KERNEL_OPT)
#include "opt_compat_netbsd.h"
@@ -50,8 +50,6 @@ __KERNEL_RCSID(0, "$NetBSD: compat_40_mo
#include <compat/common/compat_util.h>
#include <compat/common/compat_mod.h>
-#include <compat/common/if_40.h>
-
int
compat_40_init(void)
{
Index: src/sys/compat/common/if_43.c
diff -u src/sys/compat/common/if_43.c:1.14.2.9 src/sys/compat/common/if_43.c:1.14.2.10
--- src/sys/compat/common/if_43.c:1.14.2.9 Wed Oct 3 21:52:02 2018
+++ src/sys/compat/common/if_43.c Mon Oct 15 04:33:34 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: if_43.c,v 1.14.2.9 2018/10/03 21:52:02 pgoyette Exp $ */
+/* $NetBSD: if_43.c,v 1.14.2.10 2018/10/15 04:33:34 pgoyette Exp $ */
/*
* Copyright (c) 1982, 1986, 1989, 1990, 1993
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_43.c,v 1.14.2.9 2018/10/03 21:52:02 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_43.c,v 1.14.2.10 2018/10/15 04:33:34 pgoyette Exp $");
#if defined(_KERNEL_OPT)
#include "opt_compat_netbsd.h"
@@ -74,7 +74,6 @@ __KERNEL_RCSID(0, "$NetBSD: if_43.c,v 1.
#include <compat/common/compat_util.h>
#include <compat/common/compat_mod.h>
-#include <compat/common/if_43.h>
#include <uvm/uvm_extern.h>
#if defined(COMPAT_43)
Index: src/sys/compat/common/rtsock_70.c
diff -u src/sys/compat/common/rtsock_70.c:1.2.2.1 src/sys/compat/common/rtsock_70.c:1.2.2.2
--- src/sys/compat/common/rtsock_70.c:1.2.2.1 Thu Mar 15 05:10:05 2018
+++ src/sys/compat/common/rtsock_70.c Mon Oct 15 04:33:34 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: rtsock_70.c,v 1.2.2.1 2018/03/15 05:10:05 pgoyette Exp $ */
+/* $NetBSD: rtsock_70.c,v 1.2.2.2 2018/10/15 04:33:34 pgoyette Exp $ */
/*
* Copyright (c) 2016 The NetBSD Foundation, Inc.
@@ -30,13 +30,15 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rtsock_70.c,v 1.2.2.1 2018/03/15 05:10:05 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtsock_70.c,v 1.2.2.2 2018/10/15 04:33:34 pgoyette Exp $");
#ifdef _KERNEL_OPT
#include "opt_compat_netbsd.h"
#endif
#include <sys/mbuf.h>
+#include <sys/compat_stub.h>
+
#include <net/if.h>
#include <net/route.h>
@@ -44,24 +46,7 @@ __KERNEL_RCSID(0, "$NetBSD: rtsock_70.c,
#include <compat/net/route.h>
#include <compat/net/route_70.h>
-static void (*orig_70_rt_newaddrmsg1)(int, struct ifaddr *);
-
-void
-rtsock_70_init(void)
-{
-
- orig_70_rt_newaddrmsg1 = vec_70_rt_newaddrmsg1;
- vec_70_rt_newaddrmsg1 = compat_70_rt_newaddrmsg1;
-}
-
-void
-rtsock_70_fini(void)
-{
-
- vec_70_rt_newaddrmsg1 = orig_70_rt_newaddrmsg1;
-}
-
-void
+int
compat_70_rt_newaddrmsg1(int cmd, struct ifaddr *ifa)
{
struct rt_addrinfo info;
@@ -102,10 +87,12 @@ compat_70_rt_newaddrmsg1(int cmd, struct
m = rt_msg1(ncmd, &info, &ifam, sizeof(ifam));
if (m == NULL)
- return;
+ return 0;
mtod(m, struct ifa_msghdr70 *)->ifam_addrs = info.rti_addrs;
route_enqueue(m, sa ? sa->sa_family : 0);
+
+ return 0;
}
int
@@ -129,3 +116,21 @@ compat_70_iflist_addr(struct rt_walkarg
}
return error;
}
+
+MODULE_SET_HOOK2(rtsock_70_hook, "rts_70", compat_70_rt_newaddrmsg1,
+ compat_70_iflist_addr);
+MODULE_UNSET_HOOK2(rtsock_70_hook);
+
+void
+rtsock_70_init(void)
+{
+
+ rtsock_70_hook_set();
+}
+
+void
+rtsock_70_fini(void)
+{
+
+ rtsock_70_hook_unset();
+}
Index: src/sys/compat/common/uipc_syscalls_40.c
diff -u src/sys/compat/common/uipc_syscalls_40.c:1.15.2.11 src/sys/compat/common/uipc_syscalls_40.c:1.15.2.12
--- src/sys/compat/common/uipc_syscalls_40.c:1.15.2.11 Sat Sep 22 04:56:28 2018
+++ src/sys/compat/common/uipc_syscalls_40.c Mon Oct 15 04:33:34 2018
@@ -1,9 +1,9 @@
-/* $NetBSD: uipc_syscalls_40.c,v 1.15.2.11 2018/09/22 04:56:28 pgoyette Exp $ */
+/* $NetBSD: uipc_syscalls_40.c,v 1.15.2.12 2018/10/15 04:33:34 pgoyette Exp $ */
/* written by Pavel Cahyna, 2006. Public domain. */
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls_40.c,v 1.15.2.11 2018/09/22 04:56:28 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls_40.c,v 1.15.2.12 2018/10/15 04:33:34 pgoyette Exp $");
#if defined(_KERNEL_OPT)
#include "opt_compat_netbsd.h"
@@ -23,11 +23,9 @@ __KERNEL_RCSID(0, "$NetBSD: uipc_syscall
#include <net/if.h>
-#include <compat/sys/if.h>
#include <compat/sys/socket.h>
#include <compat/sys/sockio.h>
-#include <compat/common/if_40.h>
#include <compat/common/compat_mod.h>
/*
Index: src/sys/compat/common/uipc_syscalls_50.c
diff -u src/sys/compat/common/uipc_syscalls_50.c:1.3.56.11 src/sys/compat/common/uipc_syscalls_50.c:1.3.56.12
--- src/sys/compat/common/uipc_syscalls_50.c:1.3.56.11 Sun Sep 30 01:45:49 2018
+++ src/sys/compat/common/uipc_syscalls_50.c Mon Oct 15 04:33:34 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: uipc_syscalls_50.c,v 1.3.56.11 2018/09/30 01:45:49 pgoyette Exp $ */
+/* $NetBSD: uipc_syscalls_50.c,v 1.3.56.12 2018/10/15 04:33:34 pgoyette Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -58,7 +58,6 @@
#include <compat/sys/time.h>
#include <compat/sys/socket.h>
#include <compat/sys/sockio.h>
-#include <compat/sys/if.h>
#include <compat/common/compat_mod.h>
Index: src/sys/compat/net/route.h
diff -u src/sys/compat/net/route.h:1.2 src/sys/compat/net/route.h:1.2.14.1
--- src/sys/compat/net/route.h:1.2 Wed Sep 21 10:50:23 2016
+++ src/sys/compat/net/route.h Mon Oct 15 04:33:34 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: route.h,v 1.2 2016/09/21 10:50:23 roy Exp $ */
+/* $NetBSD: route.h,v 1.2.14.1 2018/10/15 04:33:34 pgoyette Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -88,7 +88,7 @@ void compat_50_rt_missmsg(int, const str
struct mbuf *
compat_50_rt_msg1(int, struct rt_addrinfo *, void *, int);
void compat_50_rt_newaddrmsg(int, struct ifaddr *, int, struct rtentry *);
-void compat_70_rt_newaddrmsg1(int, struct ifaddr *);
+int compat_70_rt_newaddrmsg1(int, struct ifaddr *);
#endif
#define RTM_OVERSION 3 /* Up the ante and ignore older versions */
Index: src/sys/compat/net/route_70.h
diff -u src/sys/compat/net/route_70.h:1.1.2.2 src/sys/compat/net/route_70.h:1.1.2.3
--- src/sys/compat/net/route_70.h:1.1.2.2 Fri Mar 16 08:10:26 2018
+++ src/sys/compat/net/route_70.h Mon Oct 15 04:33:34 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: route_70.h,v 1.1.2.2 2018/03/16 08:10:26 pgoyette Exp $ */
+/* $NetBSD: route_70.h,v 1.1.2.3 2018/10/15 04:33:34 pgoyette Exp $ */
/*-
* Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -39,10 +39,6 @@
void rtsock_70_init(void);
void rtsock_70_fini(void);
-extern void (*vec_70_rt_newaddrmsg1)(int, struct ifaddr *);
-extern int (*vec_70_iflist_addr)(struct rt_walkarg *, struct ifaddr *,
- struct rt_addrinfo *);
-
extern bool vec_ocreds_valid;
#endif /* !_COMPAT_NET_ROUTE_70_H_ */
Index: src/sys/kern/compat_stub.c
diff -u src/sys/kern/compat_stub.c:1.1.2.27 src/sys/kern/compat_stub.c:1.1.2.28
--- src/sys/kern/compat_stub.c:1.1.2.27 Fri Oct 12 22:30:54 2018
+++ src/sys/kern/compat_stub.c Mon Oct 15 04:33:34 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: compat_stub.c,v 1.1.2.27 2018/10/12 22:30:54 pgoyette Exp $ */
+/* $NetBSD: compat_stub.c,v 1.1.2.28 2018/10/15 04:33:34 pgoyette Exp $ */
/*-
* Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -157,6 +157,11 @@ struct uipc_syscalls_50_hook_t uipc_sysc
struct rtsock14_hook_t rtsock14_hook;
/*
+ * rtsock 70 compatability
+ */
+struct rtsock_70_hook_t rtsock_70_hook;
+
+/*
* modctl handler for old style OSTAT
*/
struct compat_modstat_80_hook_t compat_modstat_80_hook;
Index: src/sys/net/rtsock.c
diff -u src/sys/net/rtsock.c:1.238.2.11 src/sys/net/rtsock.c:1.238.2.12
--- src/sys/net/rtsock.c:1.238.2.11 Sun Sep 30 01:45:56 2018
+++ src/sys/net/rtsock.c Mon Oct 15 04:33:34 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: rtsock.c,v 1.238.2.11 2018/09/30 01:45:56 pgoyette Exp $ */
+/* $NetBSD: rtsock.c,v 1.238.2.12 2018/10/15 04:33:34 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.11 2018/09/30 01:45:56 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.238.2.12 2018/10/15 04:33:34 pgoyette Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -103,7 +103,6 @@ extern void sctp_delete_ip_address(struc
#include <compat/net/if.h>
#include <compat/net/route.h>
-#include <compat/net/route_70.h>
#ifdef COMPAT_RTSOCK
#define RTM_XVERSION RTM_OVERSION
@@ -199,15 +198,11 @@ sysctl_iflist_addr(struct rt_walkarg *,
/*
* Compat linkage
*/
-static void stub_70_rt_newaddrmsg1(int cmd, struct ifaddr*ifa)
+static int stub_70_rt_newaddrmsg1(int cmd, struct ifaddr *ifa)
{
- /* nothing */
+ return 0;
}
-
-void (*vec_70_rt_newaddrmsg1)(int, struct ifaddr *) = stub_70_rt_newaddrmsg1;
-int (*vec_70_iflist_addr)(struct rt_walkarg *, struct ifaddr *,
- struct rt_addrinfo *)= sysctl_iflist_addr;
#endif
static void
@@ -1378,10 +1373,6 @@ COMPATNAME(rt_missmsg)(int type, const s
/*
* MODULE_HOOK glue for rtsock14_oifmsg and rtsock14_iflist
- *
- * Make them static since this same code is compiled for different
- * COMPAT_xx options and we would otherwise end up with duplicate
- * global symbols.
*/
MODULE_CALL_HOOK_DECL(rtsock14_hook, f1, (struct ifnet *ifp));
#ifndef COMPAT_RTSOCK
@@ -1400,6 +1391,24 @@ MODULE_CALL_HOOK(rtsock14_hook, f2,
#endif
/*
+ * MODULE_HOOK glue for rtsock70_ifaddr_list and rtsock70_newaddrmsg1
+ */
+MODULE_CALL_HOOK_DECL(rtsock_70_hook, f1, (int, struct ifaddr *));
+#ifndef COMPAT_RTSOCK
+MODULE_CALL_HOOK(rtsock_70_hook, f1, (int cmd, struct ifaddr *ifa),
+ (cmd, ifa), stub_70_rt_newaddrmsg1(cmd, ifa));
+#endif
+
+MODULE_CALL_HOOK_DECL(rtsock_70_hook, f2,
+ (struct rt_walkarg *, struct ifaddr *, struct rt_addrinfo *));
+#ifndef COMPAT_RTSOCK
+MODULE_CALL_HOOK(rtsock_70_hook, f2,
+ (struct rt_walkarg *w, struct ifaddr *ifa, struct rt_addrinfo *info),
+ (w, ifa, info),
+ sysctl_iflist_addr(w, ifa, info));
+#endif
+
+/*
* This routine is called to generate a message from the routing
* socket indicating that the status of a network interface has changed.
*/
@@ -1516,7 +1525,7 @@ COMPATNAME(rt_newaddrmsg)(int cmd, struc
default:
panic("%s: unknown command %d", __func__, cmd);
}
- (*vec_70_rt_newaddrmsg1)(ncmd, ifa);
+ rtsock_70_hook_f1_call(ncmd, ifa);
info.rti_info[RTAX_IFA] = sa = ifa->ifa_addr;
KASSERT(ifp->if_dl != NULL);
info.rti_info[RTAX_IFP] = ifp->if_dl->ifa_addr;
@@ -1848,7 +1857,7 @@ sysctl_iflist(int af, struct rt_walkarg
info.rti_info[RTAX_IFA] = ifa->ifa_addr;
info.rti_info[RTAX_NETMASK] = ifa->ifa_netmask;
info.rti_info[RTAX_BRD] = ifa->ifa_dstaddr;
- error = (*vec_70_iflist_addr)(w, ifa, &info);
+ error = rtsock_70_hook_f2_call(w, ifa, &info);
_s = pserialize_read_enter();
ifa_release(ifa, &_psref);
Index: src/sys/sys/compat_stub.h
diff -u src/sys/sys/compat_stub.h:1.1.2.39 src/sys/sys/compat_stub.h:1.1.2.40
--- src/sys/sys/compat_stub.h:1.1.2.39 Fri Oct 12 22:30:54 2018
+++ src/sys/sys/compat_stub.h Mon Oct 15 04:33:34 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: compat_stub.h,v 1.1.2.39 2018/10/12 22:30:54 pgoyette Exp $ */
+/* $NetBSD: compat_stub.h,v 1.1.2.40 2018/10/15 04:33:34 pgoyette Exp $ */
/*-
* Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -201,6 +201,14 @@ MODULE_HOOK2(rtsock14_hook, (struct ifne
(struct ifnet *, struct rt_walkarg *, struct rt_addrinfo *, size_t));
/*
+ * Hooks for rtsock_70
+ */
+struct ifaddr;
+MODULE_HOOK2(rtsock_70_hook, (int, struct ifaddr *),
+ (struct rt_walkarg *, struct ifaddr *, struct rt_addrinfo *));
+
+
+/*
* modctl handler for old style OSTAT
*/
struct iovec;
Index: src/sys/sys/rnd.h
diff -u src/sys/sys/rnd.h:1.49.16.1 src/sys/sys/rnd.h:1.49.16.2
--- src/sys/sys/rnd.h:1.49.16.1 Wed Mar 21 02:01:34 2018
+++ src/sys/sys/rnd.h Mon Oct 15 04:33:34 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: rnd.h,v 1.49.16.1 2018/03/21 02:01:34 pgoyette Exp $ */
+/* $NetBSD: rnd.h,v 1.49.16.2 2018/10/15 04:33:34 pgoyette Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -49,9 +49,6 @@ int rnd_system_ioctl(struct file *, u_l
extern int rnd_initial_entropy;
-extern int (*vec_compat_50_rnd_ioctl)(struct file *, u_long, void *);
-extern int (*vec_compat32_50_rnd_ioctl)(struct file *, u_long, void *);
-
#endif /* _KERNEL */
#endif /* !_SYS_RND_H_ */