From owner-p4-projects@FreeBSD.ORG Wed Apr 8 19:11:14 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 391AA106567A; Wed, 8 Apr 2009 19:11:14 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D9497106567F for ; Wed, 8 Apr 2009 19:11:13 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id BB1248FC27 for ; Wed, 8 Apr 2009 19:11:13 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n38JBDXa015724 for ; Wed, 8 Apr 2009 19:11:13 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n38JBDp6015722 for perforce@freebsd.org; Wed, 8 Apr 2009 19:11:13 GMT (envelope-from zec@fer.hr) Date: Wed, 8 Apr 2009 19:11:13 GMT Message-Id: <200904081911.n38JBDp6015722@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 160387 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Apr 2009 19:11:15 -0000 http://perforce.freebsd.org/chv.cgi?CH=160387 Change 160387 by zec@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) \