Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Aug 2008 23:15:07 GMT
From:      Julian Elischer <julian@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 148303 for review
Message-ID:  <200808242315.m7ONF7Lm081212@repoman.freebsd.org>

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

Change 148303 by julian@julian_trafmon1 on 2008/08/24 23:14:23

	Move the contents of vimage3 down to vimage3 in preparation for
	the next set of commits

Affected files ...

.. //depot/projects/vimage-commit2/src/sys/amd64/conf/GENERIC_NODEBUG#3 branch
.. //depot/projects/vimage-commit2/src/sys/compat/linprocfs/linprocfs.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/linux/linux_ioctl.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/linux/linux_misc.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/ddb/db_textdump.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/firewire/firewire.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/cd9660/cd9660_rrip.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/conf/GENERIC_NODEBUG#3 branch
.. //depot/projects/vimage-commit2/src/sys/kern/kern_jail.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_mib.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_uuid.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_xxx.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if.c#12 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_ethersubr.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_faith.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_gif.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_gif.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_gre.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_loop.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_mib.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_stf.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_vlan.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/net/raw_cb.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/net/raw_usrreq.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/net/route.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/net/rtsock.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/net/vnet.h#1 branch
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netgraph/netgraph.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/netgraph/ng_base.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/netgraph/ng_eiface.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netgraph/ng_iface.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netgraph/vnetgraph.h#1 branch
.. //depot/projects/vimage-commit2/src/sys/netinet/if_ether.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/igmp.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/in.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/in.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/in_gif.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/in_mcast.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/in_pcb.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/in_rmx.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip6.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_carp.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_fastfwd.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_fw.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_fw2.c#13 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_fw_nat.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_icmp.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_input.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_ipsec.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_mroute.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_options.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_output.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/raw_ip.c#11 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_hostcache.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_input.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_output.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_reass.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_sack.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_subr.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_syncache.c#14 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_timer.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_timewait.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_usrreq.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/udp_usrreq.c#14 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/vinet.h#1 branch
.. //depot/projects/vimage-commit2/src/sys/netinet6/dest6.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/frag6.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/icmp6.c#11 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/in6.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/in6_gif.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/in6_ifattach.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/in6_pcb.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/in6_proto.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/in6_rmx.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/in6_src.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/ip6_forward.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/ip6_input.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/ip6_ipsec.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/ip6_mroute.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/ip6_output.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/mld6.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/nd6.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/nd6_nbr.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/nd6_rtr.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/raw_ip6.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/route6.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/scope6.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/udp6_usrreq.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/vinet6.h#1 branch
.. //depot/projects/vimage-commit2/src/sys/netipsec/ipsec.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/netipsec/ipsec.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/netipsec/ipsec_input.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netipsec/ipsec_mbuf.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netipsec/ipsec_output.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netipsec/key.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/netipsec/keysock.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netipsec/vipsec.h#1 branch
.. //depot/projects/vimage-commit2/src/sys/netipsec/xform_ah.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netipsec/xform_esp.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/netipsec/xform_ipcomp.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netipsec/xform_ipip.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsclient/nfs_diskless.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsclient/nfs_vfsops.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsclient/nfs_vnops.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/rpc/authunix_prot.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/vimage.h#13 integrate

Differences ...

==== //depot/projects/vimage-commit2/src/sys/compat/linprocfs/linprocfs.c#7 (text+ko) ====

@@ -1000,6 +1000,7 @@
 static int
 linprocfs_donetdev(PFS_FILL_ARGS)
 {
+	INIT_VNET_NET(TD_TO_VNET(curthread));
 	char ifname[16]; /* XXX LINUX_IFNAMSIZ */
 	struct ifnet *ifp;
 

==== //depot/projects/vimage-commit2/src/sys/compat/linux/linux_ioctl.c#10 (text+ko) ====

@@ -2051,6 +2051,7 @@
 int
 linux_ifname(struct ifnet *ifp, char *buffer, size_t buflen)
 {
+	INIT_VNET_NET(ifp->if_vnet);
 	struct ifnet *ifscan;
 	int ethno;
 
@@ -2084,6 +2085,7 @@
 static struct ifnet *
 ifname_linux_to_bsd(const char *lxname, char *bsdname)
 {
+	INIT_VNET_NET(TD_TO_VNET(curthread));
 	struct ifnet *ifp;
 	int len, unit;
 	char *ep;
@@ -2124,6 +2126,7 @@
 static int
 linux_ifconf(struct thread *td, struct ifconf *uifc)
 {
+	INIT_VNET_NET(TD_TO_VNET(td));
 #ifdef COMPAT_LINUX32
 	struct l_ifconf ifc;
 #else

==== //depot/projects/vimage-commit2/src/sys/compat/linux/linux_misc.c#8 (text+ko) ====

@@ -714,6 +714,7 @@
 int
 linux_newuname(struct thread *td, struct linux_newuname_args *args)
 {
+	INIT_VPROCG(TD_TO_VPROCG(td));
 	struct l_new_utsname utsname;
 	char osname[LINUX_MAX_UTSNAME];
 	char osrelease[LINUX_MAX_UTSNAME];

==== //depot/projects/vimage-commit2/src/sys/ddb/db_textdump.c#6 (text+ko) ====

@@ -184,6 +184,7 @@
 mkdumpheader(struct kerneldumpheader *kdh, uint32_t archver,
     uint64_t dumplen, uint32_t blksz)
 {
+	INIT_VPROCG(TD_TO_VPROCG(&thread0));
 
 	bzero(kdh, sizeof(*kdh));
 	strncpy(kdh->magic, TEXTDUMPMAGIC, sizeof(kdh->magic));

==== //depot/projects/vimage-commit2/src/sys/dev/firewire/firewire.c#6 (text+ko) ====

@@ -678,6 +678,7 @@
 static void
 fw_reset_crom(struct firewire_comm *fc)
 {
+	INIT_VPROCG(TD_TO_VPROCG(curthread)); /* XXX */
 	struct crom_src_buf *buf;
 	struct crom_src *src;
 	struct crom_chunk *root;

==== //depot/projects/vimage-commit2/src/sys/fs/cd9660/cd9660_rrip.c#8 (text+ko) ====

@@ -114,6 +114,7 @@
 	ISO_RRIP_SLINK	*p;
 	ISO_RRIP_ANALYZE *ana;
 {
+	INIT_VPROCG(TD_TO_VPROCG(curthread));
 	ISO_RRIP_SLINK_COMPONENT *pcomp;
 	ISO_RRIP_SLINK_COMPONENT *pcompe;
 	int len, wlen, cont;
@@ -224,6 +225,7 @@
 	ISO_RRIP_ALTNAME *p;
 	ISO_RRIP_ANALYZE *ana;
 {
+	INIT_VPROCG(TD_TO_VPROCG(curthread));
 	char *inbuf;
 	int wlen;
 	int cont;

==== //depot/projects/vimage-commit2/src/sys/kern/kern_jail.c#9 (text+ko) ====

@@ -475,6 +475,7 @@
 void
 getcredhostname(struct ucred *cred, char *buf, size_t size)
 {
+	INIT_VPROCG(cred->cr_vimage->v_procg);
 
 	if (jailed(cred)) {
 		mtx_lock(&cred->cr_prison->pr_mtx);

==== //depot/projects/vimage-commit2/src/sys/kern/kern_mib.c#7 (text+ko) ====

@@ -219,6 +219,7 @@
 static int
 sysctl_hostname(SYSCTL_HANDLER_ARGS)
 {
+	INIT_VPROCG(TD_TO_VPROCG(req->td));
 	struct prison *pr;
 	char tmphostname[MAXHOSTNAMELEN];
 	int error;

==== //depot/projects/vimage-commit2/src/sys/kern/kern_uuid.c#7 (text+ko) ====

@@ -88,6 +88,7 @@
 static void
 uuid_node(uint16_t *node)
 {
+	INIT_VNET_NET(curvnet);
 	struct ifnet *ifp;
 	struct ifaddr *ifa;
 	struct sockaddr_dl *sdl;

==== //depot/projects/vimage-commit2/src/sys/kern/kern_xxx.c#8 (text+ko) ====

@@ -246,6 +246,7 @@
 	struct thread *td;
 	struct getdomainname_args *uap;
 {
+	INIT_VPROCG(TD_TO_VPROCG(td));
 	char tmpdomainname[MAXHOSTNAMELEN];
 	int domainnamelen;
 
@@ -271,6 +272,7 @@
 	struct thread *td;
 	struct setdomainname_args *uap;
 {
+	INIT_VPROCG(TD_TO_VPROCG(td));
 	char tmpdomainname[MAXHOSTNAMELEN];
 	int error, domainnamelen;
 

==== //depot/projects/vimage-commit2/src/sys/net/if.c#12 (text+ko) ====

@@ -57,6 +57,7 @@
 #include <sys/domain.h>
 #include <sys/jail.h>
 #include <sys/vimage.h>
+
 #include <machine/stdarg.h>
 
 #include <net/if.h>
@@ -279,6 +280,7 @@
 static int
 netkqfilter(struct cdev *dev, struct knote *kn)
 {
+	INIT_VNET_NET(curvnet);
 	struct knlist *klist;
 	struct ifnet *ifp;
 	int idx;
@@ -383,6 +385,7 @@
 struct ifnet*
 if_alloc(u_char type)
 {
+	INIT_VNET_NET(curvnet);
 	struct ifnet *ifp;
 
 	ifp = malloc(sizeof(struct ifnet), M_IFNET, M_WAITOK|M_ZERO);
@@ -445,6 +448,7 @@
 void
 if_free_type(struct ifnet *ifp, u_char type)
 {
+	INIT_VNET_NET(curvnet); /* ifp->if_vnet can be NULL here ! */
 
 	if (ifp != ifnet_byindex(ifp->if_index)) {
 		if_printf(ifp, "%s: value was not if_alloced, skipping\n",
@@ -482,6 +486,7 @@
 void
 if_attach(struct ifnet *ifp)
 {
+	INIT_VNET_NET(curvnet);
 	unsigned socksize, ifasize;
 	int namelen, masklen;
 	struct sockaddr_dl *sdl;
@@ -595,6 +600,7 @@
 static void
 if_attachdomain(void *dummy)
 {
+	INIT_VNET_NET(curvnet);
 	struct ifnet *ifp;
 	int s;
 
@@ -705,6 +711,7 @@
 void
 if_detach(struct ifnet *ifp)
 {
+	INIT_VNET_NET(ifp->if_vnet);
 	struct ifaddr *ifa;
 	struct radix_node_head	*rnh;
 	int s;
@@ -820,6 +827,7 @@
 int
 if_addgroup(struct ifnet *ifp, const char *groupname)
 {
+	INIT_VNET_NET(ifp->if_vnet);
 	struct ifg_list		*ifgl;
 	struct ifg_group	*ifg = NULL;
 	struct ifg_member	*ifgm;
@@ -889,6 +897,7 @@
 int
 if_delgroup(struct ifnet *ifp, const char *groupname)
 {
+	INIT_VNET_NET(ifp->if_vnet);
 	struct ifg_list		*ifgl;
 	struct ifg_member	*ifgm;
 
@@ -978,6 +987,7 @@
 static int
 if_getgroupmembers(struct ifgroupreq *data)
 {
+	INIT_VNET_NET(curvnet);
 	struct ifgroupreq	*ifgr = data;
 	struct ifg_group	*ifg;
 	struct ifg_member	*ifgm;
@@ -1087,6 +1097,7 @@
 struct ifaddr *
 ifa_ifwithaddr(struct sockaddr *addr)
 {
+	INIT_VNET_NET(curvnet);
 	struct ifnet *ifp;
 	struct ifaddr *ifa;
 
@@ -1117,6 +1128,7 @@
 struct ifaddr *
 ifa_ifwithbroadaddr(struct sockaddr *addr)
 {
+	INIT_VNET_NET(curvnet);
 	struct ifnet *ifp;
 	struct ifaddr *ifa;
 
@@ -1144,6 +1156,7 @@
 struct ifaddr *
 ifa_ifwithdstaddr(struct sockaddr *addr)
 {
+	INIT_VNET_NET(curvnet);
 	struct ifnet *ifp;
 	struct ifaddr *ifa;
 
@@ -1172,6 +1185,7 @@
 struct ifaddr *
 ifa_ifwithnet(struct sockaddr *addr)
 {
+	INIT_VNET_NET(curvnet);
 	struct ifnet *ifp;
 	struct ifaddr *ifa;
 	struct ifaddr *ifa_maybe = (struct ifaddr *) 0;
@@ -1415,6 +1429,7 @@
 	struct ifnet *ifp = (struct ifnet *)arg;
 	int link_state = ifp->if_link_state;
 	int link;
+	CURVNET_SET(ifp->if_vnet);
 
 	/* Notify that the link state has changed. */
 	rt_ifmsg(ifp);
@@ -1451,6 +1466,7 @@
 	if (log_link_state_change)
 		log(LOG_NOTICE, "%s: link state changed to %s\n", ifp->if_xname,
 		    (link_state == LINK_STATE_UP) ? "UP" : "DOWN" );
+	CURVNET_RESTORE();
 }
 
 /*
@@ -1517,12 +1533,15 @@
 	int s = splimp();
 
 	IFNET_RLOCK();
+	VNET_ITERLOOP_BEGIN();
+	INIT_VNET_NET(curvnet);
 	TAILQ_FOREACH(ifp, &V_ifnet, if_link) {
 		if (ifp->if_timer == 0 || --ifp->if_timer)
 			continue;
 		if (ifp->if_watchdog)
 			(*ifp->if_watchdog)(ifp);
 	}
+	VNET_ITERLOOP_END();
 	IFNET_RUNLOCK();
 	splx(s);
 	timeout(if_slowtimo, (void *)0, hz / IFNET_SLOWHZ);
@@ -1535,6 +1554,7 @@
 struct ifnet *
 ifunit(const char *name)
 {
+	INIT_VNET_NET(curvnet);
 	struct ifnet *ifp;
 
 	IFNET_RLOCK();
@@ -2107,6 +2127,7 @@
 static int
 ifconf(u_long cmd, caddr_t data)
 {
+	INIT_VNET_NET(curvnet);
 	struct ifconf *ifc = (struct ifconf *)data;
 #ifdef __amd64__
 	struct ifconf32 *ifc32 = (struct ifconf32 *)data;
@@ -2466,6 +2487,7 @@
 	int lastref;
 #ifdef INVARIANTS
 	struct ifnet *oifp;
+	INIT_VNET_NET(ifp->if_vnet);
 
 	IFNET_RLOCK();
 	TAILQ_FOREACH(oifp, &V_ifnet, if_link)

==== //depot/projects/vimage-commit2/src/sys/net/if.h#3 (text+ko) ====

@@ -457,4 +457,8 @@
 #include <net/if_var.h>
 #endif
 
+#ifdef _KERNEL
+#include <net/vnet.h>
+#endif
+
 #endif /* !_NET_IF_H_ */

==== //depot/projects/vimage-commit2/src/sys/net/if_ethersubr.c#6 (text+ko) ====

@@ -388,6 +388,7 @@
 {
 	int error;
 #if defined(INET) || defined(INET6)
+	INIT_VNET_NET(ifp->if_vnet);
 	struct ip_fw *rule = ip_dn_claim_rule(m);
 
 	if (IPFW_LOADED && V_ether_ipfw != 0) {
@@ -419,6 +420,7 @@
 ether_ipfw_chk(struct mbuf **m0, struct ifnet *dst,
 	struct ip_fw **rule, int shared)
 {
+	INIT_VNET_IPFW(dst->if_vnet);
 	struct ether_header *eh;
 	struct ether_header save_eh;
 	struct mbuf *m;
@@ -711,6 +713,7 @@
 	KASSERT(ifp != NULL, ("%s: NULL interface pointer", __func__));
 
 #if defined(INET) || defined(INET6)
+	INIT_VNET_NET(ifp->if_vnet);
 	/*
 	 * Allow dummynet and/or ipfw to claim the frame.
 	 * Do not do this for PROMISC frames in case we are re-entered.

==== //depot/projects/vimage-commit2/src/sys/net/if_faith.c#6 (text+ko) ====

@@ -324,6 +324,7 @@
 faithprefix(in6)
 	struct in6_addr *in6;
 {
+	INIT_VNET_INET6(curvnet);
 	struct rtentry *rt;
 	struct sockaddr_in6 sin6;
 	int ret;

==== //depot/projects/vimage-commit2/src/sys/net/if_gif.c#6 (text+ko) ====

@@ -154,6 +154,7 @@
 	int unit;
 	caddr_t params;
 {
+	INIT_VNET_GIF(curvnet);
 	struct gif_softc *sc;
 
 	sc = malloc(sizeof(struct gif_softc), M_GIF, M_WAITOK | M_ZERO);
@@ -364,6 +365,7 @@
 	struct sockaddr *dst;
 	struct rtentry *rt;	/* added in net2 */
 {
+	INIT_VNET_GIF(ifp->if_vnet);
 	struct gif_softc *sc = ifp->if_softc;
 	struct m_tag *mtag;
 	int error = 0;
@@ -854,6 +856,7 @@
 	struct sockaddr *src;
 	struct sockaddr *dst;
 {
+	INIT_VNET_GIF(ifp->if_vnet);
 	struct gif_softc *sc = ifp->if_softc;
 	struct gif_softc *sc2;
 	struct sockaddr *osrc, *odst, *sa;

==== //depot/projects/vimage-commit2/src/sys/net/if_gif.h#2 (text+ko) ====

@@ -110,6 +110,29 @@
 void gif_delete_tunnel(struct ifnet *);
 int gif_encapcheck(const struct mbuf *, int, int, void *);
 
+/*
+ * Virtualization support
+ */
+
+#define INIT_VNET_GIF(vnet) \
+	INIT_FROM_VNET(vnet, VNET_MOD_GIF, struct vnet_gif, vnet_gif)
+
+#define VNET_GIF(sym)		VSYM(vnet_gif, sym)
+
+struct vnet_gif {
+	LIST_HEAD(, gif_softc) _gif_softc_list;
+	int	_max_gif_nesting;
+	int	_parallel_tunnels;
+	int	_ip_gif_ttl;
+	int	_ip6_gif_hlim;
+};
+
+#define V_gif_softc_list	VNET_GIF(gif_softc_list)
+#define V_max_gif_nesting	VNET_GIF(max_gif_nesting)
+#define V_parallel_tunnels	VNET_GIF(parallel_tunnels)
+#define V_ip_gif_ttl		VNET_GIF(ip_gif_ttl)
+#define V_ip6_gif_hlim		VNET_GIF(ip6_gif_hlim)
+
 #endif /* _KERNEL */
 
 #endif /* _NET_IF_GIF_H_ */

==== //depot/projects/vimage-commit2/src/sys/net/if_gre.c#8 (text+ko) ====

@@ -241,6 +241,9 @@
 gre_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
 	   struct rtentry *rt)
 {
+#ifdef INET6
+	INIT_VNET_INET(ifp->if_vnet);
+#endif
 	int error = 0;
 	struct gre_softc *sc = ifp->if_softc;
 	struct greip *gh;

==== //depot/projects/vimage-commit2/src/sys/net/if_loop.c#8 (text+ko) ====

@@ -115,6 +115,7 @@
 static int
 lo_clone_create(struct if_clone *ifc, int unit, caddr_t params)
 {
+	INIT_VNET_NET(curvnet);
 	struct ifnet *ifp;
 
 	ifp = if_alloc(IFT_LOOP);
@@ -214,6 +215,7 @@
 int
 if_simloop(struct ifnet *ifp, struct mbuf *m, int af, int hlen)
 {
+	INIT_VNET_NET(ifp->if_vnet);
 	int isr;
 
 	M_ASSERTPKTHDR(m);

==== //depot/projects/vimage-commit2/src/sys/net/if_mib.c#7 (text+ko) ====

@@ -71,6 +71,7 @@
 static int
 sysctl_ifdata(SYSCTL_HANDLER_ARGS) /* XXX bad syntax! */
 {
+	INIT_VNET_NET(curvnet);
 	int *name = (int *)arg1;
 	int error;
 	u_int namelen = arg2;

==== //depot/projects/vimage-commit2/src/sys/net/if_stf.c#6 (text+ko) ====

@@ -365,6 +365,7 @@
 stf_getsrcifa6(ifp)
 	struct ifnet *ifp;
 {
+	INIT_VNET_INET(ifp->if_vnet);
 	struct ifaddr *ia;
 	struct in_ifaddr *ia4;
 	struct sockaddr_in6 *sin6;
@@ -560,6 +561,7 @@
 	struct in_addr *in;
 	struct ifnet *inifp;	/* incoming interface */
 {
+	INIT_VNET_INET(curvnet);
 	struct in_ifaddr *ia4;
 
 	/*

==== //depot/projects/vimage-commit2/src/sys/net/if_vlan.c#7 (text+ko) ====

@@ -573,6 +573,7 @@
 static struct ifnet *
 vlan_clone_match_ethertag(struct if_clone *ifc, const char *name, int *tag)
 {
+	INIT_VNET_NET(curvnet);
 	const char *cp;
 	struct ifnet *ifp;
 	int t = 0;

==== //depot/projects/vimage-commit2/src/sys/net/raw_cb.c#8 (text+ko) ====

@@ -44,6 +44,7 @@
 #include <sys/systm.h>
 #include <sys/vimage.h>
 
+#include <net/if.h>
 #include <net/raw_cb.h>
 
 /*
@@ -75,6 +76,7 @@
 int
 raw_attach(struct socket *so, int proto)
 {
+	INIT_VNET_NET(so->so_vnet);
 	struct rawcb *rp = sotorawcb(so);
 	int error;
 

==== //depot/projects/vimage-commit2/src/sys/net/raw_usrreq.c#8 (text+ko) ====

@@ -46,6 +46,7 @@
 #include <sys/systm.h>
 #include <sys/vimage.h>
 
+#include <net/if.h>
 #include <net/raw_cb.h>
 
 MTX_SYSINIT(rawcb_mtx, &rawcb_mtx, "rawcb", MTX_DEF);
@@ -56,6 +57,7 @@
 void
 raw_init(void)
 {
+	INIT_VNET_NET(curvnet);
 
 	LIST_INIT(&V_rawcb_list);
 }
@@ -70,6 +72,7 @@
 void
 raw_input(struct mbuf *m0, struct sockproto *proto, struct sockaddr *src)
 {
+	INIT_VNET_NET(curvnet);
 	struct rawcb *rp;
 	struct mbuf *m = m0;
 	struct socket *last;

==== //depot/projects/vimage-commit2/src/sys/net/route.c#7 (text+ko) ====

@@ -278,6 +278,7 @@
 		    u_int fibnum)
 {
 	struct radix_node_head *rnh;
+	INIT_VNET_NET(curvnet);
 	struct rtentry *rt;
 	struct radix_node *rn;
 	struct rtentry *newrt;
@@ -382,6 +383,7 @@
 void
 rtfree(struct rtentry *rt)
 {
+	INIT_VNET_NET(curvnet);
 	struct radix_node_head *rnh;
 
 	KASSERT(rt != NULL,("%s: NULL rt", __func__));
@@ -482,6 +484,7 @@
 	struct sockaddr *src,
 	u_int fibnum)
 {
+	INIT_VNET_NET(curvnet);
 	struct rtentry *rt, *rt0 = NULL;
 	int error = 0;
 	short *stat = NULL;
@@ -788,6 +791,7 @@
 int
 rtexpunge(struct rtentry *rt)
 {
+	INIT_VNET_NET(curvnet);
 	struct radix_node *rn;
 	struct radix_node_head *rnh;
 	struct ifaddr *ifa;
@@ -879,6 +883,7 @@
 rtrequest1_fib(int req, struct rt_addrinfo *info, struct rtentry **ret_nrt,
 				u_int fibnum)
 {
+	INIT_VNET_NET(curvnet);
 	int error = 0;
 	register struct rtentry *rt;
 	register struct radix_node *rn;
@@ -1309,6 +1314,7 @@
 int
 rt_setgate(struct rtentry *rt, struct sockaddr *dst, struct sockaddr *gate)
 {
+	INIT_VNET_NET(curvnet);
 	/* XXX dst may be overwritten, can we move this to below */
 	struct radix_node_head *rnh = V_rt_tables[rt->rt_fibnum][dst->sa_family];
 	int dlen = SA_SIZE(dst), glen = SA_SIZE(gate);
@@ -1450,6 +1456,7 @@
 static inline  int
 rtinit1(struct ifaddr *ifa, int cmd, int flags, int fibnum)
 {
+	INIT_VNET_NET(curvnet);
 	struct sockaddr *dst;
 	struct sockaddr *netmask;
 	struct rtentry *rt = NULL;

==== //depot/projects/vimage-commit2/src/sys/net/rtsock.c#8 (text+ko) ====

@@ -314,6 +314,7 @@
 route_output(struct mbuf *m, struct socket *so)
 {
 #define	sa_equal(a1, a2) (bcmp((a1), (a2), (a1)->sa_len) == 0)
+	INIT_VNET_NET(so->so_vnet);
 	struct rt_msghdr *rtm = NULL;
 	struct rtentry *rt = NULL;
 	struct radix_node_head *rnh;
@@ -1075,6 +1076,7 @@
 static void
 rt_dispatch(struct mbuf *m, const struct sockaddr *sa)
 {
+	INIT_VNET_NET(curvnet);
 	struct m_tag *tag;
 
 	/*
@@ -1138,6 +1140,7 @@
 static int
 sysctl_iflist(int af, struct walkarg *w)
 {
+	INIT_VNET_NET(curvnet);
 	struct ifnet *ifp;
 	struct ifaddr *ifa;
 	struct rt_addrinfo info;
@@ -1198,6 +1201,7 @@
 int
 sysctl_ifmalist(int af, struct walkarg *w)
 {
+	INIT_VNET_NET(curvnet);
 	struct ifnet *ifp;
 	struct ifmultiaddr *ifma;
 	struct	rt_addrinfo info;
@@ -1247,6 +1251,7 @@
 static int
 sysctl_rtsock(SYSCTL_HANDLER_ARGS)
 {
+	INIT_VNET_NET(curvnet);
 	int	*name = (int *)arg1;
 	u_int	namelen = arg2;
 	struct radix_node_head *rnh;

==== //depot/projects/vimage-commit2/src/sys/net80211/ieee80211.c#6 (text+ko) ====

@@ -35,7 +35,6 @@
 #include <sys/param.h>
 #include <sys/systm.h> 
 #include <sys/kernel.h>
- 
 #include <sys/socket.h>
 
 #include <net/if.h>

==== //depot/projects/vimage-commit2/src/sys/netgraph/netgraph.h#3 (text+ko) ====

@@ -1184,3 +1184,69 @@
 #define	ng_copy_meta(meta) NULL
 
 #endif /* _NETGRAPH_NETGRAPH_H_ */
+/*-
+ * 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.
+ */
+
+#ifndef _NETGRAPH_VNETGRPAH_H_
+#define _NETGRAPH_VNETGRAPH_H_
+
+#include <netgraph/ng_message.h>
+
+#define INIT_VNET_NETGRAPH(vnet) \
+	INIT_FROM_VNET(vnet, VNET_MOD_NETGRAPH, \
+	    struct vnet_netgraph, vnet_netgraph)
+
+#define VNET_NETGRAPH(sym)	VSYM(vnet_netgraph, sym)
+
+#define NG_ID_HASH_SIZE 32 /* most systems wont need even this many */
+#define NG_NAME_HASH_SIZE 128 /* most systems wont need even this many */
+
+#ifdef VIMAGE
+struct vnet_netgraph {
+	LIST_HEAD(, ng_node) _ng_ID_hash[NG_ID_HASH_SIZE];
+	LIST_HEAD(, ng_node) _ng_name_hash[NG_ID_HASH_SIZE];
+	LIST_HEAD(, ng_node) _ng_nodelist;
+	ng_ID_t		_nextID;
+	struct unrhdr	*_ng_iface_unit;
+	struct unrhdr	*_ng_eiface_unit;
+	struct unrhdr	*_ng_wormhole_unit;
+};
+#endif
+
+/* Symbol translation macros */
+#define V_ng_ID_hash		VNET_NETGRAPH(ng_ID_hash)
+#define V_ng_name_hash		VNET_NETGRAPH(ng_name_hash)
+#define V_ng_nodelist		VNET_NETGRAPH(ng_nodelist)
+#define V_nextID		VNET_NETGRAPH(nextID)
+#define V_ng_iface_unit		VNET_NETGRAPH(ng_iface_unit)
+#define V_ng_eiface_unit	VNET_NETGRAPH(ng_eiface_unit)
+#define V_ng_wormhole_unit	VNET_NETGRAPH(ng_wormhole_unit)
+
+#endif /* !_NETGRAPH_VNETGRAPH_H_ */

==== //depot/projects/vimage-commit2/src/sys/netgraph/ng_base.c#9 (text+ko) ====

@@ -167,7 +167,6 @@
 
 /* Hash related definitions */
 /* XXX Don't need to initialise them because it's a LIST */
-#define NG_ID_HASH_SIZE 128 /* most systems wont need even this many */
 static LIST_HEAD(, ng_node) ng_ID_hash[NG_ID_HASH_SIZE];
 static struct mtx	ng_idhash_mtx;
 /* Method to find a node.. used twice so do it here */
@@ -612,6 +611,7 @@
 int
 ng_make_node_common(struct ng_type *type, node_p *nodepp)
 {
+	INIT_VNET_NETGRAPH(curvnet);
 	node_p node;
 
 	/* Require the node type to have been already installed */
@@ -793,6 +793,7 @@
 static node_p
 ng_ID2noderef(ng_ID_t ID)
 {
+	INIT_VNET_NETGRAPH(curvnet);
 	node_p node;
 	mtx_lock(&ng_idhash_mtx);
 	NG_IDHASH_FIND(ID, node);
@@ -818,6 +819,7 @@
 int
 ng_name_node(node_p node, const char *name)
 {
+	INIT_VNET_NETGRAPH(curvnet);
 	int i, hash;
 	node_p node2;
 
@@ -868,6 +870,7 @@
 node_p
 ng_name2noderef(node_p here, const char *name)
 {
+	INIT_VNET_NETGRAPH(curvnet);
 	node_p node;
 	ng_ID_t temp;
 	int	hash;
@@ -2416,6 +2419,7 @@
 static int
 ng_generic_msg(node_p here, item_p item, hook_p lasthook)
 {
+	INIT_VNET_NETGRAPH(curvnet);
 	int error = 0;
 	struct ng_mesg *msg;
 	struct ng_mesg *resp = NULL;

==== //depot/projects/vimage-commit2/src/sys/netgraph/ng_eiface.c#7 (text+ko) ====

@@ -333,6 +333,7 @@
 static int
 ng_eiface_constructor(node_p node)
 {
+	INIT_VNET_NETGRAPH(curvnet);
 	struct ifnet *ifp;
 	priv_p priv;
 	u_char eaddr[6] = {0,0,0,0,0,0};
@@ -545,11 +546,14 @@
 static int
 ng_eiface_rmnode(node_p node)
 {
+	INIT_VNET_NETGRAPH(curvnet);
 	const priv_p priv = NG_NODE_PRIVATE(node);
 	struct ifnet *const ifp = priv->ifp;
 
+	CURVNET_SET_QUIET(ifp->if_vnet);
 	ether_ifdetach(ifp);
 	if_free(ifp);
+	CURVNET_RESTORE();
 	free_unr(V_ng_eiface_unit, priv->unit);
 	FREE(priv, M_NETGRAPH);
 	NG_NODE_SET_PRIVATE(node, NULL);

==== //depot/projects/vimage-commit2/src/sys/netgraph/ng_iface.c#7 (text+ko) ====

@@ -506,6 +506,7 @@
 static int
 ng_iface_constructor(node_p node)
 {
+	INIT_VNET_NETGRAPH(curvnet);
 	struct ifnet *ifp;
 	priv_p priv;
 
@@ -766,11 +767,14 @@
 static int
 ng_iface_shutdown(node_p node)
 {
+	INIT_VNET_NETGRAPH(curvnet);
 	const priv_p priv = NG_NODE_PRIVATE(node);
 
+	CURVNET_SET_QUIET(priv->ifp->if_vnet);
 	bpfdetach(priv->ifp);
 	if_detach(priv->ifp);
 	if_free(priv->ifp);
+	CURVNET_RESTORE();
 	priv->ifp = NULL;
 	free_unr(V_ng_iface_unit, priv->unit);
 	FREE(priv, M_NETGRAPH_IFACE);

==== //depot/projects/vimage-commit2/src/sys/netinet/if_ether.c#9 (text+ko) ====

@@ -149,6 +149,8 @@
 static void
 arp_rtrequest(int req, struct rtentry *rt, struct rt_addrinfo *info)
 {
+	INIT_VNET_NET(curvnet);
+	INIT_VNET_INET(curvnet);
 	struct sockaddr *gate;
 	struct llinfo_arp *la;
 	static struct sockaddr_dl null_sdl = {sizeof(null_sdl), AF_LINK};
@@ -360,6 +362,7 @@
 arpresolve(struct ifnet *ifp, struct rtentry *rt0, struct mbuf *m,
     struct sockaddr *dst, u_char *desten)
 {
+	INIT_VNET_INET(ifp->if_vnet);
 	struct llinfo_arp *la = NULL;
 	struct rtentry *rt = NULL;
 	struct sockaddr_dl *sdl;
@@ -603,7 +606,8 @@
 	sin.sin_len = sizeof(struct sockaddr_in);
 	sin.sin_family = AF_INET;
 	sin.sin_addr.s_addr = 0;
-	
+	INIT_VNET_INET(ifp->if_vnet);
+
 	if (ifp->if_bridge)
 		bridged = 1;
 	if (ifp->if_type == IFT_BRIDGE)

==== //depot/projects/vimage-commit2/src/sys/netinet/igmp.c#6 (text+ko) ====

@@ -145,6 +145,7 @@
 static struct router_info *
 find_rti(struct ifnet *ifp)
 {
+	INIT_VNET_INET(ifp->if_vnet);
 	struct router_info *rti;
 
 	mtx_assert(&igmp_mtx, MA_OWNED);
@@ -183,6 +184,7 @@
 	struct in_multistep step;
 	struct router_info *rti;
 	int timer; /** timer value in the igmp query header **/
+	INIT_VNET_INET(ifp->if_vnet);
 
 	++V_igmpstat.igps_rcv_total;
 
@@ -445,6 +447,7 @@
 
 	IGMP_PRINTF("[igmp.c,_slowtimo] -- > entering \n");

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



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