summaryrefslogtreecommitdiffstats
path: root/sys/netinet6/vinet6.h
diff options
context:
space:
mode:
authorzec <zec@FreeBSD.org>2008-10-02 15:37:58 +0000
committerzec <zec@FreeBSD.org>2008-10-02 15:37:58 +0000
commit8797d4caecd5881e312923ee1d07be3de68755dc (patch)
tree53fef93d1ff076abec439159e0a765427992dee1 /sys/netinet6/vinet6.h
parente682bfadb0a191a81290af2b846d8610ef3aff5c (diff)
downloadFreeBSD-src-8797d4caecd5881e312923ee1d07be3de68755dc.zip
FreeBSD-src-8797d4caecd5881e312923ee1d07be3de68755dc.tar.gz
Step 1.5 of importing the network stack virtualization infrastructure
from the vimage project, as per plan established at devsummit 08/08: http://wiki.freebsd.org/Image/Notes200808DevSummit Introduce INIT_VNET_*() initializer macros, VNET_FOREACH() iterator macros, and CURVNET_SET() context setting macros, all currently resolving to NOPs. Prepare for virtualization of selected SYSCTL objects by introducing a family of SYSCTL_V_*() macros, currently resolving to their global counterparts, i.e. SYSCTL_V_INT() == SYSCTL_INT(). Move selected #defines from sys/sys/vimage.h to newly introduced header files specific to virtualized subsystems (sys/net/vnet.h, sys/netinet/vinet.h etc.). All the changes are verified to have zero functional impact at this point in time by doing MD5 comparision between pre- and post-change object files(*). (*) netipsec/keysock.c did not validate depending on compile time options. Implemented by: julian, bz, brooks, zec Reviewed by: julian, bz, brooks, kris, rwatson, ... Approved by: julian (mentor) Obtained from: //depot/projects/vimage-commit2/... X-MFC after: never Sponsored by: NLnet Foundation, The FreeBSD Foundation
Diffstat (limited to 'sys/netinet6/vinet6.h')
-rw-r--r--sys/netinet6/vinet6.h259
1 files changed, 259 insertions, 0 deletions
diff --git a/sys/netinet6/vinet6.h b/sys/netinet6/vinet6.h
new file mode 100644
index 0000000..992e6e7
--- /dev/null
+++ b/sys/netinet6/vinet6.h
@@ -0,0 +1,259 @@
+/*-
+ * Copyright (c) 2006-2008 University of Zagreb
+ * Copyright (c) 2006-2008 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 _NETINET6_VINET6_H_
+#define _NETINET6_VINET6_H_
+
+#ifdef VIMAGE
+#include <sys/socket.h>
+#include <netinet/ip6.h>
+#include <net/if.h>
+#include <netinet6/ip6_var.h>
+#include <netinet6/raw_ip6.h>
+#include <netinet/icmp6.h>
+#include <netinet6/scope6_var.h>
+#include <netinet6/in6_ifattach.h>
+#include <netinet6/in6_var.h>
+#include <netinet6/nd6.h>
+#include <netinet/in_pcb.h>
+
+struct vnet_inet6 {
+ struct in6_ifaddr * _in6_ifaddr;
+
+ u_int _frag6_nfragpackets;
+ u_int _frag6_nfrags;
+ struct ip6q _ip6q;
+
+ struct route_in6 _ip6_forward_rt;
+
+ struct in6_addrpolicy _defaultaddrpolicy;
+ TAILQ_HEAD(, addrsel_policyent) _addrsel_policytab;
+ u_int _in6_maxmtu;
+ int _ip6_auto_linklocal;
+ int _rtq_minreallyold6;
+ int _rtq_reallyold6;
+ int _rtq_toomany6;
+
+ struct ip6stat _ip6stat;
+ struct rip6stat _rip6stat;
+ struct icmp6stat _icmp6stat;
+
+ int _rtq_timeout6;
+ struct callout _rtq_timer6;
+ struct callout _rtq_mtutimer;
+ struct callout _nd6_slowtimo_ch;
+ struct callout _nd6_timer_ch;
+ struct callout _in6_tmpaddrtimer_ch;
+
+ int _nd6_inuse;
+ int _nd6_allocated;
+ struct llinfo_nd6 _llinfo_nd6;
+ struct nd_drhead _nd_defrouter;
+ struct nd_prhead _nd_prefix;
+ struct ifnet * _nd6_defifp;
+ int _nd6_defifindex;
+
+ struct scope6_id _sid_default;
+
+ TAILQ_HEAD(, dadq) _dadq;
+ int _dad_init;
+
+ int _icmp6errpps_count;
+ int _icmp6errppslim_last;
+
+ int _ip6_forwarding;
+ int _ip6_sendredirects;
+ int _ip6_defhlim;
+ int _ip6_defmcasthlim;
+ int _ip6_accept_rtadv;
+ int _ip6_maxfragpackets;
+ int _ip6_maxfrags;
+ int _ip6_log_interval;
+ int _ip6_hdrnestlimit;
+ int _ip6_dad_count;
+ int _ip6_auto_flowlabel;
+ int _ip6_use_deprecated;
+ int _ip6_rr_prune;
+ int _ip6_mcast_pmtu;
+ int _ip6_v6only;
+ int _ip6_keepfaith;
+ int _ip6stealth;
+ time_t _ip6_log_time;
+
+ int _pmtu_expire;
+ int _pmtu_probe;
+ u_long _rip6_sendspace;
+ u_long _rip6_recvspace;
+ int _icmp6_rediraccept;
+ int _icmp6_redirtimeout;
+ int _icmp6errppslim;
+ int _icmp6_nodeinfo;
+ int _udp6_sendspace;
+ int _udp6_recvspace;
+ int _ip6qmaxlen;
+ int _ip6_prefer_tempaddr;
+ int _ip6_forward_srcrt;
+ int _ip6_sourcecheck;
+ int _ip6_sourcecheck_interval;
+ int _ip6_ours_check_algorithm;
+
+ int _nd6_prune;
+ int _nd6_delay;
+ int _nd6_umaxtries;
+ int _nd6_mmaxtries;
+ int _nd6_useloopback;
+ int _nd6_gctimer;
+ int _nd6_maxndopt;
+ int _nd6_maxnudhint;
+ int _nd6_maxqueuelen;
+ int _nd6_debug;
+ int _nd6_recalc_reachtm_interval;
+ int _dad_ignore_ns;
+ int _dad_maxtry;
+ int _ip6_use_tempaddr;
+ int _ip6_desync_factor;
+ u_int32_t _ip6_temp_preferred_lifetime;
+ u_int32_t _ip6_temp_valid_lifetime;
+
+ int _ip6_mrouter_ver;
+ int _pim6;
+ u_int _mrt6debug;
+
+ int _ip6_temp_regen_advance;
+ int _ip6_use_defzone;
+
+ struct ip6_pktopts _ip6_opts;
+};
+#endif
+
+
+#define INIT_VNET_INET6(vnet) \
+ INIT_FROM_VNET(vnet, VNET_MOD_INET6, struct vnet_inet6, vnet_inet6)
+
+#define VNET_INET6(sym) VSYM(vnet_inet6, sym)
+
+
+/*
+ * Symbol translation macros
+ */
+#define V_addrsel_policytab VNET_INET6(addrsel_policytab)
+#define V_dad_ignore_ns VNET_INET6(dad_ignore_ns)
+#define V_dad_init VNET_INET6(dad_init)
+#define V_dad_maxtry VNET_INET6(dad_maxtry)
+#define V_dadq VNET_INET6(dadq)
+#define V_defaultaddrpolicy VNET_INET6(defaultaddrpolicy)
+#define V_frag6_nfragpackets VNET_INET6(frag6_nfragpackets)
+#define V_frag6_nfrags VNET_INET6(frag6_nfrags)
+#define V_icmp6_nodeinfo VNET_INET6(icmp6_nodeinfo)
+#define V_icmp6_rediraccept VNET_INET6(icmp6_rediraccept)
+#define V_icmp6_redirtimeout VNET_INET6(icmp6_redirtimeout)
+#define V_icmp6errpps_count VNET_INET6(icmp6errpps_count)
+#define V_icmp6errppslim VNET_INET6(icmp6errppslim)
+#define V_icmp6errppslim_last VNET_INET6(icmp6errppslim_last)
+#define V_icmp6stat VNET_INET6(icmp6stat)
+#define V_in6_ifaddr VNET_INET6(in6_ifaddr)
+#define V_in6_maxmtu VNET_INET6(in6_maxmtu)
+#define V_in6_tmpaddrtimer_ch VNET_INET6(in6_tmpaddrtimer_ch)
+#define V_ip6_accept_rtadv VNET_INET6(ip6_accept_rtadv)
+#define V_ip6_auto_flowlabel VNET_INET6(ip6_auto_flowlabel)
+#define V_ip6_auto_linklocal VNET_INET6(ip6_auto_linklocal)
+#define V_ip6_dad_count VNET_INET6(ip6_dad_count)
+#define V_ip6_defhlim VNET_INET6(ip6_defhlim)
+#define V_ip6_defmcasthlim VNET_INET6(ip6_defmcasthlim)
+#define V_ip6_desync_factor VNET_INET6(ip6_desync_factor)
+#define V_ip6_forward_rt VNET_INET6(ip6_forward_rt)
+#define V_ip6_forward_srcrt VNET_INET6(ip6_forward_srcrt)
+#define V_ip6_forwarding VNET_INET6(ip6_forwarding)
+#define V_ip6_hdrnestlimit VNET_INET6(ip6_hdrnestlimit)
+#define V_ip6_keepfaith VNET_INET6(ip6_keepfaith)
+#define V_ip6_log_interval VNET_INET6(ip6_log_interval)
+#define V_ip6_log_time VNET_INET6(ip6_log_time)
+#define V_ip6_maxfragpackets VNET_INET6(ip6_maxfragpackets)
+#define V_ip6_maxfrags VNET_INET6(ip6_maxfrags)
+#define V_ip6_mcast_pmtu VNET_INET6(ip6_mcast_pmtu)
+#define V_ip6_mrouter_ver VNET_INET6(ip6_mrouter_ver)
+#define V_ip6_opts VNET_INET6(ip6_opts)
+#define V_ip6_ours_check_algorithm VNET_INET6(ip6_ours_check_algorithm)
+#define V_ip6_prefer_tempaddr VNET_INET6(ip6_prefer_tempaddr)
+#define V_ip6_rr_prune VNET_INET6(ip6_rr_prune)
+#define V_ip6_sendredirects VNET_INET6(ip6_sendredirects)
+#define V_ip6_sourcecheck VNET_INET6(ip6_sourcecheck)
+#define V_ip6_sourcecheck_interval VNET_INET6(ip6_sourcecheck_interval)
+#define V_ip6_temp_preferred_lifetime VNET_INET6(ip6_temp_preferred_lifetime)
+#define V_ip6_temp_regen_advance VNET_INET6(ip6_temp_regen_advance)
+#define V_ip6_temp_valid_lifetime VNET_INET6(ip6_temp_valid_lifetime)
+#define V_ip6_use_defzone VNET_INET6(ip6_use_defzone)
+#define V_ip6_use_deprecated VNET_INET6(ip6_use_deprecated)
+#define V_ip6_use_tempaddr VNET_INET6(ip6_use_tempaddr)
+#define V_ip6_v6only VNET_INET6(ip6_v6only)
+#define V_ip6q VNET_INET6(ip6q)
+#define V_ip6qmaxlen VNET_INET6(ip6qmaxlen)
+#define V_ip6stat VNET_INET6(ip6stat)
+#define V_ip6stealth VNET_INET6(ip6stealth)
+#define V_llinfo_nd6 VNET_INET6(llinfo_nd6)
+#define V_mrt6debug VNET_INET6(mrt6debug)
+#define V_nd6_allocated VNET_INET6(nd6_allocated)
+#define V_nd6_debug VNET_INET6(nd6_debug)
+#define V_nd6_defifindex VNET_INET6(nd6_defifindex)
+#define V_nd6_defifp VNET_INET6(nd6_defifp)
+#define V_nd6_delay VNET_INET6(nd6_delay)
+#define V_nd6_gctimer VNET_INET6(nd6_gctimer)
+#define V_nd6_inuse VNET_INET6(nd6_inuse)
+#define V_nd6_maxndopt VNET_INET6(nd6_maxndopt)
+#define V_nd6_maxnudhint VNET_INET6(nd6_maxnudhint)
+#define V_nd6_maxqueuelen VNET_INET6(nd6_maxqueuelen)
+#define V_nd6_mmaxtries VNET_INET6(nd6_mmaxtries)
+#define V_nd6_prune VNET_INET6(nd6_prune)
+#define V_nd6_recalc_reachtm_interval VNET_INET6(nd6_recalc_reachtm_interval)
+#define V_nd6_slowtimo_ch VNET_INET6(nd6_slowtimo_ch)
+#define V_nd6_timer_ch VNET_INET6(nd6_timer_ch)
+#define V_nd6_umaxtries VNET_INET6(nd6_umaxtries)
+#define V_nd6_useloopback VNET_INET6(nd6_useloopback)
+#define V_nd_defrouter VNET_INET6(nd_defrouter)
+#define V_nd_prefix VNET_INET6(nd_prefix)
+#define V_pim6 VNET_INET6(pim6)
+#define V_pmtu_expire VNET_INET6(pmtu_expire)
+#define V_pmtu_probe VNET_INET6(pmtu_probe)
+#define V_rip6_recvspace VNET_INET6(rip6_recvspace)
+#define V_rip6_sendspace VNET_INET6(rip6_sendspace)
+#define V_rip6stat VNET_INET6(rip6stat)
+#define V_rtq_minreallyold6 VNET_INET6(rtq_minreallyold6)
+#define V_rtq_mtutimer VNET_INET6(rtq_mtutimer)
+#define V_rtq_reallyold6 VNET_INET6(rtq_reallyold6)
+#define V_rtq_timeout6 VNET_INET6(rtq_timeout6)
+#define V_rtq_timer6 VNET_INET6(rtq_timer6)
+#define V_rtq_toomany6 VNET_INET6(rtq_toomany6)
+#define V_sid_default VNET_INET6(sid_default)
+#define V_udp6_recvspace VNET_INET6(udp6_recvspace)
+#define V_udp6_sendspace VNET_INET6(udp6_sendspace)
+
+#endif /* !_NETINET6_VINET6_H_ */
OpenPOWER on IntegriCloud