diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index e27064e65bf8..9bed51f280be 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -14,6 +14,8 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20090801: vimage.h removed in favour of vnet.h +OLD_FILES+=usr/include/sys/vimage.h # 20090719: library version bump for 8.0 OLD_LIBS+=lib/libalias.so.6 OLD_LIBS+=lib/libavl.so.1 diff --git a/lib/libkvm/kvm_vnet.c b/lib/libkvm/kvm_vnet.c index 13f7cf4c664f..1a02cad68d30 100644 --- a/lib/libkvm/kvm_vnet.c +++ b/lib/libkvm/kvm_vnet.c @@ -40,7 +40,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include diff --git a/sys/arm/arm/minidump_machdep.c b/sys/arm/arm/minidump_machdep.c index 927a856f0df9..c21b183ae599 100644 --- a/sys/arm/arm/minidump_machdep.c +++ b/sys/arm/arm/minidump_machdep.c @@ -36,7 +36,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c index 5bca38137c0c..dfa80d5ab619 100644 --- a/sys/compat/linprocfs/linprocfs.c +++ b/sys/compat/linprocfs/linprocfs.c @@ -73,7 +73,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/compat/linux/linux_ioctl.c b/sys/compat/linux/linux_ioctl.c index a8b09451f1e5..11dc6d5041b1 100644 --- a/sys/compat/linux/linux_ioctl.c +++ b/sys/compat/linux/linux_ioctl.c @@ -59,7 +59,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c index 0c48b917fb23..d3860b0b2b21 100644 --- a/sys/compat/linux/linux_socket.c +++ b/sys/compat/linux/linux_socket.c @@ -50,7 +50,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/compat/svr4/svr4_sockio.c b/sys/compat/svr4/svr4_sockio.c index ec62f718ef03..afb3cfe776c9 100644 --- a/sys/compat/svr4/svr4_sockio.c +++ b/sys/compat/svr4/svr4_sockio.c @@ -36,7 +36,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/conf/files b/sys/conf/files index 170fe02292cc..0769151a1c51 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -1992,7 +1992,6 @@ kern/kern_time.c standard kern/kern_timeout.c standard kern/kern_umtx.c standard kern/kern_uuid.c standard -kern/kern_vimage.c optional vimage kern/kern_xxx.c standard kern/link_elf.c standard kern/linker_if.m standard diff --git a/sys/contrib/altq/altq/altq_subr.c b/sys/contrib/altq/altq/altq_subr.c index 348128f4daf0..32107e57d369 100644 --- a/sys/contrib/altq/altq/altq_subr.c +++ b/sys/contrib/altq/altq/altq_subr.c @@ -47,9 +47,6 @@ #include #include #include -#ifdef __FreeBSD__ -#include -#endif #include #include diff --git a/sys/contrib/ipfilter/netinet/fil.c b/sys/contrib/ipfilter/netinet/fil.c index 3cd09d155ffb..ea192543fdb7 100644 --- a/sys/contrib/ipfilter/netinet/fil.c +++ b/sys/contrib/ipfilter/netinet/fil.c @@ -33,9 +33,6 @@ # if (__FreeBSD_version == 400019) # define CSUM_DELAY_DATA # endif -# if (__FreeBSD_version >= 800044) -# include -# endif # endif # include #else diff --git a/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c b/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c index 1480ed0c370f..cac56efcec46 100644 --- a/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c +++ b/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c @@ -63,7 +63,6 @@ static const char rcsid[] = "@(#)$Id: ip_fil_freebsd.c,v 2.53.2.50 2007/09/20 12 # include #endif #if __FreeBSD_version >= 800044 -# include # include #else #define V_path_mtu_discovery path_mtu_discovery diff --git a/sys/contrib/pf/net/pf.c b/sys/contrib/pf/net/pf.c index d59930f2db9d..79cef36cdae9 100644 --- a/sys/contrib/pf/net/pf.c +++ b/sys/contrib/pf/net/pf.c @@ -91,7 +91,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #else #include #endif diff --git a/sys/contrib/pf/net/pf_if.c b/sys/contrib/pf/net/pf_if.c index 70566404699c..a78a5452532e 100644 --- a/sys/contrib/pf/net/pf_if.c +++ b/sys/contrib/pf/net/pf_if.c @@ -54,9 +54,6 @@ __FBSDID("$FreeBSD$"); #include #endif #include -#ifdef __FreeBSD__ -#include -#endif #include #include diff --git a/sys/contrib/pf/net/pf_ioctl.c b/sys/contrib/pf/net/pf_ioctl.c index 36331f365a29..514b7c3db149 100644 --- a/sys/contrib/pf/net/pf_ioctl.c +++ b/sys/contrib/pf/net/pf_ioctl.c @@ -83,7 +83,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #else #include #include diff --git a/sys/contrib/pf/net/pf_subr.c b/sys/contrib/pf/net/pf_subr.c index 9314bf170f4b..07f529578735 100644 --- a/sys/contrib/pf/net/pf_subr.c +++ b/sys/contrib/pf/net/pf_subr.c @@ -45,7 +45,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/contrib/rdma/rdma_cma.c b/sys/contrib/rdma/rdma_cma.c index 1bf2d086140c..535249751d4f 100644 --- a/sys/contrib/rdma/rdma_cma.c +++ b/sys/contrib/rdma/rdma_cma.c @@ -46,7 +46,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/ddb/db_sym.c b/sys/ddb/db_sym.c index 1a95c11902a8..99209a89c83c 100644 --- a/sys/ddb/db_sym.c +++ b/sys/ddb/db_sym.c @@ -32,9 +32,9 @@ __FBSDID("$FreeBSD$"); #include +#include #include #include -#include #include diff --git a/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c b/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c index 8fd1e970d7a0..cf42ea0c94ae 100644 --- a/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c +++ b/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c @@ -54,9 +54,7 @@ __FBSDID("$FreeBSD$"); #include #include -#if __FreeBSD_version >= 800044 -#include -#else +#if __FreeBSD_version < 800044 #define V_ifnet ifnet #endif diff --git a/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c b/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c index 1cbaaff79e43..d528b304f839 100644 --- a/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c +++ b/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c @@ -48,9 +48,7 @@ __FBSDID("$FreeBSD$"); #include #include -#if __FreeBSD_version >= 800044 -#include -#else +#if __FreeBSD_version < 800044 #define V_tcp_do_autosndbuf tcp_do_autosndbuf #define V_tcp_autosndbuf_max tcp_autosndbuf_max #define V_tcp_do_rfc1323 tcp_do_rfc1323 diff --git a/sys/fs/nfs/nfsport.h b/sys/fs/nfs/nfsport.h index f05c84e6e22e..f320316be7db 100644 --- a/sys/fs/nfs/nfsport.h +++ b/sys/fs/nfs/nfsport.h @@ -78,7 +78,6 @@ #include #include #include -#include #include #include #include diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c index 03612d7ab46f..cf5dfd8b856e 100644 --- a/sys/kern/kern_jail.c +++ b/sys/kern/kern_jail.c @@ -58,9 +58,12 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include + #include +#include + #include + #ifdef DDB #include #ifdef INET6 diff --git a/sys/kern/kern_linker.c b/sys/kern/kern_linker.c index 73cee6c15b00..9387ba8ea97b 100644 --- a/sys/kern/kern_linker.c +++ b/sys/kern/kern_linker.c @@ -51,7 +51,8 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include + +#include #include diff --git a/sys/kern/kern_poll.c b/sys/kern/kern_poll.c index 53962402f453..5df26bbf0895 100644 --- a/sys/kern/kern_poll.c +++ b/sys/kern/kern_poll.c @@ -41,7 +41,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include /* for IFF_* flags */ #include /* for NETISR_POLL */ diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c index 535ea810aead..bb5b6a0f3ad6 100644 --- a/sys/kern/kern_sysctl.c +++ b/sys/kern/kern_sysctl.c @@ -54,7 +54,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #ifdef KTRACE #include #endif diff --git a/sys/kern/kern_uuid.c b/sys/kern/kern_uuid.c index cd88538f7e38..e7e41239f956 100644 --- a/sys/kern/kern_uuid.c +++ b/sys/kern/kern_uuid.c @@ -37,7 +37,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/kern/kern_vimage.c b/sys/kern/kern_vimage.c deleted file mode 100644 index 9c86b75e6f35..000000000000 --- a/sys/kern/kern_vimage.c +++ /dev/null @@ -1,186 +0,0 @@ -/*- - * Copyright (c) 2004-2009 University of Zagreb - * Copyright (c) 2006-2009 FreeBSD Foundation - * - * This software was developed by the University of Zagreb and the - * FreeBSD Foundation under sponsorship by the Stichting NLnet and the - * FreeBSD Foundation. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -__FBSDID("$FreeBSD$"); - -#include "opt_ddb.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef DDB -#include -#endif - -#include -#include -#include - -MALLOC_DEFINE(M_VNET, "vnet", "network stack control block"); - -struct rwlock vnet_rwlock; -struct sx vnet_sxlock; - -#define VNET_LIST_WLOCK() do { \ - sx_xlock(&vnet_sxlock); \ - rw_wlock(&vnet_rwlock); \ -} while (0) - -#define VNET_LIST_WUNLOCK() do { \ - rw_wunlock(&vnet_rwlock); \ - sx_xunlock(&vnet_sxlock); \ -} while (0) - -struct vnet_list_head vnet_head; -struct vnet *vnet0; - - -struct vnet * -vnet_alloc(void) -{ - struct vnet *vnet; - - vnet = malloc(sizeof(struct vnet), M_VNET, M_WAITOK | M_ZERO); - vnet->vnet_magic_n = VNET_MAGIC_N; - vnet_data_init(vnet); - - /* Initialize / attach vnet module instances. */ - CURVNET_SET_QUIET(vnet); - - sx_xlock(&vnet_sxlock); - vnet_sysinit(); - CURVNET_RESTORE(); - - rw_wlock(&vnet_rwlock); - LIST_INSERT_HEAD(&vnet_head, vnet, vnet_le); - VNET_LIST_WUNLOCK(); - - return (vnet); -} - -void -vnet_destroy(struct vnet *vnet) -{ - struct ifnet *ifp, *nifp; - - KASSERT(vnet->vnet_sockcnt == 0, - ("%s: vnet still has sockets", __func__)); - - VNET_LIST_WLOCK(); - LIST_REMOVE(vnet, vnet_le); - rw_wunlock(&vnet_rwlock); - - CURVNET_SET_QUIET(vnet); - - /* Return all inherited interfaces to their parent vnets. */ - TAILQ_FOREACH_SAFE(ifp, &V_ifnet, if_link, nifp) { - if (ifp->if_home_vnet != ifp->if_vnet) - if_vmove(ifp, ifp->if_home_vnet); - } - - vnet_sysuninit(); - sx_xunlock(&vnet_sxlock); - - CURVNET_RESTORE(); - - /* Hopefully, we are OK to free the vnet container itself. */ - vnet_data_destroy(vnet); - vnet->vnet_magic_n = 0xdeadbeef; - free(vnet, M_VNET); -} - -void -vnet_foreach(void (*vnet_foreach_fn)(struct vnet *, void *), void *arg) -{ - struct vnet *vnet; - - VNET_LIST_RLOCK(); - LIST_FOREACH(vnet, &vnet_head, vnet_le) - vnet_foreach_fn(vnet, arg); - VNET_LIST_RUNLOCK(); -} - -static void -vnet_init_prelink(void *arg) -{ - - rw_init(&vnet_rwlock, "vnet_rwlock"); - sx_init(&vnet_sxlock, "vnet_sxlock"); - LIST_INIT(&vnet_head); -} -SYSINIT(vnet_init_prelink, SI_SUB_VNET_PRELINK, SI_ORDER_FIRST, - vnet_init_prelink, NULL); - -static void -vnet0_init(void *arg) -{ - - /* - * We MUST clear curvnet in vi_init_done() before going SMP, - * otherwise CURVNET_SET() macros would scream about unnecessary - * curvnet recursions. - */ - curvnet = prison0.pr_vnet = vnet0 = vnet_alloc(); -} -SYSINIT(vnet0_init, SI_SUB_VNET, SI_ORDER_FIRST, vnet0_init, NULL); - -static void -vnet_init_done(void *unused) -{ - - curvnet = NULL; -} - -SYSINIT(vnet_init_done, SI_SUB_VNET_DONE, SI_ORDER_FIRST, vnet_init_done, - NULL); - -#ifdef DDB -DB_SHOW_COMMAND(vnets, db_show_vnets) -{ - VNET_ITERATOR_DECL(vnet_iter); - -#if SIZE_MAX == UINT32_MAX /* 32-bit arch */ - db_printf(" vnet ifs socks\n"); -#else /* 64-bit arch, most probaly... */ - db_printf(" vnet ifs socks\n"); -#endif - VNET_FOREACH(vnet_iter) { - db_printf("%p %3d %5d\n", vnet_iter, vnet_iter->vnet_ifcnt, - vnet_iter->vnet_sockcnt); - } -} -#endif diff --git a/sys/kern/sys_socket.c b/sys/kern/sys_socket.c index c29ecc6445f6..717ef3e8ccf1 100644 --- a/sys/kern/sys_socket.c +++ b/sys/kern/sys_socket.c @@ -48,10 +48,10 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include +#include #include diff --git a/sys/kern/uipc_domain.c b/sys/kern/uipc_domain.c index dd0602ee889f..257e9fae775e 100644 --- a/sys/kern/uipc_domain.c +++ b/sys/kern/uipc_domain.c @@ -43,7 +43,9 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include + +#include + #include /* diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 29b400ccad03..2f4dd92736a3 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -129,7 +129,8 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include + +#include #include diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index 21ee53da5dde..9717679eb433 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -64,12 +64,13 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #ifdef KTRACE #include #endif +#include + #include #include diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c index cfaf47fab409..e002b2a90d25 100644 --- a/sys/kern/uipc_usrreq.c +++ b/sys/kern/uipc_usrreq.c @@ -88,7 +88,8 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include + +#include #ifdef DDB #include diff --git a/sys/net/bpf.c b/sys/net/bpf.c index 5a2ab19160ee..08c9a5eee26b 100644 --- a/sys/net/bpf.c +++ b/sys/net/bpf.c @@ -56,7 +56,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include @@ -73,6 +72,7 @@ __FBSDID("$FreeBSD$"); #endif #include #include +#include #include #include diff --git a/sys/net/bridgestp.c b/sys/net/bridgestp.c index 9349be44b767..3e65113c2d56 100644 --- a/sys/net/bridgestp.c +++ b/sys/net/bridgestp.c @@ -49,7 +49,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/net/flowtable.c b/sys/net/flowtable.c index 1fe2bbe69b8d..4078ae9138e1 100644 --- a/sys/net/flowtable.c +++ b/sys/net/flowtable.c @@ -48,7 +48,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/net/if.c b/sys/net/if.c index 02796cbcf6c0..3ac7db05c14b 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -59,7 +59,6 @@ #include #include #include -#include #include #include diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c index 945bc5f2e661..ced953a52f0f 100644 --- a/sys/net/if_bridge.c +++ b/sys/net/if_bridge.c @@ -101,7 +101,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/net/if_clone.c b/sys/net/if_clone.c index 95c07b731d0c..0dd20fb36108 100644 --- a/sys/net/if_clone.c +++ b/sys/net/if_clone.c @@ -39,7 +39,6 @@ #include #include #include -#include #include #include diff --git a/sys/net/if_ef.c b/sys/net/if_ef.c index c0b2d671759a..7a5fca916d7f 100644 --- a/sys/net/if_ef.c +++ b/sys/net/if_ef.c @@ -39,7 +39,6 @@ #include #include #include -#include #include #include diff --git a/sys/net/if_enc.c b/sys/net/if_enc.c index 7b62734d14c7..a49c5dc5b236 100644 --- a/sys/net/if_enc.c +++ b/sys/net/if_enc.c @@ -38,7 +38,6 @@ #include #include #include -#include #include #include diff --git a/sys/net/if_epair.c b/sys/net/if_epair.c index e299d972bb2d..00f99fdfa5c0 100644 --- a/sys/net/if_epair.c +++ b/sys/net/if_epair.c @@ -38,7 +38,7 @@ /* * Things to re-think once we have more experience: * - ifp->if_reassign function once we can test with vimage. Depending on - * how if_vomve() is going to be improved. + * how if_vmove() is going to be improved. * - Real random etheraddrs that are checked to be uniquish; we would need * to re-do them in case we move the interface between network stacks * in a private if_reassign function. @@ -61,7 +61,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include @@ -70,6 +69,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #define EPAIRNAME "epair" diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c index 545d9ee1a481..bac204449230 100644 --- a/sys/net/if_ethersubr.c +++ b/sys/net/if_ethersubr.c @@ -50,7 +50,6 @@ #include #include #include -#include #include #include diff --git a/sys/net/if_faith.c b/sys/net/if_faith.c index cbca740ed5db..ca8088362a96 100644 --- a/sys/net/if_faith.c +++ b/sys/net/if_faith.c @@ -54,7 +54,6 @@ #include #include #include -#include #include #include @@ -62,6 +61,7 @@ #include #include #include +#include #ifdef INET #include diff --git a/sys/net/if_gif.c b/sys/net/if_gif.c index 3d75dd46e42e..6abc8071e021 100644 --- a/sys/net/if_gif.c +++ b/sys/net/if_gif.c @@ -49,7 +49,6 @@ #include #include #include -#include #include #include @@ -58,6 +57,7 @@ #include #include #include +#include #include #include diff --git a/sys/net/if_gre.c b/sys/net/if_gre.c index 4ed2a9ef13f5..2b283d69e3d7 100644 --- a/sys/net/if_gre.c +++ b/sys/net/if_gre.c @@ -64,13 +64,13 @@ #include #include #include -#include #include #include #include #include #include +#include #ifdef INET #include diff --git a/sys/net/if_llatbl.c b/sys/net/if_llatbl.c index b5da1ea44360..a1b574f9f371 100644 --- a/sys/net/if_llatbl.c +++ b/sys/net/if_llatbl.c @@ -41,7 +41,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include @@ -51,6 +50,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include diff --git a/sys/net/if_loop.c b/sys/net/if_loop.c index 043c808f7f0c..056b2f93a353 100644 --- a/sys/net/if_loop.c +++ b/sys/net/if_loop.c @@ -49,7 +49,6 @@ #include #include #include -#include #include #include diff --git a/sys/net/if_mib.c b/sys/net/if_mib.c index c0018efae9ba..c334ac7f1a44 100644 --- a/sys/net/if_mib.c +++ b/sys/net/if_mib.c @@ -34,7 +34,6 @@ #include #include #include -#include #include #include diff --git a/sys/net/if_spppsubr.c b/sys/net/if_spppsubr.c index 2c325eea9bdd..3f0faafa3d6c 100644 --- a/sys/net/if_spppsubr.c +++ b/sys/net/if_spppsubr.c @@ -36,7 +36,6 @@ #include #include #include -#include #include @@ -44,6 +43,7 @@ #include #include #include +#include #include #include #include diff --git a/sys/net/if_stf.c b/sys/net/if_stf.c index ddc56629b2aa..5c082c4926a6 100644 --- a/sys/net/if_stf.c +++ b/sys/net/if_stf.c @@ -92,7 +92,6 @@ #include #include -#include #include #include @@ -100,6 +99,7 @@ #include #include #include +#include #include #include diff --git a/sys/net/if_tun.c b/sys/net/if_tun.c index a9a1c62d0810..37b5e70302c1 100644 --- a/sys/net/if_tun.c +++ b/sys/net/if_tun.c @@ -43,13 +43,13 @@ #include #include #include -#include #include #include #include #include #include +#include #ifdef INET #include #endif diff --git a/sys/net/if_vlan.c b/sys/net/if_vlan.c index ac7287006d12..04c2c0dc6448 100644 --- a/sys/net/if_vlan.c +++ b/sys/net/if_vlan.c @@ -55,7 +55,6 @@ #include #include #include -#include #include #include diff --git a/sys/net/netisr.c b/sys/net/netisr.c index b2db8c153aec..c8da579834e3 100644 --- a/sys/net/netisr.c +++ b/sys/net/netisr.c @@ -78,7 +78,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #ifdef DDB #include @@ -87,6 +86,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include /*- * Synchronize use and modification of the registered netisr data structures; diff --git a/sys/net/raw_cb.c b/sys/net/raw_cb.c index 30a526fbbeab..c430d973d84a 100644 --- a/sys/net/raw_cb.c +++ b/sys/net/raw_cb.c @@ -42,7 +42,6 @@ #include #include #include -#include #include #include diff --git a/sys/net/raw_usrreq.c b/sys/net/raw_usrreq.c index 0759e427483a..2de3d692163a 100644 --- a/sys/net/raw_usrreq.c +++ b/sys/net/raw_usrreq.c @@ -44,7 +44,6 @@ #include #include #include -#include #include #include diff --git a/sys/net/route.c b/sys/net/route.c index 544c3b643629..fc76c924c66e 100644 --- a/sys/net/route.c +++ b/sys/net/route.c @@ -51,11 +51,11 @@ #include #include #include -#include #include #include #include +#include #ifdef RADIX_MPATH #include diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c index 88c980703065..645cf7e54eb8 100644 --- a/sys/net/rtsock.c +++ b/sys/net/rtsock.c @@ -50,7 +50,6 @@ #include #include #include -#include #include #include diff --git a/sys/net/vnet.c b/sys/net/vnet.c index eed353e644b6..a34270a3eea6 100644 --- a/sys/net/vnet.c +++ b/sys/net/vnet.c @@ -1,4 +1,12 @@ /*- + * Copyright (c) 2004-2009 University of Zagreb + * Copyright (c) 2006-2009 FreeBSD Foundation + * All rights reserved. + * + * This software was developed by the University of Zagreb and the + * FreeBSD Foundation under sponsorship by the Stichting NLnet and the + * FreeBSD Foundation. + * * Copyright (c) 2009 Jeffrey Roberson * Copyright (c) 2009 Robert N. M. Watson * All rights reserved. @@ -28,30 +36,67 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_ddb.h" + #include #include +#include #include #include #include #include #include #include +#include #include #include -#include +#ifdef DDB +#include +#endif + +#include +#include #include /*- * This file implements core functions for virtual network stacks: * + * - Core virtual network stack management functions. + * * - Virtual network stack memory allocator, which virtualized global * variables in the network stack * * - Virtualized SYSINIT's/SYSUNINIT's, which allow network stack subsystems * to register startup/shutdown events to be run for each virtual network * stack instance. - * + */ + +MALLOC_DEFINE(M_VNET, "vnet", "network stack control block"); + +/* + * The virtual network stack list has two read-write locks, one sleepable and + * the other not, so that the list can be stablized and walked in a variety + * of network stack contexts. Both must be acquired exclusively to modify + * the list. + */ +struct rwlock vnet_rwlock; +struct sx vnet_sxlock; + +#define VNET_LIST_WLOCK() do { \ + sx_xlock(&vnet_sxlock); \ + rw_wlock(&vnet_rwlock); \ +} while (0) + +#define VNET_LIST_WUNLOCK() do { \ + rw_wunlock(&vnet_rwlock); \ + sx_xunlock(&vnet_sxlock); \ +} while (0) + +struct vnet_list_head vnet_head; +struct vnet *vnet0; + +/* * The virtual network stack allocator provides storage for virtualized * global variables. These variables are defined/declared using the * VNET_DEFINE()/VNET_DECLARE() macros, which place them in the 'set_vnet' @@ -156,6 +201,114 @@ static TAILQ_HEAD(, vnet_data_free) vnet_data_free_head = TAILQ_HEAD_INITIALIZER(vnet_data_free_head); static struct sx vnet_data_free_lock; +/* + * Allocate a virtual network stack. + */ +struct vnet * +vnet_alloc(void) +{ + struct vnet *vnet; + + vnet = malloc(sizeof(struct vnet), M_VNET, M_WAITOK | M_ZERO); + vnet->vnet_magic_n = VNET_MAGIC_N; + vnet_data_init(vnet); + + /* Initialize / attach vnet module instances. */ + CURVNET_SET_QUIET(vnet); + + sx_xlock(&vnet_sxlock); + vnet_sysinit(); + CURVNET_RESTORE(); + + rw_wlock(&vnet_rwlock); + LIST_INSERT_HEAD(&vnet_head, vnet, vnet_le); + VNET_LIST_WUNLOCK(); + + return (vnet); +} + +/* + * Destroy a virtual network stack. + */ +void +vnet_destroy(struct vnet *vnet) +{ + struct ifnet *ifp, *nifp; + + KASSERT(vnet->vnet_sockcnt == 0, + ("%s: vnet still has sockets", __func__)); + + VNET_LIST_WLOCK(); + LIST_REMOVE(vnet, vnet_le); + rw_wunlock(&vnet_rwlock); + + CURVNET_SET_QUIET(vnet); + + /* Return all inherited interfaces to their parent vnets. */ + TAILQ_FOREACH_SAFE(ifp, &V_ifnet, if_link, nifp) { + if (ifp->if_home_vnet != ifp->if_vnet) + if_vmove(ifp, ifp->if_home_vnet); + } + + vnet_sysuninit(); + sx_xunlock(&vnet_sxlock); + + CURVNET_RESTORE(); + + /* Hopefully, we are OK to free the vnet container itself. */ + vnet_data_destroy(vnet); + vnet->vnet_magic_n = 0xdeadbeef; + free(vnet, M_VNET); +} + +static void +vnet_foreach(void (*vnet_foreach_fn)(struct vnet *, void *), void *arg) +{ + struct vnet *vnet; + + VNET_LIST_RLOCK(); + LIST_FOREACH(vnet, &vnet_head, vnet_le) + vnet_foreach_fn(vnet, arg); + VNET_LIST_RUNLOCK(); +} + +/* + * Boot time initialization and allocation of virtual network stacks. + */ +static void +vnet_init_prelink(void *arg) +{ + + rw_init(&vnet_rwlock, "vnet_rwlock"); + sx_init(&vnet_sxlock, "vnet_sxlock"); + LIST_INIT(&vnet_head); +} +SYSINIT(vnet_init_prelink, SI_SUB_VNET_PRELINK, SI_ORDER_FIRST, + vnet_init_prelink, NULL); + +static void +vnet0_init(void *arg) +{ + + /* + * We MUST clear curvnet in vi_init_done() before going SMP, + * otherwise CURVNET_SET() macros would scream about unnecessary + * curvnet recursions. + */ + curvnet = prison0.pr_vnet = vnet0 = vnet_alloc(); +} +SYSINIT(vnet0_init, SI_SUB_VNET, SI_ORDER_FIRST, vnet0_init, NULL); + +static void +vnet_init_done(void *unused) +{ + + curvnet = NULL; +} + +SYSINIT(vnet_init_done, SI_SUB_VNET_DONE, SI_ORDER_FIRST, vnet_init_done, + NULL); + /* * Allocate storage for virtualized global variables in a new virtual network * stack instance, and copy in initial values from our 'master' copy. @@ -490,3 +643,20 @@ vnet_sysuninit(void) vs->func(vs->arg); } } + +#ifdef DDB +DB_SHOW_COMMAND(vnets, db_show_vnets) +{ + VNET_ITERATOR_DECL(vnet_iter); + +#if SIZE_MAX == UINT32_MAX /* 32-bit arch */ + db_printf(" vnet ifs socks\n"); +#else /* 64-bit arch, most probaly... */ + db_printf(" vnet ifs socks\n"); +#endif + VNET_FOREACH(vnet_iter) { + db_printf("%p %3d %5d\n", vnet_iter, vnet_iter->vnet_ifcnt, + vnet_iter->vnet_sockcnt); + } +} +#endif diff --git a/sys/net/vnet.h b/sys/net/vnet.h index 08ee21a8d871..47dc7ac03b46 100644 --- a/sys/net/vnet.h +++ b/sys/net/vnet.h @@ -1,4 +1,12 @@ /*- + * Copyright (c) 2006-2009 University of Zagreb + * Copyright (c) 2006-2009 FreeBSD Foundation + * All rights reserved. + * + * This software was developed by the University of Zagreb and the + * FreeBSD Foundation under sponsorship by the Stichting NLnet and the + * FreeBSD Foundation. + * * Copyright (c) 2009 Jeffrey Roberson * Copyright (c) 2009 Robert N. M. Watson * All rights reserved. @@ -31,6 +39,9 @@ * This header file defines several sets of interfaces supporting virtualized * network stacks: * + * - Definition of 'struct vnet' and functions and macros to allocate/free/ + * manipulate it. + * * - A virtual network stack memory allocator, which provides support for * virtualized global variables via a special linker set, set_vnet. * @@ -47,17 +58,133 @@ #define _NET_VNET_H_ /* - * Virtual network stack memory allocator, which allows global variables to - * be automatically instantiated for each network stack instance. + * struct vnet describes a virtualized network stack, and is primarily a + * pointer to storage for virtualized global variables. Expose to userspace + * as required for libkvm. */ #if defined(_KERNEL) || defined(_WANT_VNET) +#include + +struct vnet { + LIST_ENTRY(vnet) vnet_le; /* all vnets list */ + u_int vnet_magic_n; + u_int vnet_ifcnt; + u_int vnet_sockcnt; + void *vnet_data_mem; + uintptr_t vnet_data_base; +}; +#define VNET_MAGIC_N 0x3e0d8f29 + +/* + * These two virtual network stack allocator definitions are also required + * for libkvm so that it can evaluate virtualized global variables. + */ #define VNET_SETNAME "set_vnet" #define VNET_SYMPREFIX "vnet_entry_" #endif #ifdef _KERNEL -#ifdef VIMAGE +#ifdef VIMAGE +#include +#include /* for struct thread */ +#include +#include + +/* + * Functions to allocate and destroy virtual network stacks. + */ +struct vnet *vnet_alloc(void); +void vnet_destroy(struct vnet *vnet); + +/* + * The current virtual network stack -- we may wish to move this to struct + * pcpu in the future. + */ +#define curvnet curthread->td_vnet + +/* + * Various macros -- get and set the current network stack, but also + * assertions. + */ +#ifdef INVARIANTS +#define VNET_DEBUG +#endif +#ifdef VNET_DEBUG +#define VNET_ASSERT(condition) \ + if (!(condition)) { \ + printf("VNET_ASSERT @ %s:%d %s():\n", \ + __FILE__, __LINE__, __FUNCTION__); \ + panic(#condition); \ + } + +#define CURVNET_SET_QUIET(arg) \ + VNET_ASSERT((arg)->vnet_magic_n == VNET_MAGIC_N); \ + struct vnet *saved_vnet = curvnet; \ + const char *saved_vnet_lpush = curthread->td_vnet_lpush; \ + curvnet = arg; \ + curthread->td_vnet_lpush = __FUNCTION__; + +#define CURVNET_SET_VERBOSE(arg) \ + CURVNET_SET_QUIET(arg) \ + if (saved_vnet) \ + printf("CURVNET_SET(%p) in %s() on cpu %d, prev %p in %s()\n", \ + curvnet, curthread->td_vnet_lpush, curcpu, \ + saved_vnet, saved_vnet_lpush); + +#define CURVNET_SET(arg) CURVNET_SET_VERBOSE(arg) + +#define CURVNET_RESTORE() \ + VNET_ASSERT(saved_vnet == NULL || \ + saved_vnet->vnet_magic_n == VNET_MAGIC_N); \ + curvnet = saved_vnet; \ + curthread->td_vnet_lpush = saved_vnet_lpush; +#else /* !VNET_DEBUG */ +#define VNET_ASSERT(condition) + +#define CURVNET_SET(arg) \ + struct vnet *saved_vnet = curvnet; \ + curvnet = arg; + +#define CURVNET_SET_VERBOSE(arg) CURVNET_SET(arg) +#define CURVNET_SET_QUIET(arg) CURVNET_SET(arg) + +#define CURVNET_RESTORE() \ + curvnet = saved_vnet; +#endif /* VNET_DEBUG */ + +extern struct vnet *vnet0; +#define IS_DEFAULT_VNET(arg) ((arg) == vnet0) + +#define CRED_TO_VNET(cr) (cr)->cr_prison->pr_vnet +#define TD_TO_VNET(td) CRED_TO_VNET((td)->td_ucred) +#define P_TO_VNET(p) CRED_TO_VNET((p)->p_ucred) + +/* + * Global linked list of all virtual network stacks, along with read locks to + * access it. If a caller may sleep while accessing the list, it must use + * the sleepable lock macros. + */ +LIST_HEAD(vnet_list_head, vnet); +extern struct vnet_list_head vnet_head; +extern struct rwlock vnet_rwlock; +extern struct sx vnet_sxlock; + +#define VNET_LIST_RLOCK() sx_slock(&vnet_sxlock) +#define VNET_LIST_RLOCK_NOSLEEP() rw_rlock(&vnet_rwlock) +#define VNET_LIST_RUNLOCK() sx_sunlock(&vnet_sxlock) +#define VNET_LIST_RUNLOCK_NOSLEEP() rw_runlock(&vnet_rwlock) + +/* + * Iteration macros to walk the global list of virtual network stacks. + */ +#define VNET_ITERATOR_DECL(arg) struct vnet *arg +#define VNET_FOREACH(arg) LIST_FOREACH((arg), &vnet_head, vnet_le) + +/* + * Virtual network stack memory allocator, which allows global variables to + * be automatically instantiated for each network stack instance. + */ #if defined(__arm__) __asm__(".section " VNET_SETNAME ", \"aw\", %progbits"); #else @@ -192,6 +319,28 @@ void vnet_deregister_sysuninit(void *arg); #else /* !VIMAGE */ +/* + * Various virtual network stack macros compile to no-ops without VIMAGE. + */ +#define curvnet NULL + +#define VNET_ASSERT(condition) +#define CURVNET_SET(arg) +#define CURVNET_SET_QUIET(arg) +#define CURVNET_RESTORE() + +#define VNET_LIST_RLOCK() +#define VNET_LIST_RLOCK_NOSLEEP() +#define VNET_LIST_RUNLOCK() +#define VNET_LIST_RUNLOCK_NOSLEEP() +#define VNET_ITERATOR_DECL(arg) +#define VNET_FOREACH(arg) + +#define IS_DEFAULT_VNET(arg) 1 +#define CRED_TO_VNET(cr) NULL +#define TD_TO_VNET(td) NULL +#define P_TO_VNET(p) NULL + /* * Versions of the VNET macros that compile to normal global variables and * standard sysctl definitions. diff --git a/sys/net80211/ieee80211_ddb.c b/sys/net80211/ieee80211_ddb.c index 1386409f2d8c..a38f12ac2e09 100644 --- a/sys/net80211/ieee80211_ddb.c +++ b/sys/net80211/ieee80211_ddb.c @@ -37,7 +37,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/net80211/ieee80211_freebsd.c b/sys/net80211/ieee80211_freebsd.c index 51a86fdda5dd..22800fb6c768 100644 --- a/sys/net80211/ieee80211_freebsd.c +++ b/sys/net80211/ieee80211_freebsd.c @@ -41,7 +41,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include #include @@ -51,6 +50,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include diff --git a/sys/netgraph/atm/ng_atm.c b/sys/netgraph/atm/ng_atm.c index 7296aa153f14..4b7d7c0a651b 100644 --- a/sys/netgraph/atm/ng_atm.c +++ b/sys/netgraph/atm/ng_atm.c @@ -46,7 +46,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netgraph/ng_base.c b/sys/netgraph/ng_base.c index b618bb48dc93..65707b20914c 100644 --- a/sys/netgraph/ng_base.c +++ b/sys/netgraph/ng_base.c @@ -61,7 +61,6 @@ #include #include #include -#include #include #include #include diff --git a/sys/netgraph/ng_bridge.c b/sys/netgraph/ng_bridge.c index d998f1eb70cd..e42b5a547f03 100644 --- a/sys/netgraph/ng_bridge.c +++ b/sys/netgraph/ng_bridge.c @@ -69,10 +69,10 @@ #include #include #include -#include #include #include +#include #include #include diff --git a/sys/netgraph/ng_eiface.c b/sys/netgraph/ng_eiface.c index ad9668e95569..ce23683c59b7 100644 --- a/sys/netgraph/ng_eiface.c +++ b/sys/netgraph/ng_eiface.c @@ -35,10 +35,10 @@ #include #include #include +#include #include #include #include -#include #include #include diff --git a/sys/netgraph/ng_ether.c b/sys/netgraph/ng_ether.c index 85fc7fc5ab9f..fab06226610a 100644 --- a/sys/netgraph/ng_ether.c +++ b/sys/netgraph/ng_ether.c @@ -52,9 +52,9 @@ #include #include #include +#include #include #include -#include #include #include diff --git a/sys/netgraph/ng_gif.c b/sys/netgraph/ng_gif.c index de2ded3e2946..ccff05a92d04 100644 --- a/sys/netgraph/ng_gif.c +++ b/sys/netgraph/ng_gif.c @@ -76,7 +76,6 @@ #include #include #include -#include #include #include diff --git a/sys/netgraph/ng_iface.c b/sys/netgraph/ng_iface.c index 49cba258080d..209ac77fbd35 100644 --- a/sys/netgraph/ng_iface.c +++ b/sys/netgraph/ng_iface.c @@ -64,12 +64,12 @@ #include #include #include +#include #include #include #include #include #include -#include #include #include diff --git a/sys/netgraph/ng_pipe.c b/sys/netgraph/ng_pipe.c index b12318a1a4c9..5f5e41096ec1 100644 --- a/sys/netgraph/ng_pipe.c +++ b/sys/netgraph/ng_pipe.c @@ -46,10 +46,11 @@ #include #include #include -#include #include +#include + #include #include #include diff --git a/sys/netgraph/ng_source.c b/sys/netgraph/ng_source.c index 91a7585bdc5e..2f834fc6c156 100644 --- a/sys/netgraph/ng_source.c +++ b/sys/netgraph/ng_source.c @@ -66,9 +66,9 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include +#include #include #include #include diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c index e64b21fd08c8..9d1c13afe867 100644 --- a/sys/netinet/if_ether.c +++ b/sys/netinet/if_ether.c @@ -51,7 +51,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include @@ -60,6 +59,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include diff --git a/sys/netinet/igmp.c b/sys/netinet/igmp.c index 44796def2bb4..f9f6381f3fc6 100644 --- a/sys/netinet/igmp.c +++ b/sys/netinet/igmp.c @@ -59,7 +59,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet/in.c b/sys/netinet/in.c index 63a712bde8f0..15d38b191b5c 100644 --- a/sys/netinet/in.c +++ b/sys/netinet/in.c @@ -46,7 +46,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet/in_gif.c b/sys/netinet/in_gif.c index fe2c9ee3bca4..3872ddefe13b 100644 --- a/sys/netinet/in_gif.c +++ b/sys/netinet/in_gif.c @@ -46,10 +46,10 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include +#include #include #include diff --git a/sys/netinet/in_mcast.c b/sys/netinet/in_mcast.c index 6efa7d852b1c..d0e139751e9a 100644 --- a/sys/netinet/in_mcast.c +++ b/sys/netinet/in_mcast.c @@ -45,7 +45,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c index 5d080ba867ef..525afefe1de8 100644 --- a/sys/netinet/in_pcb.c +++ b/sys/netinet/in_pcb.c @@ -51,7 +51,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #ifdef DDB #include @@ -62,6 +61,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include diff --git a/sys/netinet/in_proto.c b/sys/netinet/in_proto.c index bf3c7132e4a8..f1f5adef3abf 100644 --- a/sys/netinet/in_proto.c +++ b/sys/netinet/in_proto.c @@ -50,13 +50,13 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #ifdef RADIX_MPATH #include #endif +#include #include #include diff --git a/sys/netinet/in_rmx.c b/sys/netinet/in_rmx.c index d3f9563d3ce5..6516277d0c40 100644 --- a/sys/netinet/in_rmx.c +++ b/sys/netinet/in_rmx.c @@ -51,10 +51,10 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include +#include #include #include diff --git a/sys/netinet/ip_carp.c b/sys/netinet/ip_carp.c index 00c1ea895b8b..18e446f8fc0f 100644 --- a/sys/netinet/ip_carp.c +++ b/sys/netinet/ip_carp.c @@ -52,7 +52,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include @@ -65,6 +64,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #ifdef INET #include diff --git a/sys/netinet/ip_divert.c b/sys/netinet/ip_divert.c index 6abf76f3f67f..691031014846 100644 --- a/sys/netinet/ip_divert.c +++ b/sys/netinet/ip_divert.c @@ -59,13 +59,13 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include #include +#include #include #include diff --git a/sys/netinet/ip_fastfwd.c b/sys/netinet/ip_fastfwd.c index 1c83706dc324..f53f787ed875 100644 --- a/sys/netinet/ip_fastfwd.c +++ b/sys/netinet/ip_fastfwd.c @@ -87,7 +87,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include @@ -95,6 +94,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include diff --git a/sys/netinet/ip_icmp.c b/sys/netinet/ip_icmp.c index 57a12921598c..b7906e32b82d 100644 --- a/sys/netinet/ip_icmp.c +++ b/sys/netinet/ip_icmp.c @@ -42,7 +42,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c index f95cf0da04d6..05de6d8a00f9 100644 --- a/sys/netinet/ip_input.c +++ b/sys/netinet/ip_input.c @@ -53,7 +53,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet/ip_ipsec.c b/sys/netinet/ip_ipsec.c index f0d4a5fc6137..0eb4673a0387 100644 --- a/sys/netinet/ip_ipsec.c +++ b/sys/netinet/ip_ipsec.c @@ -43,7 +43,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet/ip_mroute.c b/sys/netinet/ip_mroute.c index b8957f42e421..39c71b06c060 100644 --- a/sys/netinet/ip_mroute.c +++ b/sys/netinet/ip_mroute.c @@ -93,11 +93,11 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include +#include #include #include diff --git a/sys/netinet/ip_options.c b/sys/netinet/ip_options.c index 5c4b441f546e..f95b3a04d35f 100644 --- a/sys/netinet/ip_options.c +++ b/sys/netinet/ip_options.c @@ -44,7 +44,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include @@ -52,6 +51,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c index 220bf234b498..bf2a5f8bb53c 100644 --- a/sys/netinet/ip_output.c +++ b/sys/netinet/ip_output.c @@ -51,7 +51,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet/ipfw/ip_fw2.c b/sys/netinet/ipfw/ip_fw2.c index 9274ccdc153e..da6593c46ceb 100644 --- a/sys/netinet/ipfw/ip_fw2.c +++ b/sys/netinet/ipfw/ip_fw2.c @@ -63,7 +63,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include /* for ETHERTYPE_IP */ #include #include diff --git a/sys/netinet/ipfw/ip_fw_nat.c b/sys/netinet/ipfw/ip_fw_nat.c index ac7cc44fee21..cd6a1cfd7406 100644 --- a/sys/netinet/ipfw/ip_fw_nat.c +++ b/sys/netinet/ipfw/ip_fw_nat.c @@ -45,7 +45,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet/ipfw/ip_fw_pfil.c b/sys/netinet/ipfw/ip_fw_pfil.c index a763855d5396..e28d5ca64030 100644 --- a/sys/netinet/ipfw/ip_fw_pfil.c +++ b/sys/netinet/ipfw/ip_fw_pfil.c @@ -49,7 +49,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c index 517ac8e58bc8..3df2ec3562df 100644 --- a/sys/netinet/raw_ip.c +++ b/sys/netinet/raw_ip.c @@ -52,7 +52,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include diff --git a/sys/netinet/sctp_os_bsd.h b/sys/netinet/sctp_os_bsd.h index 46a73bf94cb9..f3ccb634d7b2 100644 --- a/sys/netinet/sctp_os_bsd.h +++ b/sys/netinet/sctp_os_bsd.h @@ -61,7 +61,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet/tcp_hostcache.c b/sys/netinet/tcp_hostcache.c index 2d3d92290f2f..acbc860a26ed 100644 --- a/sys/netinet/tcp_hostcache.c +++ b/sys/netinet/tcp_hostcache.c @@ -76,10 +76,10 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include +#include #include #include diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index 2a14d14ae9c0..22ee3d7bd72e 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -50,7 +50,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include /* before tcp_seq.h, for tcp_random18() */ @@ -58,6 +57,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #define TCPSTATES /* for logging */ diff --git a/sys/netinet/tcp_offload.c b/sys/netinet/tcp_offload.c index 94cf5706bd88..899a37c7fa34 100644 --- a/sys/netinet/tcp_offload.c +++ b/sys/netinet/tcp_offload.c @@ -37,12 +37,12 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include #include +#include #include #include diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c index c74107e74a6a..ee33ea2de738 100644 --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -48,10 +48,10 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include +#include #include #include diff --git a/sys/netinet/tcp_reass.c b/sys/netinet/tcp_reass.c index fa844b69364a..8115b2b8e16a 100644 --- a/sys/netinet/tcp_reass.c +++ b/sys/netinet/tcp_reass.c @@ -45,12 +45,12 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include +#include #include #include diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c index 985eee81bdba..06fb50269faa 100644 --- a/sys/netinet/tcp_sack.c +++ b/sys/netinet/tcp_sack.c @@ -89,7 +89,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include /* before tcp_seq.h, for tcp_random18() */ @@ -97,6 +96,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index e29283bad3cf..622c508f381a 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -55,12 +55,12 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include +#include #include #include diff --git a/sys/netinet/tcp_syncache.c b/sys/netinet/tcp_syncache.c index 23e2570fa78a..16c4f676ebbb 100644 --- a/sys/netinet/tcp_syncache.c +++ b/sys/netinet/tcp_syncache.c @@ -53,7 +53,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include diff --git a/sys/netinet/tcp_timer.c b/sys/netinet/tcp_timer.c index 3050324a2e7b..7f5d159ead23 100644 --- a/sys/netinet/tcp_timer.c +++ b/sys/netinet/tcp_timer.c @@ -45,10 +45,10 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include +#include #include #include diff --git a/sys/netinet/tcp_timewait.c b/sys/netinet/tcp_timewait.c index a6ac5c6c0d20..96626fb3fa6c 100644 --- a/sys/netinet/tcp_timewait.c +++ b/sys/netinet/tcp_timewait.c @@ -49,12 +49,12 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include +#include #include #include diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c index dfd05dcff486..1e58cd7b134d 100644 --- a/sys/netinet/tcp_usrreq.c +++ b/sys/netinet/tcp_usrreq.c @@ -53,7 +53,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #ifdef DDB #include @@ -61,6 +60,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c index 54fb9960dc20..520fc949ed38 100644 --- a/sys/netinet/udp_usrreq.c +++ b/sys/netinet/udp_usrreq.c @@ -56,7 +56,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include diff --git a/sys/netinet6/dest6.c b/sys/netinet6/dest6.c index 20b5e9d7a1fa..54d3a58c5090 100644 --- a/sys/netinet6/dest6.c +++ b/sys/netinet6/dest6.c @@ -45,7 +45,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/frag6.c b/sys/netinet6/frag6.c index ee1f4a2a3931..8900f7d08b63 100644 --- a/sys/netinet6/frag6.c +++ b/sys/netinet6/frag6.c @@ -43,7 +43,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/icmp6.c b/sys/netinet6/icmp6.c index 4a81b4dfde67..bdf7786c9c53 100644 --- a/sys/netinet6/icmp6.c +++ b/sys/netinet6/icmp6.c @@ -74,6 +74,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -82,7 +83,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c index 2a1f8d91efd0..c099da70e89e 100644 --- a/sys/netinet6/in6.c +++ b/sys/netinet6/in6.c @@ -79,7 +79,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/in6_gif.c b/sys/netinet6/in6_gif.c index e51506b3c159..a481706f53dc 100644 --- a/sys/netinet6/in6_gif.c +++ b/sys/netinet6/in6_gif.c @@ -45,7 +45,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/in6_ifattach.c b/sys/netinet6/in6_ifattach.c index 5d34b409eb09..1fc54c62793a 100644 --- a/sys/netinet6/in6_ifattach.c +++ b/sys/netinet6/in6_ifattach.c @@ -39,9 +39,9 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include -#include #include #include diff --git a/sys/netinet6/in6_mcast.c b/sys/netinet6/in6_mcast.c index 67686a43524a..eedebb91b485 100644 --- a/sys/netinet6/in6_mcast.c +++ b/sys/netinet6/in6_mcast.c @@ -50,7 +50,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/in6_pcb.c b/sys/netinet6/in6_pcb.c index 924e15d14d1c..d40a9e351019 100644 --- a/sys/netinet6/in6_pcb.c +++ b/sys/netinet6/in6_pcb.c @@ -81,7 +81,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include diff --git a/sys/netinet6/in6_proto.c b/sys/netinet6/in6_proto.c index 8c4094d9d25b..c31743f0f66c 100644 --- a/sys/netinet6/in6_proto.c +++ b/sys/netinet6/in6_proto.c @@ -82,7 +82,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/in6_rmx.c b/sys/netinet6/in6_rmx.c index dd7c19b85719..1ae04c3f1128 100644 --- a/sys/netinet6/in6_rmx.c +++ b/sys/netinet6/in6_rmx.c @@ -87,7 +87,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/in6_src.c b/sys/netinet6/in6_src.c index f51c3bf85368..f087faef5390 100644 --- a/sys/netinet6/in6_src.c +++ b/sys/netinet6/in6_src.c @@ -83,7 +83,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/ip6_forward.c b/sys/netinet6/ip6_forward.c index 896d67c707af..7ba4977d919c 100644 --- a/sys/netinet6/ip6_forward.c +++ b/sys/netinet6/ip6_forward.c @@ -48,7 +48,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/ip6_input.c b/sys/netinet6/ip6_input.c index af790424c8cf..019d57fea6b5 100644 --- a/sys/netinet6/ip6_input.c +++ b/sys/netinet6/ip6_input.c @@ -80,7 +80,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/ip6_ipsec.c b/sys/netinet6/ip6_ipsec.c index 23d6f7f52285..48d91628c29b 100644 --- a/sys/netinet6/ip6_ipsec.c +++ b/sys/netinet6/ip6_ipsec.c @@ -43,7 +43,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/ip6_mroute.c b/sys/netinet6/ip6_mroute.c index 09e4bd6f75fa..54960620d284 100644 --- a/sys/netinet6/ip6_mroute.c +++ b/sys/netinet6/ip6_mroute.c @@ -103,7 +103,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/ip6_output.c b/sys/netinet6/ip6_output.c index c208ca77b6b8..c48ac7b1594a 100644 --- a/sys/netinet6/ip6_output.c +++ b/sys/netinet6/ip6_output.c @@ -79,7 +79,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/mld6.c b/sys/netinet6/mld6.c index e23dea3cc1cb..172a8d6eb8a0 100644 --- a/sys/netinet6/mld6.c +++ b/sys/netinet6/mld6.c @@ -79,7 +79,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/nd6.c b/sys/netinet6/nd6.c index 3584b17e39ae..48635c5b5485 100644 --- a/sys/netinet6/nd6.c +++ b/sys/netinet6/nd6.c @@ -51,7 +51,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/nd6_nbr.c b/sys/netinet6/nd6_nbr.c index 37cea51ab71e..a74bea5a0cbb 100644 --- a/sys/netinet6/nd6_nbr.c +++ b/sys/netinet6/nd6_nbr.c @@ -52,7 +52,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/nd6_rtr.c b/sys/netinet6/nd6_rtr.c index 5ebe3079e8e6..9d1f0d6e8cbb 100644 --- a/sys/netinet6/nd6_rtr.c +++ b/sys/netinet6/nd6_rtr.c @@ -48,7 +48,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/raw_ip6.c b/sys/netinet6/raw_ip6.c index 01d578455dde..108742d55b65 100644 --- a/sys/netinet6/raw_ip6.c +++ b/sys/netinet6/raw_ip6.c @@ -79,7 +79,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/route6.c b/sys/netinet6/route6.c index 9628960cfb76..1311437cbc6d 100644 --- a/sys/netinet6/route6.c +++ b/sys/netinet6/route6.c @@ -40,7 +40,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include diff --git a/sys/netinet6/scope6.c b/sys/netinet6/scope6.c index a1e69211dad3..cced5e304acd 100644 --- a/sys/netinet6/scope6.c +++ b/sys/netinet6/scope6.c @@ -39,7 +39,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netinet6/udp6_usrreq.c b/sys/netinet6/udp6_usrreq.c index ab173a89c042..552e4883b22b 100644 --- a/sys/netinet6/udp6_usrreq.c +++ b/sys/netinet6/udp6_usrreq.c @@ -84,7 +84,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/netipsec/ipsec.c b/sys/netipsec/ipsec.c index 07ae90edeb36..4b552c8139c6 100644 --- a/sys/netipsec/ipsec.c +++ b/sys/netipsec/ipsec.c @@ -53,7 +53,6 @@ #include #include #include -#include #include #include diff --git a/sys/netipsec/ipsec_input.c b/sys/netipsec/ipsec_input.c index 78f023a67f2b..e449e8514929 100644 --- a/sys/netipsec/ipsec_input.c +++ b/sys/netipsec/ipsec_input.c @@ -54,7 +54,6 @@ #include #include #include -#include #include #include diff --git a/sys/netipsec/ipsec_mbuf.c b/sys/netipsec/ipsec_mbuf.c index 1b92881e25fb..97f97142d6b2 100644 --- a/sys/netipsec/ipsec_mbuf.c +++ b/sys/netipsec/ipsec_mbuf.c @@ -36,7 +36,6 @@ #include #include #include -#include #include #include diff --git a/sys/netipsec/ipsec_output.c b/sys/netipsec/ipsec_output.c index f689fb2c0f61..8e8a1e394fd4 100644 --- a/sys/netipsec/ipsec_output.c +++ b/sys/netipsec/ipsec_output.c @@ -42,7 +42,6 @@ #include #include #include -#include #include #include diff --git a/sys/netipsec/key.c b/sys/netipsec/key.c index e90396b1f7a2..99dce21b2f25 100644 --- a/sys/netipsec/key.c +++ b/sys/netipsec/key.c @@ -56,7 +56,6 @@ #include #include #include -#include #include #include diff --git a/sys/netipsec/keysock.c b/sys/netipsec/keysock.c index a8fbd5e9ebb5..143b600bb4f7 100644 --- a/sys/netipsec/keysock.c +++ b/sys/netipsec/keysock.c @@ -50,7 +50,6 @@ #include #include #include -#include #include #include diff --git a/sys/netipsec/xform_ah.c b/sys/netipsec/xform_ah.c index 658c92cf377a..d77f2463d079 100644 --- a/sys/netipsec/xform_ah.c +++ b/sys/netipsec/xform_ah.c @@ -46,7 +46,6 @@ #include #include #include -#include #include #include diff --git a/sys/netipsec/xform_esp.c b/sys/netipsec/xform_esp.c index e45a0370d1f5..135be9d1ffe7 100644 --- a/sys/netipsec/xform_esp.c +++ b/sys/netipsec/xform_esp.c @@ -46,7 +46,6 @@ #include #include #include -#include #include #include diff --git a/sys/netipsec/xform_ipcomp.c b/sys/netipsec/xform_ipcomp.c index 3536e53e7bc2..4049154ac3ee 100644 --- a/sys/netipsec/xform_ipcomp.c +++ b/sys/netipsec/xform_ipcomp.c @@ -41,7 +41,6 @@ #include #include #include -#include #include #include diff --git a/sys/netipsec/xform_ipip.c b/sys/netipsec/xform_ipip.c index 891e16ce8505..c9669b16bc2a 100644 --- a/sys/netipsec/xform_ipip.c +++ b/sys/netipsec/xform_ipip.c @@ -50,7 +50,6 @@ #include #include #include -#include #include #include diff --git a/sys/netipsec/xform_tcp.c b/sys/netipsec/xform_tcp.c index 1fad954681ad..a5edb15dcf2c 100644 --- a/sys/netipsec/xform_tcp.c +++ b/sys/netipsec/xform_tcp.c @@ -39,7 +39,6 @@ #include #include #include -#include #include #include diff --git a/sys/nfsclient/bootp_subr.c b/sys/nfsclient/bootp_subr.c index ea6c02b4cf94..e1096bed2a01 100644 --- a/sys/nfsclient/bootp_subr.c +++ b/sys/nfsclient/bootp_subr.c @@ -58,7 +58,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/nfsclient/nfs_diskless.c b/sys/nfsclient/nfs_diskless.c index e3e758bef66f..2f91b9d17994 100644 --- a/sys/nfsclient/nfs_diskless.c +++ b/sys/nfsclient/nfs_diskless.c @@ -43,7 +43,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/nfsclient/nfs_vnops.c b/sys/nfsclient/nfs_vnops.c index c37eb340cabc..165849b399fa 100644 --- a/sys/nfsclient/nfs_vnops.c +++ b/sys/nfsclient/nfs_vnops.c @@ -61,7 +61,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include diff --git a/sys/sys/vimage.h b/sys/sys/vimage.h deleted file mode 100644 index 32084b7cef29..000000000000 --- a/sys/sys/vimage.h +++ /dev/null @@ -1,183 +0,0 @@ -/*- - * Copyright (c) 2006-2009 University of Zagreb - * Copyright (c) 2006-2009 FreeBSD Foundation - * - * This software was developed by the University of Zagreb and the - * FreeBSD Foundation under sponsorship by the Stichting NLnet and the - * FreeBSD Foundation. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#ifndef _SYS_VIMAGE_H_ -#define _SYS_VIMAGE_H_ - -/* - * struct vnet describes a virtualized network stack, and is primarily a - * pointer to storage for virtualized global variables. Expose to userspace - * as required for libkvm. - */ -#if defined(_KERNEL) || defined(_WANT_VNET) -#include - -struct vnet { - LIST_ENTRY(vnet) vnet_le; /* all vnets list */ - u_int vnet_magic_n; - u_int vnet_ifcnt; - u_int vnet_sockcnt; - void *vnet_data_mem; - uintptr_t vnet_data_base; -}; - -#define VNET_MAGIC_N 0x3e0d8f29 -#endif - -#ifdef _KERNEL - -#include -#include -#include - -#ifdef INVARIANTS -#define VNET_DEBUG -#endif - -#ifdef VIMAGE - -struct vnet; -struct ifnet; -struct vnet *vnet_alloc(void); -void vnet_destroy(struct vnet *); -void vnet_foreach(void (*vnet_foreach_fn)(struct vnet *, void *), - void *arg); - -#endif /* VIMAGE */ - -#define curvnet curthread->td_vnet - -#ifdef VIMAGE -#ifdef VNET_DEBUG -#define VNET_ASSERT(condition) \ - if (!(condition)) { \ - printf("VNET_ASSERT @ %s:%d %s():\n", \ - __FILE__, __LINE__, __FUNCTION__); \ - panic(#condition); \ - } - -#define CURVNET_SET_QUIET(arg) \ - VNET_ASSERT((arg)->vnet_magic_n == VNET_MAGIC_N); \ - struct vnet *saved_vnet = curvnet; \ - const char *saved_vnet_lpush = curthread->td_vnet_lpush; \ - curvnet = arg; \ - curthread->td_vnet_lpush = __FUNCTION__; - -#define CURVNET_SET_VERBOSE(arg) \ - CURVNET_SET_QUIET(arg) \ - if (saved_vnet) \ - printf("CURVNET_SET(%p) in %s() on cpu %d, prev %p in %s()\n", \ - curvnet, curthread->td_vnet_lpush, curcpu, \ - saved_vnet, saved_vnet_lpush); - -#define CURVNET_SET(arg) CURVNET_SET_VERBOSE(arg) - -#define CURVNET_RESTORE() \ - VNET_ASSERT(saved_vnet == NULL || \ - saved_vnet->vnet_magic_n == VNET_MAGIC_N); \ - curvnet = saved_vnet; \ - curthread->td_vnet_lpush = saved_vnet_lpush; -#else /* !VNET_DEBUG */ -#define VNET_ASSERT(condition) - -#define CURVNET_SET(arg) \ - struct vnet *saved_vnet = curvnet; \ - curvnet = arg; - -#define CURVNET_SET_VERBOSE(arg) CURVNET_SET(arg) -#define CURVNET_SET_QUIET(arg) CURVNET_SET(arg) - -#define CURVNET_RESTORE() \ - curvnet = saved_vnet; -#endif /* VNET_DEBUG */ -#else /* !VIMAGE */ -#define VNET_ASSERT(condition) -#define CURVNET_SET(arg) -#define CURVNET_SET_QUIET(arg) -#define CURVNET_RESTORE() -#endif /* !VIMAGE */ - -#ifdef VIMAGE -/* - * Global linked list of all virtual network stacks, along with read locks to - * access it. If a caller may sleep while accessing the list, it must use - * the sleepable lock macros. - */ -LIST_HEAD(vnet_list_head, vnet); -extern struct vnet_list_head vnet_head; -extern struct rwlock vnet_rwlock; -extern struct sx vnet_sxlock; - -#define VNET_LIST_RLOCK() sx_slock(&vnet_sxlock) -#define VNET_LIST_RLOCK_NOSLEEP() rw_rlock(&vnet_rwlock) -#define VNET_LIST_RUNLOCK() sx_sunlock(&vnet_sxlock) -#define VNET_LIST_RUNLOCK_NOSLEEP() rw_runlock(&vnet_rwlock) - -/* - * Iteration macros to walk the global list of virtual network stacks. - */ -#define VNET_ITERATOR_DECL(arg) struct vnet *arg -#define VNET_FOREACH(arg) LIST_FOREACH((arg), &vnet_head, vnet_le) - -#else /* !VIMAGE */ -/* - * No-op macros for the !VIMAGE case. - */ -#define VNET_LIST_RLOCK() -#define VNET_LIST_RLOCK_NOSLEEP() -#define VNET_LIST_RUNLOCK() -#define VNET_LIST_RUNLOCK_NOSLEEP() -#define VNET_ITERATOR_DECL(arg) -#define VNET_FOREACH(arg) - -#endif /* VIMAGE */ - -#ifdef VIMAGE -extern struct vnet *vnet0; -#define IS_DEFAULT_VNET(arg) ((arg) == vnet0) -#else -#define IS_DEFAULT_VNET(arg) 1 -#endif - -#ifdef VIMAGE -#define CRED_TO_VNET(cr) (cr)->cr_prison->pr_vnet -#define TD_TO_VNET(td) CRED_TO_VNET((td)->td_ucred) -#define P_TO_VNET(p) CRED_TO_VNET((p)->p_ucred) -#else /* !VIMAGE */ -#define CRED_TO_VNET(cr) NULL -#define TD_TO_VNET(td) NULL -#define P_TO_VNET(p) NULL -#endif /* VIMAGE */ - -#endif /* _KERNEL */ - -#endif /* !_SYS_VIMAGE_H_ */