PERFORCE change 160387 for review

Marko Zec zec at FreeBSD.org
Wed Apr 8 12:11:15 PDT 2009


http://perforce.freebsd.org/chv.cgi?CH=160387

Change 160387 by zec at zec_tpx32 on 2009/04/08 19:10:20

	integrate vimage-commit2 -> vimage
	
	vimage branch still unusable, fixes pending...

Affected files ...

.. //depot/projects/vimage/src/sys/contrib/altq/altq/altq_subr.c#17 integrate
.. //depot/projects/vimage/src/sys/dev/ata/ata-usb.c#10 integrate
.. //depot/projects/vimage/src/sys/dev/sound/usb/uaudio.h#7 integrate
.. //depot/projects/vimage/src/sys/dev/sound/usb/uaudio_pcm.c#8 integrate
.. //depot/projects/vimage/src/sys/dev/sound/usb/uaudioreg.h#6 integrate
.. //depot/projects/vimage/src/sys/dev/usb/usb_if.m#6 integrate
.. //depot/projects/vimage/src/sys/dev/usb/usbhid.h#6 integrate
.. //depot/projects/vimage/src/sys/kern/uipc_domain.c#18 integrate
.. //depot/projects/vimage/src/sys/net/if.c#73 integrate
.. //depot/projects/vimage/src/sys/net/if_gif.c#25 integrate
.. //depot/projects/vimage/src/sys/net/if_loop.c#41 integrate
.. //depot/projects/vimage/src/sys/net/route.c#43 integrate
.. //depot/projects/vimage/src/sys/net/rtsock.c#29 integrate
.. //depot/projects/vimage/src/sys/netgraph/ng_base.c#51 integrate
.. //depot/projects/vimage/src/sys/netgraph/ng_eiface.c#23 integrate
.. //depot/projects/vimage/src/sys/netgraph/ng_ether.c#21 integrate
.. //depot/projects/vimage/src/sys/netgraph/ng_iface.c#19 integrate
.. //depot/projects/vimage/src/sys/netinet/accf_http.c#8 integrate
.. //depot/projects/vimage/src/sys/netinet/if_ether.c#39 integrate
.. //depot/projects/vimage/src/sys/netinet/in_pcb.c#53 integrate
.. //depot/projects/vimage/src/sys/netinet/in_pcb.h#29 integrate
.. //depot/projects/vimage/src/sys/netinet/in_rmx.c#31 integrate
.. //depot/projects/vimage/src/sys/netinet/ip_input.c#51 integrate
.. //depot/projects/vimage/src/sys/netinet6/in6_rmx.c#32 integrate
.. //depot/projects/vimage/src/sys/netinet6/ip6_input.c#51 integrate
.. //depot/projects/vimage/src/sys/netinet6/nd6_nbr.c#33 integrate
.. //depot/projects/vimage/src/sys/netipsec/ipsec.c#41 integrate
.. //depot/projects/vimage/src/sys/netipsec/xform_ah.c#24 integrate
.. //depot/projects/vimage/src/sys/netipsec/xform_esp.c#23 integrate
.. //depot/projects/vimage/src/sys/netipsec/xform_ipcomp.c#19 integrate
.. //depot/projects/vimage/src/sys/netipsec/xform_ipip.c#27 integrate
.. //depot/projects/vimage/src/sys/powerpc/powerpc/uio_machdep.c#5 branch
.. //depot/projects/vimage/src/sys/rpc/rpc.h#5 integrate
.. //depot/projects/vimage/src/sys/sys/vimage.h#84 integrate

Differences ...

==== //depot/projects/vimage/src/sys/contrib/altq/altq/altq_subr.c#17 (text+ko) ====


==== //depot/projects/vimage/src/sys/dev/ata/ata-usb.c#10 (text) ====


==== //depot/projects/vimage/src/sys/dev/sound/usb/uaudio.h#7 (text+ko) ====


==== //depot/projects/vimage/src/sys/dev/sound/usb/uaudio_pcm.c#8 (text+ko) ====


==== //depot/projects/vimage/src/sys/dev/sound/usb/uaudioreg.h#6 (text+ko) ====


==== //depot/projects/vimage/src/sys/dev/usb/usb_if.m#6 (text+ko) ====


==== //depot/projects/vimage/src/sys/dev/usb/usbhid.h#6 (text+ko) ====


==== //depot/projects/vimage/src/sys/kern/uipc_domain.c#18 (text+ko) ====

@@ -106,8 +106,14 @@
 	.pru_sopoll =		pru_sopoll_notsupp,
 };
 
-VNET_MOD_DECLARE_STATELESS(DOMAIN, domain, net_init_domain, net_detach_domain,
-    NET)
+#ifndef VIMAGE_GLOBALS
+vnet_modinfo_t vnet_domain_modinfo = {
+	.vmi_id		= VNET_MOD_DOMAIN,
+	.vmi_name	= "domain",
+	.vmi_iattach	= net_init_domain,
+	.vmi_idetach	= net_detach_domain,
+};
+#endif
 
 static void
 protosw_init(struct protosw *pr)
@@ -183,7 +189,7 @@
 	max_datalen = MHLEN - max_hdr;
 	if (max_datalen < 1)
 		panic("%s: max_datalen < 1", __func__);
-	return 0;
+	return (0);
 }
 
 #ifdef VIMAGE
@@ -239,7 +245,7 @@
 		    "domainfinalize()\n", dp->dom_name);
 #endif
 	mtx_unlock(&dom_mtx);
-#ifdef VIMAGE
+#ifndef VIMAGE_GLOBALS
 	vnet_mod_register_multi(&vnet_domain_modinfo, dp, dp->dom_name);
 #else
 	net_init_domain(dp);

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

@@ -185,9 +185,15 @@
 	VNET_SYMMAP_END
 };
 
-VNET_MOD_DECLARE(NET, net, vnet_net_iattach, vnet_net_idetach,
-    NONE, vnet_net_symmap);
-#endif
+static const vnet_modinfo_t vnet_net_modinfo = {
+	.vmi_id		= VNET_MOD_NET,
+	.vmi_name	= "net",
+	.vmi_size	= sizeof(struct vnet_net),
+	.vmi_symmap	= vnet_net_symmap,
+	.vmi_iattach	= vnet_net_iattach,
+	.vmi_idettach	= vnet_net_idettach
+};
+#endif /* !VIMAGE_GLOBALS */
 
 /*
  * System initialization

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

@@ -123,6 +123,15 @@
 static void	gif_clone_destroy(struct ifnet *);
 static int	vnet_gif_iattach(const void *);
 
+#ifndef VIMAGE_GLOBALS
+static const vnet_modinfo_t vnet_gif_modinfo = {
+	.vmi_id		= VNET_MOD_GIF,
+	.vmi_name	= "gif",
+	.vmi_dependson	= VNET_MOD_NET,
+	.vmi_iattach	= vnet_gif_iattach
+};
+#endif
+
 IFC_SIMPLE_DECLARE(gif, 0);
 
 static int gifmodevent(module_t, int, void *);

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

@@ -121,6 +121,15 @@
 static LIST_HEAD(lo_list, lo_softc) lo_list;
 #endif
 
+#ifndef VIMAGE_GLOBALS
+static const vnet_modinfo_t vnet_loif_modinfo = {
+	.vmi_id		= VNET_MOD_LOIF,
+	.vmi_name	= "loif",
+	.vmi_iattach	= vnet_loif_iattach,
+	.vmi_idettach	= vnet_loif_idettach
+};
+#endif /* !VIMAGE_GLOBALS */
+
 static MALLOC_DEFINE(M_LO, LONAME, "Loopback Interface");
 
 static struct mtx lo_mtx;

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

@@ -108,6 +108,15 @@
 	    struct sockaddr *, struct sockaddr *);
 static int vnet_route_iattach(const void *);
 
+#ifndef VIMAGE_GLOBALS
+static const vnet_modinfo_t vnet_rtable_modinfo = {
+	.vmi_id		= VNET_MOD_RTABLE,
+	.vmi_name	= "rtable",
+	.vmi_iattach	= vnet_route_iattach,
+	.vmi_idettach	= vnet_route_idettach
+};
+#endif /* !VIMAGE_GLOBALS */
+
 /* compare two sockaddr structures */
 #define	sa_equal(a1, a2) (bcmp((a1), (a2), (a1)->sa_len) == 0)
 
@@ -154,8 +163,18 @@
 rtable_init(const void *unused)
 {
 
-	vnet_route_iattach(NULL); /* XXX revisit */
-	return (0);
+	/* whack the tunable ints into  line. */
+	if (rt_numfibs > RT_MAXFIBS)
+		rt_numfibs = RT_MAXFIBS;
+	if (rt_numfibs == 0)
+		rt_numfibs = 1;
+	rn_init();	/* initialize all zeroes, all ones, mask table */
+
+#ifndef VIMAGE_GLOBALS
+	vnet_mod_register(&vnet_rtable_modinfo);
+#else
+	vnet_route_iattach(NULL);
+#endif
 }
 
 static int

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


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


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


==== //depot/projects/vimage/src/sys/netgraph/ng_ether.c#21 (text+ko) ====


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


==== //depot/projects/vimage/src/sys/netinet/accf_http.c#8 (text+ko) ====


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

@@ -121,6 +121,15 @@
 static void	in_arpinput(struct mbuf *);
 #endif
 
+#ifndef VIMAGE_GLOBALS
+static const vnet_modinfo_t vnet_arp_modinfo = {
+	.vmi_id		= VNET_MOD_ARP,
+	.vmi_name	= "arp",
+	.vmi_dependson	= VNET_MOD_INET,
+	.vmi_iattach	= arp_iattach
+};
+#endif /* !VIMAGE_GLOBALS */
+
 #ifdef AF_INET
 void arp_ifscrub(struct ifnet *ifp, uint32_t addr);
 VNET_MOD_DECLARE_STATELESS(ARP, arp, arp_iattach, NULL, INET)

==== //depot/projects/vimage/src/sys/netinet/in_pcb.c#53 (text+ko) ====


==== //depot/projects/vimage/src/sys/netinet/in_pcb.h#29 (text+ko) ====


==== //depot/projects/vimage/src/sys/netinet/in_rmx.c#31 (text+ko) ====


==== //depot/projects/vimage/src/sys/netinet/ip_input.c#51 (text+ko) ====

@@ -226,15 +226,18 @@
 
 #ifndef VIMAGE_GLOBALS
 static void vnet_inet_register(void);
-
-VNET_MOD_DECLARE(INET, inet, NULL, NULL, NET, NULL)
-
+ 
+static const vnet_modinfo_t vnet_inet_modinfo = {
+	.vmi_id		= VNET_MOD_INET,
+	.vmi_name	= "inet",
+};
+ 
 static void vnet_inet_register()
 {
-
+  
 	vnet_mod_register(&vnet_inet_modinfo);
 }
-
+ 
 SYSINIT(inet, SI_SUB_PROTO_BEGIN, SI_ORDER_FIRST, vnet_inet_register, 0);
 #endif
 

==== //depot/projects/vimage/src/sys/netinet6/in6_rmx.c#32 (text+ko) ====


==== //depot/projects/vimage/src/sys/netinet6/ip6_input.c#51 (text+ko) ====

@@ -158,11 +158,16 @@
 #ifndef VIMAGE_GLOBALS
 static void vnet_inet6_register(void);
  
-VNET_MOD_DECLARE(INET6, inet6, NULL, NULL, INET, NULL)
+static const vnet_modinfo_t vnet_inet6_modinfo = {
+	.vmi_id		= VNET_MOD_INET6,
+	.vmi_name	= "inet6",
+	.vmi_dependson	= VNET_MOD_INET	/* XXX revisit - TCP/UDP needs this? */
+};
  
 static void
 vnet_inet6_register(void)
 {
+
 	vnet_mod_register(&vnet_inet6_modinfo);
 }
  

==== //depot/projects/vimage/src/sys/netinet6/nd6_nbr.c#33 (text+ko) ====


==== //depot/projects/vimage/src/sys/netipsec/ipsec.c#41 (text+ko) ====

@@ -250,6 +250,15 @@
 
 MALLOC_DEFINE(M_IPSEC_INPCB, "inpcbpolicy", "inpcb-resident ipsec policy");
 
+#ifndef VIMAGE_GLOBALS
+static const vnet_modinfo_t vnet_ipsec_modinfo = {
+	.vmi_id		= VNET_MOD_IPSEC,
+	.vmi_name	= "ipsec",
+	.vmi_dependson	= VNET_MOD_INET,	/* XXX revisit - INET6 ? */
+	.vmi_iattach	= ipsec_iattach
+};
+#endif /* !VIMAGE_GLOBALS */
+
 void
 ipsec_init(void)
 {
@@ -1772,6 +1781,7 @@
 #else
 	ipsec_iattach(NULL);
 #endif
+
 }
 
 static int

==== //depot/projects/vimage/src/sys/netipsec/xform_ah.c#24 (text+ko) ====

@@ -75,6 +75,15 @@
 
 static int ah_iattach(const void *);
 
+#ifndef VIMAGE_GLOBALS
+static const vnet_modinfo_t vnet_ah_modinfo = {
+	.vmi_id		= VNET_MOD_AH,
+	.vmi_name	= "ipsec_ah",
+	.vmi_dependson	= VNET_MOD_IPSEC,
+	.vmi_iattach	= ah_iattach
+};
+#endif /* !VIMAGE_GLOBALS */
+
 /*
  * Return header size in bytes.  The old protocol did not support
  * the replay counter; the new protocol always includes the counter.

==== //depot/projects/vimage/src/sys/netipsec/xform_esp.c#23 (text+ko) ====

@@ -93,7 +93,14 @@
 
 static int esp_iattach(const void *);
 
-VNET_MOD_DECLARE_STATELESS(ESP, esp, esp_iattach, NULL, IPSEC)
+#ifndef VIMAGE_GLOBALS
+static const vnet_modinfo_t vnet_esp_modinfo = {
+	.vmi_id		= VNET_MOD_ESP,
+	.vmi_name	= "ipsec_esp",
+	.vmi_dependson	= VNET_MOD_IPSEC,
+	.vmi_iattach	= esp_iattach
+};
+#endif /* !VIMAGE_GLOBALS */
 
 /*
  * NB: this is public for use by the PF_KEY support.
@@ -997,7 +1004,11 @@
 {
 
 	xform_register(&esp_xformsw);
+#ifndef VIMAGE_GLOBALS
+	vnet_mod_register(&vnet_esp_modinfo);
+#else
 	esp_iattach(NULL);
+#endif
 }
 
 static int

==== //depot/projects/vimage/src/sys/netipsec/xform_ipcomp.c#19 (text+ko) ====

@@ -86,6 +86,15 @@
 static int ipcomp_output_cb(struct cryptop *crp);
 static int ipcomp_iattach(const void *);
 
+#ifndef VIMAGE_GLOBALS
+static const vnet_modinfo_t vnet_ipcomp_modinfo = {
+	.vmi_id		= VNET_MOD_IPCOMP,
+	.vmi_name	= "ipsec_ipcomp",
+	.vmi_dependson	= VNET_MOD_IPSEC,
+	.vmi_iattach	= ipcomp_iattach
+};
+#endif /* !VIMAGE_GLOBALS */
+
 struct comp_algo *
 ipcomp_algorithm_lookup(int alg)
 {

==== //depot/projects/vimage/src/sys/netipsec/xform_ipip.c#27 (text+ko) ====

@@ -108,6 +108,16 @@
 #define	M_IPSEC	(M_AUTHIPHDR|M_AUTHIPDGM|M_DECRYPTED)
 
 static void _ipip_input(struct mbuf *m, int iphlen, struct ifnet *gifp);
+static int ipe4_iattach(const void *);
+
+#ifndef VIMAGE_GLOBALS
+static const vnet_modinfo_t vnet_ipip_modinfo = {
+	.vmi_id		= VNET_MOD_IPIP,
+	.vmi_name	= "ipsec_ipip",
+	.vmi_dependson	= VNET_MOD_IPSEC,
+	.vmi_iattach	= ipe4_iattach
+};
+#endif /* !VIMAGE_GLOBALS */
 
 static int ipip_iattach(const void *);
 

==== //depot/projects/vimage/src/sys/rpc/rpc.h#5 (text+ko) ====


==== //depot/projects/vimage/src/sys/sys/vimage.h#84 (text+ko) ====

@@ -46,6 +46,8 @@
 #error "You cannot have both option VIMAGE and option VIMAGE_GLOBALS!"
 #endif
 
+#ifndef VIMAGE_GLOBALS
+
 struct	vimage;
 struct	vprocg;
 struct	vnet;
@@ -137,19 +139,21 @@
 	size_t	offset;
 	size_t	size;
 };
+typedef struct vnet_symmap vnet_symmap_t;
 
 struct vnet_modinfo {
-	u_int				vmi_id;
-	u_int				vmi_dependson;
+	u_int				 vmi_id;
+	u_int				 vmi_dependson;
 	char				*vmi_name;
 	vnet_attach_fn			*vmi_iattach;
 	vnet_detach_fn			*vmi_idetach;
-	size_t				vmi_struct_size;
+	size_t				 vmi_struct_size;
 	struct vnet_symmap		*vmi_symmap;
 };
+typedef struct vnet_modinfo vnet_modinfo_t;
 
 struct vnet_modlink {
-	TAILQ_ENTRY(vnet_modlink)	vml_mod_le;
+	TAILQ_ENTRY(vnet_modlink)	 vml_mod_le;
 	const struct vnet_modinfo	*vml_modinfo;
 	const void			*vml_iarg;
 	const char			*vml_iname;
@@ -158,6 +162,10 @@
 
 #define VNET_SYMMAP_END		{ NULL, 0 }
 
+#define VNET_SYMMAP(mod, name)						\
+	{ #name, &(vnet_ ## mod ## _0._ ## name),			\
+	sizeof(vnet_ ## mod ## _0._ ## name) }
+
 #define basevnet thread0.td_ucred->cr_vimage->v_net
 #define basevprocg thread0.td_ucred->cr_vimage->v_procg
 #define basevcpu thread0.td_ucred->cr_vimage->v_cpu
@@ -167,8 +175,7 @@
 #define	V_PROCG		2
 #define V_CPU		3
 
-#define VNET_MOD_NONE		-1 
-/*statefull modules */
+/* statefull modules */
 #define VNET_MOD_NET		 0
 #define VNET_MOD_NETGRAPH	 1
 #define VNET_MOD_INET		 2
@@ -182,6 +189,7 @@
 #define VNET_MOD_ATALK		10
 #define VNET_MOD_ACCF_HTTP	11
 #define VNET_MOD_IGMP		12
+
 /* stateless modules */
 #define VNET_MOD_NG_ETHER	20
 #define VNET_MOD_NG_IFACE	21
@@ -198,7 +206,7 @@
 #define VNET_MOD_DYNAMIC_START	32
 #define VNET_MOD_MAX		64
 
-/* Needed for ugly sysctl virtualization macros */
+/* Sysctl virtualization macros need these name mappings bellow */
 #define V_MOD_vnet_net		VNET_MOD_NET
 #define V_MOD_vnet_netgraph	VNET_MOD_NETGRAPH
 #define V_MOD_vnet_inet		VNET_MOD_INET
@@ -208,6 +216,10 @@
 #define V_MOD_vnet_gif		VNET_MOD_GIF
 #define V_MOD_vnet_ipsec	VNET_MOD_IPSEC
 
+int	vi_symlookup(struct kld_sym_lookup *, char *);
+void	vnet_mod_register(const struct vnet_modinfo *);
+void	vnet_mod_register_multi(const struct vnet_modinfo *, void *, char *);
+
 #define V_MOD_vprocg		0
 #define V_MOD_vcpu		0
 
@@ -226,9 +238,10 @@
 	u_int	vnet_magic_n;
 };
 
+#endif /* !VIMAGE_GLOBALS */
+
 #define VNET_MAGIC_N 0x3e0d8f29
 
-
 #ifdef VNET_DEBUG
 
 #define VNET_ASSERT(condition)						\


More information about the p4-projects mailing list