PERFORCE change 148303 for review
Julian Elischer
julian at FreeBSD.org
Sun Aug 24 23:15:08 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=148303
Change 148303 by julian at 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) <<<
More information about the p4-projects
mailing list