Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Jun 2008 21:04:12 GMT
From:      Julian Elischer <julian@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 143054 for review
Message-ID:  <200806062104.m56L4Ccp098763@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=143054

Change 143054 by julian@julian_trafmon1 on 2008/06/06 21:03:57

	Phew!

Affected files ...

.. //depot/projects/vimage-commit/V_#2 edit

Differences ...

==== //depot/projects/vimage-commit/V_#2 (text+ko) ====

@@ -12667,14 +12667,6 @@
  
  #include <net/if.h>
  #include <net/route.h>
-@@ -52,6 +55,7 @@
- #include <netinet/in.h>
- #include <netinet/in_var.h>
- #include <netinet/ip6.h>
-+#include <netinet6/vinet6.h>
- #include <netinet6/ip6_var.h>
- #include <netinet/icmp6.h>
- 
 @@ -61,6 +65,7 @@
  int
  dest6_input(struct mbuf **mp, int *offp, int proto)
@@ -12714,27 +12706,7 @@
  
  #include <net/if.h>
  #include <net/route.h>
-@@ -50,6 +54,7 @@
- #include <netinet/in.h>
- #include <netinet/in_var.h>
- #include <netinet/ip6.h>
-+#include <netinet6/vinet6.h>
- #include <netinet6/ip6_var.h>
- #include <netinet/icmp6.h>
- #include <netinet/in_systm.h>	/* for ECN definitions */
-@@ -72,9 +77,11 @@
- /*
-  * These fields all protected by ip6qlock.
-  */
-+#ifndef VIMAGE
- static u_int frag6_nfragpackets;
- static u_int frag6_nfrags;
- static struct	ip6q ip6q;	/* ip6 reassemble queue */
-+#endif
- 
- #define	IP6Q_LOCK_INIT()	mtx_init(&ip6qlock, "ip6qlock", NULL, MTX_DEF);
- #define	IP6Q_LOCK()		mtx_lock(&ip6qlock)
-@@ -90,23 +97,28 @@
+@@ -90,23 +97,25 @@
  static void
  frag6_change(void *tag)
  {
@@ -12753,19 +12725,14 @@
  
 -	ip6_maxfragpackets = nmbclusters / 4;
 -	ip6_maxfrags = nmbclusters / 4;
-+	V_ip6q.ip6q_next = V_ip6q.ip6q_prev = &V_ip6q;
 +	V_ip6_maxfragpackets = nmbclusters / 4;
 +	V_ip6_maxfrags = nmbclusters / 4;
-+#ifdef VIMAGE
-+	if (!IS_DEFAULT_VNET(curvnet))
-+		return;
-+#endif
  	EVENTHANDLER_REGISTER(nmbclusters_change,
  	    frag6_change, NULL, EVENTHANDLER_PRI_ANY);
  
  	IP6Q_LOCK_INIT();
--
--	ip6q.ip6q_next = ip6q.ip6q_prev = &ip6q;
+ 
+ 	ip6q.ip6q_next = ip6q.ip6q_prev = &ip6q;
  }
  
  /*
@@ -12910,12 +12877,11 @@
  }
  
  /*
-@@ -688,13 +702,15 @@
+@@ -688,13 +702,14 @@
  #endif
  
  	IP6Q_LOCK();
 -	q6 = ip6q.ip6q_next;
-+	VNET_ITERLOOP_BEGIN()
 +	INIT_VNET_INET6(curvnet);
 +	q6 = V_ip6q.ip6q_next;
  	if (q6)
@@ -12929,7 +12895,7 @@
  				/* XXX in6_ifstat_inc(ifp, ifs6_reass_fail) */
  				frag6_freef(q6->ip6q_prev);
  			}
-@@ -704,12 +720,13 @@
+@@ -704,12 +720,12 @@
  	 * (due to the limit being lowered), drain off
  	 * enough to get down to the new limit.
  	 */
@@ -12943,7 +12909,6 @@
 -		frag6_freef(ip6q.ip6q_prev);
 +		frag6_freef(V_ip6q.ip6q_prev);
  	}
-+	VNET_ITERLOOP_END()
  	IP6Q_UNLOCK();
  
  #if 0
@@ -12960,13 +12925,12 @@
  	}
  	if (ipsrcchk_rt.ro_rt) {
  		RTFREE(ipsrcchk_rt.ro_rt);
-@@ -738,10 +755,13 @@
+@@ -738,10 +755,11 @@
  
  	if (IP6Q_TRYLOCK() == 0)
  		return;
 -	while (ip6q.ip6q_next != &ip6q) {
 -		ip6stat.ip6s_fragdropped++;
-+	VNET_ITERLOOP_BEGIN()
 +	INIT_VNET_INET6(curvnet);
 +	while (V_ip6q.ip6q_next != &V_ip6q) {
 +		V_ip6stat.ip6s_fragdropped++;
@@ -12974,7 +12938,6 @@
 -		frag6_freef(ip6q.ip6q_next);
 +		frag6_freef(V_ip6q.ip6q_next);
  	}
-+	VNET_ITERLOOP_END()
  	IP6Q_UNLOCK();
  }
 Index: sys/netinet6/icmp6.c
@@ -12989,45 +12952,26 @@
  
  #include <sys/param.h>
  #include <sys/domain.h>
-@@ -81,18 +82,22 @@
+@@ -81,18 +82,19 @@
  #include <sys/syslog.h>
  #include <sys/systm.h>
  #include <sys/time.h>
 +#include <sys/vimage.h>
  
-+#include <net/vnet.h>
  #include <net/if.h>
  #include <net/if_dl.h>
  #include <net/if_types.h>
  #include <net/route.h>
  
-+#include <netinet/vinet.h>
  #include <netinet/in.h>
  #include <netinet/in_pcb.h>
  #include <netinet/in_var.h>
  #include <netinet/ip6.h>
  #include <netinet/icmp6.h>
  #include <netinet/tcp_var.h>
-+#include <netinet6/vinet6.h>
  #include <netinet6/in6_ifattach.h>
  #include <netinet6/in6_pcb.h>
  #include <netinet6/ip6protosw.h>
-@@ -112,10 +117,14 @@
- 
- extern struct inpcbinfo ripcbinfo;
- extern struct inpcbhead ripcb;
-+#ifndef VIMAGE
- extern int icmp6errppslim;
--static int icmp6errpps_count = 0;
-+static int icmp6errpps_count;
-+#endif /* !VIMAGE */
- static struct timeval icmp6errppslim_last;
-+#ifndef VIMAGE
- extern int icmp6_nodeinfo;
-+#endif /* !VIMAGE */
- 
- static void icmp6_errcount(struct icmp6errstat *, int, int);
- static int icmp6_rip6_input(struct mbuf **, int);
 @@ -135,6 +144,8 @@
  void
  icmp6_init(void)
@@ -13111,7 +13055,7 @@
  icmp6_input(struct mbuf **mp, int *offp, int proto)
  {
 +	INIT_VNET_INET6(curvnet);
-+	/* XXX this bellow is WRONG - MARKO */
++	/* XXX this below is WRONG - MARKO */
 +	INIT_VPROCG(TD_TO_VPROCG(curthread));
  	struct mbuf *m = *mp, *n;
  	struct ip6_hdr *ip6, *nip6;
@@ -13580,14 +13524,6 @@
  #include <net/if.h>
  #include <net/if_types.h>
  #include <net/route.h>
-@@ -92,6 +95,7 @@
- #include <netinet/in_pcb.h>
- 
- #include <netinet/ip6.h>
-+#include <netinet6/vinet6.h>
- #include <netinet6/ip6_var.h>
- #include <netinet6/nd6.h>
- #include <netinet6/mld6_var.h>
 @@ -230,6 +234,7 @@
  void
  in6_ifremloop(struct ifaddr *ifa)
@@ -13782,36 +13718,6 @@
  
  #include <net/if.h>
  #include <net/route.h>
-@@ -57,6 +58,7 @@
- #endif
- #include <netinet/ip_encap.h>
- #ifdef INET6
-+#include <netinet6/vinet6.h>
- #include <netinet/ip6.h>
- #include <netinet6/ip6_var.h>
- #include <netinet6/in6_gif.h>
-@@ -74,12 +76,15 @@
- 			 struct ifnet *);
- 
- extern  struct domain inet6domain;
--struct ip6protosw in6_gif_protosw =
--{ SOCK_RAW,	&inet6domain,	0/* IPPROTO_IPV[46] */,	PR_ATOMIC|PR_ADDR,
--  in6_gif_input, rip6_output,	0,		rip6_ctloutput,
--  0,
--  0,		0,		0,		0,
--  &rip6_usrreqs
-+struct ip6protosw in6_gif_protosw = {
-+	.pr_type =		SOCK_RAW,
-+	.pr_domain =		&inet6domain,
-+	.pr_protocol = 		0/* IPPROTO_IPV[46] */,
-+	.pr_flags = 		PR_ATOMIC|PR_ADDR,
-+	.pr_input = 		in6_gif_input,
-+	.pr_output = 		rip6_output,
-+	.pr_ctloutput = 	rip6_ctloutput,
-+	.pr_usrreqs = 		&rip6_usrreqs
- };
- 
- int
 @@ -87,6 +92,7 @@
      int family,			/* family of the packet to be encapsulate */
      struct mbuf *m)
@@ -13876,26 +13782,23 @@
  #include <sys/param.h>
  #include <sys/systm.h>
  #include <sys/malloc.h>
-@@ -40,18 +42,22 @@
+@@ -40,18 +42,19 @@
  #include <sys/kernel.h>
  #include <sys/syslog.h>
  #include <sys/md5.h>
 +#include <sys/vimage.h>
  
-+#include <net/vnet.h>
  #include <net/if.h>
  #include <net/if_dl.h>
  #include <net/if_types.h>
  #include <net/route.h>
  
-+#include <netinet/vinet.h>
  #include <netinet/in.h>
  #include <netinet/in_var.h>
  #include <netinet/if_ether.h>
  #include <netinet/in_pcb.h>
  
  #include <netinet/ip6.h>
-+#include <netinet6/vinet6.h>
  #include <netinet6/ip6_var.h>
  #include <netinet6/in6_var.h>
  #include <netinet6/in6_pcb.h>
@@ -13903,23 +13806,18 @@
  #include <netinet6/nd6.h>
  #include <netinet6/scope6_var.h>
  
--unsigned long in6_maxmtu = 0;
--
--#ifdef IP6_AUTO_LINKLOCAL
--int ip6_auto_linklocal = IP6_AUTO_LINKLOCAL;
--#else
--int ip6_auto_linklocal = 1;	/* enable by default */
--#endif
--
-+#ifndef VIMAGE
-+unsigned long in6_maxmtu;
-+int ip6_auto_linklocal;
+ unsigned long in6_maxmtu = 0;
+ 
+ #ifdef IP6_AUTO_LINKLOCAL
+ int ip6_auto_linklocal = IP6_AUTO_LINKLOCAL;
+ #else
+ int ip6_auto_linklocal = 1;	/* enable by default */
+ #endif
+ 
  struct callout in6_tmpaddrtimer_ch;
--
-+extern struct inpcbinfo ripcbinfo;
+ 
  extern struct inpcbinfo udbinfo;
--extern struct inpcbinfo ripcbinfo;
-+#endif
+ extern struct inpcbinfo ripcbinfo;
  
  static int get_rand_ifid(struct ifnet *, struct in6_addr *);
  static int generate_tmp_ifid(u_int8_t *, const u_int8_t *, u_int8_t *);
@@ -14115,7 +14013,7 @@
  
  #include <sys/param.h>
  #include <sys/systm.h>
-@@ -82,19 +83,24 @@
+@@ -82,19 +83,21 @@
  #include <sys/priv.h>
  #include <sys/proc.h>
  #include <sys/jail.h>
@@ -14123,12 +14021,10 @@
  
  #include <vm/uma.h>
  
-+#include <net/vnet.h>
  #include <net/if.h>
  #include <net/if_types.h>
  #include <net/route.h>
  
-+#include <netinet/vinet.h>
  #include <netinet/in.h>
  #include <netinet/in_var.h>
  #include <netinet/in_systm.h>
@@ -14136,7 +14032,6 @@
  #include <netinet/ip6.h>
  #include <netinet/ip_var.h>
 +
-+#include <netinet6/vinet6.h>
  #include <netinet6/ip6_var.h>
  #include <netinet6/nd6.h>
  #include <netinet/in_pcb.h>
@@ -14222,169 +14117,13 @@
  
  #include <net/if.h>
  #include <net/radix.h>
-@@ -87,6 +89,7 @@
- #ifdef RADIX_MPATH
- #include <net/radix_mpath.h>
- #endif
-+#include <net/if_gif.h>
+@@ -454,124 +450,142 @@
  
- #include <netinet/in.h>
- #include <netinet/in_systm.h>
-@@ -95,6 +98,7 @@
- #include <netinet/ip.h>
- #include <netinet/ip_var.h>
- #include <netinet/ip6.h>
-+#include <netinet6/vinet6.h>
- #include <netinet6/ip6_var.h>
- #include <netinet/icmp6.h>
- 
-@@ -144,6 +148,9 @@
- 	.pr_domain =		&inet6domain,
- 	.pr_protocol =		IPPROTO_IPV6,
- 	.pr_init =		ip6_init,
-+#ifdef VIMAGE
-+	.pr_destroy =		ip6_destroy,
-+#endif
- 	.pr_slowtimo =		frag6_slowtimo,
- 	.pr_drain =		frag6_drain,
- 	.pr_usrreqs =		&nousrreqs,
-@@ -344,26 +351,10 @@
- };
- 
- extern int in6_inithead(void **, int);
--
--struct domain inet6domain = {
--	.dom_family =		AF_INET6,
--	.dom_name =		"internet6",
--	.dom_protosw =		(struct protosw *)inet6sw,
--	.dom_protoswNPROTOSW =	(struct protosw *)
--				&inet6sw[sizeof(inet6sw)/sizeof(inet6sw[0])],
--#ifdef RADIX_MPATH
--	.dom_rtattach =		rn6_mpath_inithead,
--#else
--	.dom_rtattach =		in6_inithead,
-+#ifdef VIMAGE
-+extern int in6_detachhead(void **, int);
- #endif
--	.dom_rtoffset =		offsetof(struct sockaddr_in6, sin6_addr) << 3,
--	.dom_maxrtkey =		sizeof(struct sockaddr_in6),
--	.dom_ifattach =		in6_domifattach,
--	.dom_ifdetach =		in6_domifdetach
--};
- 
--DOMAIN_SET(inet6);
--
- /*
-  * Internet configuration info
-  */
-@@ -379,29 +370,31 @@
- #define	IPV6_SENDREDIRECTS	1
- #endif
- 
--int	ip6_forwarding = IPV6FORWARDING;	/* act as router? */
--int	ip6_sendredirects = IPV6_SENDREDIRECTS;
--int	ip6_defhlim = IPV6_DEFHLIM;
--int	ip6_defmcasthlim = IPV6_DEFAULT_MULTICAST_HOPS;
--int	ip6_accept_rtadv = 0;	/* "IPV6FORWARDING ? 0 : 1" is dangerous */
-+#ifndef VIMAGE
-+int	ip6_forwarding;		/* act as router? */
-+int	ip6_sendredirects;
-+int	ip6_defhlim;
-+int	ip6_defmcasthlim;
-+int	ip6_accept_rtadv;	/* "IPV6FORWARDING ? 0 : 1" is dangerous */
- int	ip6_maxfragpackets;	/* initialized in frag6.c:frag6_init() */
--int	ip6_maxfrags;	/* initialized in frag6.c:frag6_init() */
--int	ip6_log_interval = 5;
--int	ip6_hdrnestlimit = 15;	/* How many header options will we process? */
--int	ip6_dad_count = 1;	/* DupAddrDetectionTransmits */
--int	ip6_auto_flowlabel = 1;
--int	ip6_gif_hlim = 0;
--int	ip6_use_deprecated = 1;	/* allow deprecated addr (RFC2462 5.5.4) */
--int	ip6_rr_prune = 5;	/* router renumbering prefix
-+int	ip6_maxfrags;		/* initialized in frag6.c:frag6_init() */
-+int	ip6_log_interval;
-+int	ip6_hdrnestlimit;	/* How many header options will we process? */
-+int	ip6_dad_count;		/* DupAddrDetectionTransmits */
-+int	ip6_auto_flowlabel;
-+int     ip6_gif_hlim = 0;
-+int	ip6_use_deprecated;	/* allow deprecated addr (RFC2462 5.5.4) */
-+int	ip6_rr_prune;		/* router renumbering prefix
- 				 * walk list every 5 sec. */
--int	ip6_mcast_pmtu = 0;	/* enable pMTU discovery for multicast? */
--int	ip6_v6only = 1;
-+int	ip6_mcast_pmtu;		/* enable pMTU discovery for multicast? */
-+int	ip6_v6only;
- 
--int	ip6_keepfaith = 0;
--time_t	ip6_log_time = (time_t)0L;
-+int	ip6_keepfaith;
-+time_t	ip6_log_time;
- #ifdef IPSTEALTH
--int	ip6stealth = 0;
-+int	ip6stealth;
- #endif
-+#endif /* !VIMAGE */
- 
- /* icmp6 */
- /*
-@@ -409,8 +402,10 @@
-  * XXX: what if we don't define INET? Should we define pmtu6_expire
-  * or so? (jinmei@kame.net 19990310)
-  */
--int pmtu_expire = 60*10;
--int pmtu_probe = 60*2;
-+#ifndef VIMAGE
-+int pmtu_expire;
-+int pmtu_probe;
-+#endif
- 
- /* raw IP6 parameters */
- /*
-@@ -419,20 +414,21 @@
- #define	RIPV6SNDQ	8192
- #define	RIPV6RCVQ	8192
- 
--u_long	rip6_sendspace = RIPV6SNDQ;
--u_long	rip6_recvspace = RIPV6RCVQ;
-+#ifndef VIMAGE
-+u_long	rip6_sendspace;
-+u_long	rip6_recvspace;
- 
- /* ICMPV6 parameters */
--int	icmp6_rediraccept = 1;		/* accept and process redirects */
--int	icmp6_redirtimeout = 10 * 60;	/* 10 minutes */
--int	icmp6errppslim = 100;		/* 100pps */
-+int	icmp6_rediraccept;	/* accept and process redirects */
-+int	icmp6_redirtimeout;
-+int	icmp6errppslim;	
- /* control how to respond to NI queries */
--int	icmp6_nodeinfo = (ICMP6_NODEINFO_FQDNOK|ICMP6_NODEINFO_NODEADDROK);
-+int	icmp6_nodeinfo;
- 
- /* UDP on IP6 parameters */
--int	udp6_sendspace = 9216;		/* really max datagram size */
--int	udp6_recvspace = 40 * (1024 + sizeof(struct sockaddr_in6));
--					/* 40 1K datagrams */
-+int	udp6_sendspace;		/* really max datagram size */
-+int	udp6_recvspace;
-+#endif /* !VIMAGE */
- 
- /*
-  * sysctl related items.
-@@ -454,124 +450,201 @@
- 
  /* net.inet6.ip6 */
  static int
-+#ifdef VIMAGE
-+sysctl_ip6_temppltime(SYSCTL_HANDLER_V_ARGS)
-+#else
  sysctl_ip6_temppltime(SYSCTL_HANDLER_ARGS)
-+#endif
  {
 +	INIT_VNET_INET6(curvnet);
-+#ifdef VIMAGE
-+	SYSCTL_RESOLVE_V_ARG1();
-+#endif
  	int error = 0;
  	int old;
  
@@ -14406,16 +14145,9 @@
  }
  
  static int
-+#ifdef VIMAGE
-+sysctl_ip6_tempvltime(SYSCTL_HANDLER_V_ARGS)
-+#else
  sysctl_ip6_tempvltime(SYSCTL_HANDLER_ARGS)
-+#endif
  {
 +	INIT_VNET_INET6(curvnet);
-+#ifdef VIMAGE
-+	SYSCTL_RESOLVE_V_ARG1();
-+#endif
  	int error = 0;
  	int old;
  
@@ -14598,48 +14330,6 @@
 +SYSCTL_V_INT(V_NET, vnet_inet6, _net_inet6_icmp6, ICMPV6CTL_ND6_DEBUG,
 +	nd6_debug, CTLFLAG_RW,	nd6_debug,		0, "");
 +
-+static void
-+ip6_dom_init(void)
-+{
-+	INIT_VNET_INET6(curvnet);
-+
-+	V_ip6_forwarding = IPV6FORWARDING;
-+	V_ip6_sendredirects = IPV6_SENDREDIRECTS;
-+	V_ip6_defhlim = IPV6_DEFHLIM;
-+	V_ip6_defmcasthlim = IPV6_DEFAULT_MULTICAST_HOPS;
-+	V_ip6_accept_rtadv = 0;
-+	V_ip6_log_interval = 5;
-+	V_ip6_hdrnestlimit = 15;
-+	V_ip6_dad_count = 1;
-+	V_ip6_auto_flowlabel = 1;
-+	V_ip6_use_deprecated = 1;
-+	V_ip6_rr_prune = 5;
-+	V_ip6_mcast_pmtu = 0;
-+	V_ip6_v6only = 1;
-+	V_ip6_keepfaith = 0;
-+	V_ip6_log_time = (time_t)0L;
-+#ifdef IPSTEALTH
-+	V_ip6stealth = 0;
-+#endif
-+	V_pmtu_expire = 60*10;
-+	V_pmtu_probe = 60*2;
-+	V_rip6_sendspace = RIPV6SNDQ;
-+	V_rip6_recvspace = RIPV6RCVQ;
-+
-+	/* ICMPV6 parameters */
-+	V_icmp6_rediraccept = 1;
-+	V_icmp6_redirtimeout = 10 * 60;	/* 10 minutes */
-+	V_icmp6errppslim = 100;		/* 100pps */
-+	/* control how to respond to NI queries */
-+	V_icmp6_nodeinfo = (ICMP6_NODEINFO_FQDNOK|ICMP6_NODEINFO_NODEADDROK);
-+
-+	/* UDP on IP6 parameters */
-+	V_udp6_sendspace = 9216;	/* really max datagram size */
-+	V_udp6_recvspace = 40 * (1024 + sizeof(struct sockaddr_in6));
-+					/* 40 1K datagrams */
-+
-+}
-+
 +struct domain inet6domain = {
 +	.dom_family =		AF_INET6,
 +	.dom_name =		"internet6",
@@ -14647,9 +14337,6 @@
 +	.dom_protoswNPROTOSW =	(struct protosw *)
 +				&inet6sw[sizeof(inet6sw)/sizeof(inet6sw[0])],
 +	.dom_rtattach =		in6_inithead,
-+#ifdef VIMAGE
-+	.dom_rtdetach =		in6_detachhead,
-+#endif
 +	.dom_rtoffset =		offsetof(struct sockaddr_in6, sin6_addr) << 3,
 +	.dom_maxrtkey =		sizeof(struct sockaddr_in6),
 +	.dom_ifattach =		in6_domifattach,
@@ -14671,44 +14358,27 @@
  #include <sys/param.h>
  #include <sys/systm.h>
  #include <sys/kernel.h>
-@@ -85,13 +87,17 @@
+@@ -85,13 +87,14 @@
  #include <sys/mbuf.h>
  #include <sys/syslog.h>
  #include <sys/callout.h>
 +#include <sys/vimage.h>
  
-+#include <net/vnet.h>
  #include <net/if.h>
  #include <net/route.h>
  #include <netinet/in.h>
  #include <netinet/ip_var.h>
  #include <netinet/in_var.h>
  
-+#include <netinet6/vinet6.h>
-+
  #include <netinet/ip6.h>
  #include <netinet6/ip6_var.h>
  
-@@ -104,6 +110,9 @@
- #include <netinet/tcp_var.h>
- 
- extern int	in6_inithead(void **head, int off);
-+#ifdef VIMAGE
-+extern int	in6_detachhead(void **head, int off);
-+#endif
- 
- #define RTPRF_OURS		RTF_PROTO3	/* set on routes we manage */
- 
-@@ -321,20 +330,25 @@
+@@ -321,20 +330,23 @@
  }
  
  #define RTQ_TIMEOUT	60*10	/* run no less than once every ten minutes */
--static int rtq_timeout = RTQ_TIMEOUT;
--static struct callout rtq_timer;
-+#ifndef VIMAGE
-+static int rtq_timeout6;
-+static struct callout rtq_timer6;
-+#endif
+ static int rtq_timeout = RTQ_TIMEOUT;
+ static struct callout rtq_timer;
  
  static void
  in6_rtqtimo(void *rock)
@@ -14748,16 +14418,6 @@
  }
  
  /*
-@@ -380,7 +395,9 @@
- 	struct radix_node_head *rnh;
- 	time_t nextstop;
- };
-+#ifndef VIMAGE
- static struct callout rtq_mtutimer;
-+#endif
- 
- static int
- in6_mtuexpire(struct radix_node *rn, void *rock)
 @@ -409,7 +426,10 @@
  static void
  in6_mtutimo(void *rock)
@@ -14797,7 +14457,7 @@
  	struct radix_node_head *rnh;
  
  	if (!rn_inithead(head, offsetof(struct sockaddr_in6, sin6_addr) << 3))
-@@ -465,13 +488,26 @@
+@@ -465,13 +488,14 @@
  	if (off == 0)		/* See above */
  		return 1;	/* only do the rest for the real thing */
  
@@ -14811,23 +14471,11 @@
 -	callout_init(&rtq_mtutimer, CALLOUT_MPSAFE);
 -	in6_mtutimo(rnh);	/* kick off timeout first time */
 +	callout_init(&V_rtq_timer6, CALLOUT_MPSAFE);
++	in6_rtqtimo(rnh);	/* kick off timeout first time */
 +	callout_init(&V_rtq_mtutimer, CALLOUT_MPSAFE);
-+	in6_rtqtimo(curvnet);	/* kick off timeout first time */
-+	in6_mtutimo(curvnet);	/* kick off timeout first time */
-+	return 1;
-+}
-+
-+#ifdef VIMAGE
-+int
-+in6_detachhead(void **head, int off)
-+{
-+	INIT_VNET_INET6(curvnet);
-+
-+	callout_drain(&V_rtq_timer6);
-+	callout_drain(&V_rtq_mtutimer);
++	in6_mtutimo(rnh);	/* kick off timeout first time */
  	return 1;
  }
-+#endif
 Index: sys/netinet6/in6_src.c
 ===========================================================================
 --- sys/netinet6/in6_src.c	2008/06/02 18:20:02	#48
@@ -14840,42 +14488,27 @@
  
  #include <sys/param.h>
  #include <sys/systm.h>
-@@ -82,18 +83,23 @@
+@@ -82,18 +83,20 @@
  #include <sys/time.h>
  #include <sys/kernel.h>
  #include <sys/sx.h>
 +#include <sys/vimage.h>
  
-+#include <net/vnet.h>
  #include <net/if.h>
  #include <net/route.h>
  #ifdef RADIX_MPATH
  #include <net/radix_mpath.h>
  #endif
  
-+#include <netinet/vinet.h>
  #include <netinet/in.h>
  #include <netinet/in_var.h>
  #include <netinet/in_systm.h>
  #include <netinet/ip.h>
  #include <netinet/in_pcb.h>
 +
-+#include <netinet6/vinet6.h>
  #include <netinet6/in6_var.h>
  #include <netinet/ip6.h>
  #include <netinet6/in6_pcb.h>
-@@ -115,9 +121,11 @@
- #define	ADDRSEL_XUNLOCK()	sx_xunlock(&addrsel_sxlock)
- 
- #define ADDR_LABEL_NOTAPP (-1)
-+#ifndef VIMAGE
- struct in6_addrpolicy defaultaddrpolicy;
- 
- int ip6_prefer_tempaddr = 0;
-+#endif
- 
- static int selectroute __P((struct sockaddr_in6 *, struct ip6_pktopts *,
- 	struct ip6_moptions *, struct route_in6 *, struct ifnet **,
 @@ -142,9 +150,9 @@
   * an entry to the caller for later use.
   */
@@ -15022,12 +14655,12 @@
  		lastport = &pcbinfo->ipi_lastport;
  	}
  	/*
-@@ -851,26 +864,34 @@
+@@ -851,26 +864,28 @@
  void
  addrsel_policy_init(void)
  {
--	ADDRSEL_LOCK_INIT();
--	ADDRSEL_SXLOCK_INIT();
+ 	ADDRSEL_LOCK_INIT();
+ 	ADDRSEL_SXLOCK_INIT();
 +	INIT_VNET_INET6(curvnet);
  
  	init_policy_queue();
@@ -15037,14 +14670,6 @@
 -	defaultaddrpolicy.label = ADDR_LABEL_NOTAPP;
 +	bzero(&V_defaultaddrpolicy, sizeof(V_defaultaddrpolicy));
 +	V_defaultaddrpolicy.label = ADDR_LABEL_NOTAPP;
-+
-+#ifdef VIMAGE
-+	if (!IS_DEFAULT_VNET(curvnet))
-+		return;
-+#endif
-+
-+	ADDRSEL_LOCK_INIT();
-+	ADDRSEL_SXLOCK_INIT();
  }
  
  static struct in6_addrpolicy *
@@ -15066,13 +14691,10 @@
  	struct in6_addrpolicy ape_policy;
  };
  
--TAILQ_HEAD(addrsel_policyhead, addrsel_policyent);
-+#ifndef VIMAGE
-+TAILQ_HEAD(, addrsel_policyent) addrsel_policytab;
-+#endif
+ TAILQ_HEAD(addrsel_policyhead, addrsel_policyent);
+ 
+ struct addrsel_policyhead addrsel_policytab;
  
--struct addrsel_policyhead addrsel_policytab;
--
  static void
  init_policy_queue(void)
  {
@@ -15161,22 +14783,6 @@
  		matchlen = 0;
  
  		pol = &pent->ape_policy;
-Index: sys/netinet6/in6_var.h
-===========================================================================
---- sys/netinet6/in6_var.h	2008/06/02 18:20:02	#25
-+++ sys/netinet6/in6_var.h	2008/06/02 18:20:02
-@@ -470,9 +470,11 @@
- #endif
- 
- #ifdef _KERNEL
-+#ifndef VIMAGE
- extern struct in6_ifaddr *in6_ifaddr;
- 
- extern struct icmp6stat icmp6stat;
-+#endif
- #define in6_ifstat_inc(ifp, tag) \
- do {								\
- 	if (ifp)						\
 Index: sys/netinet6/ip6_forward.c
 ===========================================================================
 --- sys/netinet6/ip6_forward.c	2008/06/02 18:20:02	#31
@@ -15197,29 +14803,6 @@
  
  #include <net/if.h>
  #include <net/route.h>
-@@ -58,6 +60,7 @@
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
- #include <netinet/ip_var.h>
-+#include <netinet6/vinet6.h>
- #include <netinet6/in6_var.h>
- #include <netinet/ip6.h>
- #include <netinet6/ip6_var.h>
-@@ -71,11 +74,14 @@
- #include <netipsec/ipsec.h>
- #include <netipsec/ipsec6.h>
- #include <netipsec/key.h>
-+#include <netipsec/vipsec.h>
- #endif /* IPSEC */
- 
- #include <netinet6/ip6protosw.h>
- 
-+#ifndef VIMAGE
- struct	route_in6 ip6_forward_rt;
-+#endif
- 
- /*
-  * Forward a packet.  If some error occurs return the sender
 @@ -92,6 +98,7 @@
  void
  ip6_forward(struct mbuf *m, int srcrt)
@@ -15461,117 +15044,22 @@
  
  #include <sys/param.h>
  #include <sys/systm.h>
-@@ -80,13 +81,16 @@
+@@ -80,13 +81,14 @@
  #include <sys/time.h>
  #include <sys/kernel.h>
  #include <sys/syslog.h>
 +#include <sys/vimage.h>
  
-+#include <net/vnet.h>
  #include <net/if.h>
  #include <net/if_types.h>
  #include <net/if_dl.h>
  #include <net/route.h>
  #include <net/netisr.h>
  #include <net/pfil.h>
-+#include <net/if_gif.h>
  
  #include <netinet/in.h>
  #include <netinet/in_systm.h>
-@@ -95,10 +99,13 @@
- #include <netinet/ip_icmp.h>
- #endif /* INET */
- #include <netinet/ip6.h>
-+#include <netinet/ip6.h>
- #include <netinet6/in6_var.h>
- #include <netinet6/ip6_var.h>
- #include <netinet/in_pcb.h>
- #include <netinet/icmp6.h>
-+
-+#include <netinet6/vinet6.h>
- #include <netinet6/scope6_var.h>
- #include <netinet6/in6_ifattach.h>
- #include <netinet6/nd6.h>
-@@ -115,6 +122,7 @@
- 
- u_char ip6_protox[IPPROTO_MAX];
- static struct ifqueue ip6intrq;
-+#ifndef VIMAGE
- static int ip6qmaxlen = IFQ_MAXLEN;
- struct in6_ifaddr *in6_ifaddr;
- 
-@@ -125,10 +133,13 @@
- int ip6_sourcecheck_interval;		/* XXX */
- 
- int ip6_ours_check_algorithm;
-+#endif /* !VIMAGE */
- 
- struct pfil_head inet6_pfil_hook;
- 
-+#ifndef VIMAGE
- struct ip6stat ip6stat;
-+#endif
- 
- static void ip6_init2(void *);
- static struct ip6aux *ip6_setdstifaddr(struct mbuf *, struct in6_ifaddr *);
-@@ -137,6 +148,19 @@
- static struct mbuf *ip6_pullexthdr(struct mbuf *, size_t, int);
- #endif
- 
-+#ifdef VIMAGE
-+static void vnet_inet6_register(void);
-+ 
-+VNET_MOD_DECLARE(INET6, inet6, NULL, NULL, INET, NULL)
-+ 
-+static void vnet_inet6_register()
-+{
-+        vnet_mod_register(&vnet_inet6_modinfo);
-+}
-+ 
-+SYSINIT(inet6, SI_SUB_PROTO_BEGIN, SI_ORDER_FIRST, vnet_inet6_register, 0);
-+#endif /* VIMAGE */
-+
- /*
-  * IP6 initialization: fill in IP6 protocol switch table.
-  * All protocols not implemented in kernel go to raw IP6 protocol handler.
-@@ -144,9 +168,36 @@
- void
- ip6_init(void)
- {
-+	INIT_VNET_INET6(curvnet);
- 	struct ip6protosw *pr;
- 	int i;
- 
-+	V_ip6_prefer_tempaddr = 0;
-+
-+	V_ip6qmaxlen = IFQ_MAXLEN;
-+	V_ip6_forward_srcrt = 0;          /* XXX */
-+	V_ip6_sourcecheck = 0;            /* XXX */
-+	V_ip6_sourcecheck_interval = 0;       /* XXX */
-+
-+	V_ip6_ours_check_algorithm = 0;
-+
-+#ifdef IP6_AUTO_LINKLOCAL
-+	V_ip6_auto_linklocal = IP6_AUTO_LINKLOCAL;
-+#else
-+	V_ip6_auto_linklocal = 1;	/* enable by default */
-+#endif
-+
-+	scope6_init();
-+	addrsel_policy_init();
-+	nd6_init();
-+	frag6_init();
-+
-+#ifdef VIMAGE
-+	/* Skip global initialization stuff for non-default instances. */
-+	if (!IS_DEFAULT_VNET(curvnet))
-+		return;
-+#endif
-+
- #ifdef DIAGNOSTIC
- 	if (sizeof(struct protosw) != sizeof(struct ip6protosw))
- 		panic("sizeof(protosw) != sizeof(ip6protosw)");
-@@ -178,41 +229,53 @@
+@@ -178,41 +229,44 @@
  		printf("%s: WARNING: unable to register pfil hook, "
  			"error %d\n", __func__, i);
  
@@ -15579,24 +15067,13 @@
 +	ip6intrq.ifq_maxlen = V_ip6qmaxlen;
  	mtx_init(&ip6intrq.ifq_mtx, "ip6_inq", NULL, MTX_DEF);
  	netisr_register(NETISR_IPV6, ip6_input, &ip6intrq, 0);
--	scope6_init();
--	addrsel_policy_init();
--	nd6_init();
--	frag6_init();
+ 	scope6_init();
+ 	addrsel_policy_init();
+ 	nd6_init();
+ 	frag6_init();
 -	ip6_desync_factor = arc4random() % MAX_TEMP_DESYNC_FACTOR;
 +	V_ip6_desync_factor = arc4random() % MAX_TEMP_DESYNC_FACTOR;
-+}
-+
-+#ifdef VIMAGE
-+void
-+ip6_destroy()
-+{
-+	INIT_VNET_INET6(curvnet);
-+
-+	nd6_destroy();
-+	callout_drain(&V_in6_tmpaddrtimer_ch);
  }
-+#endif
  
  static void
  ip6_init2(void *dummy)
@@ -15626,9 +15103,7 @@
  /* This must be after route_init(), which is now SI_ORDER_THIRD */
  SYSINIT(netinet6init2, SI_SUB_PROTO_DOMAIN, SI_ORDER_MIDDLE, ip6_init2, NULL);
  
-+#ifndef VIMAGE
  extern struct	route_in6 ip6_forward_rt;
-+#endif
  
  void
  ip6_input(struct mbuf *m)
@@ -16116,22 +15591,6 @@
  
  #include <net/if.h>
  #include <net/route.h>
-@@ -61,6 +63,7 @@
- #include <netipsec/ipsec6.h>
- #include <netipsec/xform.h>
- #include <netipsec/key.h>
-+#include <netipsec/vipsec.h>
- #ifdef IPSEC_DEBUG
- #include <netipsec/key_debug.h>
- #else
-@@ -68,6 +71,7 @@
- #endif
- #endif /*IPSEC*/
- 

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200806062104.m56L4Ccp098763>