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