From owner-p4-projects@FreeBSD.ORG Sun Nov 30 16:29:51 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id AEDC91065676; Sun, 30 Nov 2008 16:29:51 +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 739CB1065670 for ; Sun, 30 Nov 2008 16:29:51 +0000 (UTC) (envelope-from zec@tel.fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 601198FC18 for ; Sun, 30 Nov 2008 16:29:51 +0000 (UTC) (envelope-from zec@tel.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 mAUGT2Jm062967 for ; Sun, 30 Nov 2008 16:29:51 GMT (envelope-from zec@tel.fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id mAU1ZKdT044225 for perforce@freebsd.org; Sun, 30 Nov 2008 01:35:20 GMT (envelope-from zec@tel.fer.hr) Date: Sun, 30 Nov 2008 01:35:20 GMT Message-Id: <200811300135.mAU1ZKdT044225@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@tel.fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 153806 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: Sun, 30 Nov 2008 16:29:52 -0000 http://perforce.freebsd.org/chv.cgi?CH=153806 Change 153806 by zec@zec_tpx32 on 2008/11/30 01:34:59 Instantiate vnet_* container structures, make VIMAGE_GLOBALS a compile-time option defaulting to off, and switch the VSYM() macro to resolve to struct vnet_ fields instead of globals, unless VIMAGE_GLOBALS is set. So far both GENERIC and LINT with nooptions SCTP build fine, though I have no clue yet whether either of them boots at all. Affected files ... .. //depot/projects/vimage-commit2/src/sys/conf/options#16 edit .. //depot/projects/vimage-commit2/src/sys/contrib/pf/net/pf_subr.c#7 edit .. //depot/projects/vimage-commit2/src/sys/net/if_ethersubr.c#14 edit .. //depot/projects/vimage-commit2/src/sys/net/if_gif.c#14 edit .. //depot/projects/vimage-commit2/src/sys/net/if_gif.h#6 edit .. //depot/projects/vimage-commit2/src/sys/net/route.c#21 edit .. //depot/projects/vimage-commit2/src/sys/net/vnet.h#8 edit .. //depot/projects/vimage-commit2/src/sys/netgraph/netgraph.h#17 edit .. //depot/projects/vimage-commit2/src/sys/netgraph/ng_base.c#17 edit .. //depot/projects/vimage-commit2/src/sys/netgraph/ng_eiface.c#14 edit .. //depot/projects/vimage-commit2/src/sys/netgraph/ng_iface.c#12 edit .. //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#18 edit .. //depot/projects/vimage-commit2/src/sys/netinet/ip_fw.h#12 edit .. //depot/projects/vimage-commit2/src/sys/netinet/ip_fw2.c#26 edit .. //depot/projects/vimage-commit2/src/sys/netinet/ip_fw_nat.c#8 edit .. //depot/projects/vimage-commit2/src/sys/netinet/ip_fw_pfil.c#10 edit .. //depot/projects/vimage-commit2/src/sys/netinet/ip_input.c#21 edit .. //depot/projects/vimage-commit2/src/sys/netinet/tcp_sack.c#14 edit .. //depot/projects/vimage-commit2/src/sys/netinet/tcp_subr.c#33 edit .. //depot/projects/vimage-commit2/src/sys/netinet/vinet.h#19 edit .. //depot/projects/vimage-commit2/src/sys/netinet6/icmp6.c#19 edit .. //depot/projects/vimage-commit2/src/sys/netinet6/in6_proto.c#14 edit .. //depot/projects/vimage-commit2/src/sys/netinet6/ip6_input.c#14 edit .. //depot/projects/vimage-commit2/src/sys/netinet6/nd6.c#18 edit .. //depot/projects/vimage-commit2/src/sys/netinet6/nd6_rtr.c#16 edit .. //depot/projects/vimage-commit2/src/sys/netinet6/vinet6.h#15 edit .. //depot/projects/vimage-commit2/src/sys/netipsec/ipsec.c#20 edit .. //depot/projects/vimage-commit2/src/sys/netipsec/vipsec.h#14 edit .. //depot/projects/vimage-commit2/src/sys/sys/sysctl.h#11 edit .. //depot/projects/vimage-commit2/src/sys/sys/vimage.h#23 edit Differences ... ==== //depot/projects/vimage-commit2/src/sys/conf/options#16 (text+ko) ==== @@ -415,6 +415,7 @@ TCP_OFFLOAD_DISABLE opt_inet.h #Disable code to dispatch tcp offloading TCP_SIGNATURE opt_inet.h VLAN_ARRAY opt_vlan.h +VIMAGE_GLOBALS opt_global.h XBONEHACK # ==== //depot/projects/vimage-commit2/src/sys/contrib/pf/net/pf_subr.c#7 (text+ko) ==== @@ -115,10 +115,13 @@ #define ISN_STATIC_INCREMENT 4096 #define ISN_RANDOM_INCREMENT (4096 - 1) +#ifdef VIMAGE_GLOBALS +/* XXX WARNING WARNING clash with netinet/tcp_subr.c - REVISIT !!! */ static u_char isn_secret[32]; static int isn_last_reseed; static u_int32_t isn_offset; static MD5_CTX isn_ctx; +#endif u_int32_t pf_new_isn(struct pf_state *s) ==== //depot/projects/vimage-commit2/src/sys/net/if_ethersubr.c#14 (text+ko) ==== @@ -425,7 +425,7 @@ ether_ipfw_chk(struct mbuf **m0, struct ifnet *dst, struct ip_fw **rule, int shared) { - INIT_VNET_IPFW(dst->if_vnet); + INIT_VNET_NET(dst->if_vnet); struct ether_header *eh; struct ether_header save_eh; struct mbuf *m; ==== //depot/projects/vimage-commit2/src/sys/net/if_gif.c#14 (text+ko) ==== @@ -95,6 +95,10 @@ static struct mtx gif_mtx; static MALLOC_DEFINE(M_GIF, "gif", "Generic Tunnel Interface"); +#ifndef VIMAGE_GLOBALS +struct vnet_gif vnet_gif_0; +#endif + #ifdef VIMAGE_GLOBALS static LIST_HEAD(, gif_softc) gif_softc_list; static int max_gif_nesting; ==== //depot/projects/vimage-commit2/src/sys/net/if_gif.h#6 (text+ko) ==== @@ -113,7 +113,7 @@ /* * Virtualization support */ -#ifdef VIMAGE + struct vnet_gif { LIST_HEAD(, gif_softc) _gif_softc_list; int _max_gif_nesting; @@ -121,6 +121,9 @@ int _ip_gif_ttl; int _ip6_gif_hlim; }; + +#ifndef VIMAGE_GLOBALS +extern struct vnet_gif vnet_gif_0; #endif #define INIT_VNET_GIF(vnet) \ ==== //depot/projects/vimage-commit2/src/sys/net/route.c#21 (text+ko) ==== @@ -63,6 +63,10 @@ #include +#ifndef VIMAGE_GLOBALS +struct vnet_net vnet_net_0; +#endif + u_int rt_numfibs = RT_NUMFIBS; SYSCTL_INT(_net, OID_AUTO, fibs, CTLFLAG_RD, &rt_numfibs, 0, ""); /* ==== //depot/projects/vimage-commit2/src/sys/net/vnet.h#8 (text+ko) ==== @@ -67,6 +67,10 @@ int _ether_ipfw; }; +#ifndef VIMAGE_GLOBALS +extern struct vnet_net vnet_net_0; +#endif + /* * Symbol translation macros */ ==== //depot/projects/vimage-commit2/src/sys/netgraph/netgraph.h#17 (text+ko) ==== @@ -1205,6 +1205,10 @@ struct unrhdr *_ng_wormhole_unit; }; +#ifndef VIMAGE_GLOBALS +extern struct vnet_netgraph vnet_netgraph_0; +#endif + /* Symbol translation macros */ #define V_nextID VNET_NETGRAPH(nextID) #define V_ng_ID_hash VNET_NETGRAPH(ng_ID_hash) ==== //depot/projects/vimage-commit2/src/sys/netgraph/ng_base.c#17 (text+ko) ==== @@ -72,6 +72,10 @@ MODULE_VERSION(netgraph, NG_ABI_VERSION); +#ifndef VIMAGE_GLOBALS +struct vnet_netgraph vnet_netgraph_0; +#endif + /* Mutex to protect topology events. */ static struct mtx ng_topo_mtx; @@ -167,7 +171,9 @@ /* Hash related definitions */ /* XXX Don't need to initialise them because it's a LIST */ +#ifdef VIMAGE_GLOBALS static LIST_HEAD(, ng_node) ng_ID_hash[NG_ID_HASH_SIZE]; +#endif static struct mtx ng_idhash_mtx; /* Method to find a node.. used twice so do it here */ #define NG_IDHASH_FN(ID) ((ID) % (NG_ID_HASH_SIZE)) @@ -183,7 +189,9 @@ } \ } while (0) +#ifdef VIMAGE_GLOBALS static LIST_HEAD(, ng_node) ng_name_hash[NG_NAME_HASH_SIZE]; +#endif static struct mtx ng_namehash_mtx; #define NG_NAMEHASH(NAME, HASH) \ do { \ @@ -348,7 +356,9 @@ #define TRAP_ERROR() #endif +#ifdef VIMAGE_GLOBALS static ng_ID_t nextID = 1; +#endif #ifdef INVARIANTS #define CHECK_DATA_MBUF(m) do { \ ==== //depot/projects/vimage-commit2/src/sys/netgraph/ng_eiface.c#14 (text+ko) ==== @@ -112,7 +112,9 @@ }; NETGRAPH_INIT(eiface, &typestruct); +#ifdef VIMAGE_GLOBALS static struct unrhdr *ng_eiface_unit; +#endif /************************************************************************ INTERFACE STUFF ==== //depot/projects/vimage-commit2/src/sys/netgraph/ng_iface.c#12 (text+ko) ==== @@ -208,7 +208,9 @@ }; NETGRAPH_INIT(iface, &typestruct); +#ifdef VIMAGE_GLOBALS static struct unrhdr *ng_iface_unit; +#endif /************************************************************************ HELPER STUFF ==== //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#18 (text+ko) ==== @@ -166,7 +166,7 @@ V_divcbinfo.ipi_zone = uma_zcreate("divcb", sizeof(struct inpcb), NULL, NULL, div_inpcb_init, div_inpcb_fini, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); - uma_zone_set_max(divcbinfo.ipi_zone, maxsockets); + uma_zone_set_max(V_divcbinfo.ipi_zone, maxsockets); EVENTHANDLER_REGISTER(maxsockets_change, div_zone_change, NULL, EVENTHANDLER_PRI_ANY); } ==== //depot/projects/vimage-commit2/src/sys/netinet/ip_fw.h#12 (text+ko) ==== @@ -650,8 +650,6 @@ extern ip_fw_chk_t *ip_fw_chk_ptr; #define IPFW_LOADED (ip_fw_chk_ptr != NULL) -#ifdef IPFW_INTERNAL - struct ip_fw_chain { struct ip_fw *rules; /* list of rules */ struct ip_fw *reap; /* list of rules to reap */ @@ -659,6 +657,9 @@ struct radix_node_head *tables[IPFW_TABLES_MAX]; struct rwlock rwmtx; }; + +#ifdef IPFW_INTERNAL + #define IPFW_LOCK_INIT(_chain) \ rw_init(&(_chain)->rwmtx, "IPFW static rules") #define IPFW_LOCK_DESTROY(_chain) rw_destroy(&(_chain)->rwmtx) @@ -684,9 +685,7 @@ /* * Stack virtualization support. */ -#ifdef VIMAGE struct vnet_ipfw { - int _fw_one_pass; int _fw_enable; int _fw6_enable; u_int32_t _set_disable; @@ -716,6 +715,9 @@ struct callout _ipfw_timeout; eventhandler_tag _ifaddr_event_tag; }; + +#ifndef VIMAGE_GLOBALS +extern struct vnet_ipfw vnet_ipfw_0; #endif /* @@ -726,7 +728,6 @@ #define VNET_IPFW(sym) VSYM(vnet_ipfw, sym) -#define V_fw_one_pass VNET_IPFW(fw_one_pass) #define V_fw_enable VNET_IPFW(fw_enable) #define V_fw6_enable VNET_IPFW(fw6_enable) #define V_set_disable VNET_IPFW(set_disable) ==== //depot/projects/vimage-commit2/src/sys/netinet/ip_fw2.c#26 (text+ko) ==== @@ -107,6 +107,10 @@ #include +#ifndef VIMAGE_GLOBALS +struct vnet_ipfw vnet_ipfw_0; +#endif + /* * set_disable contains one bit per set value (0..31). * If the bit is set, all rules with the corresponding set @@ -115,12 +119,13 @@ * and CANNOT be disabled. * Rules in set RESVD_SET can only be deleted explicitly. */ +#ifdef VIMAGE_GLOBALS static u_int32_t set_disable; - static int fw_verbose; +static struct callout ipfw_timeout; +#endif static int verbose_limit; -static struct callout ipfw_timeout; static uma_zone_t ipfw_dyn_rule_zone; /* @@ -156,8 +161,11 @@ u_int32_t value; }; +#ifdef VIMAGE_GLOBALS +/* XXX revisit init on instantiation !!! */ static int fw_debug = 1; static int autoinc_step = 100; /* bounded to 1..1000 in add_rule() */ +#endif extern int ipfw_chg_hook(SYSCTL_HANDLER_ARGS); @@ -168,7 +176,7 @@ ipfw_chg_hook, "I", "Enable ipfw"); SYSCTL_V_INT(V_NET, vnet_ipfw, _net_inet_ip_fw, OID_AUTO, autoinc_step, CTLFLAG_RW, autoinc_step, 0, "Rule number autincrement step"); -SYSCTL_V_INT(V_NET, vnet_ipfw, _net_inet_ip_fw, OID_AUTO, one_pass, +SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip_fw, OID_AUTO, one_pass, CTLFLAG_RW | CTLFLAG_SECURE3, fw_one_pass, 0, "Only do a single pass through ipfw when using dummynet(4)"); SYSCTL_V_INT(V_NET, vnet_ipfw, _net_inet_ip_fw, OID_AUTO, debug, CTLFLAG_RW, @@ -219,9 +227,12 @@ * obey the 'randomized match', and we do not do multiple * passes through the firewall. XXX check the latter!!! */ +#ifdef VIMAGE_GLOBALS +/* XXX revisit init on instantiation !!! */ static ipfw_dyn_rule **ipfw_dyn_v = NULL; static u_int32_t dyn_buckets = 256; /* must be power of 2 */ static u_int32_t curr_dyn_buckets = 256; /* must be power of 2 */ +#endif static struct mtx ipfw_dyn_mtx; /* mutex guarding dynamic rules */ #define IPFW_DYN_LOCK_INIT() \ @@ -234,6 +245,8 @@ /* * Timeouts for various events in handing dynamic rules. */ +#ifdef VIMAGE_GLOBALS +/* XXX revisit init on instantiation !!! */ static u_int32_t dyn_ack_lifetime = 300; static u_int32_t dyn_syn_lifetime = 20; static u_int32_t dyn_fin_lifetime = 1; @@ -257,6 +270,7 @@ static u_int32_t static_len; /* size in bytes of static rules */ static u_int32_t dyn_count; /* # of dynamic rules */ static u_int32_t dyn_max = 4096; /* max # of dynamic rules */ +#endif /* VIMAGE_GLOBALS */ SYSCTL_V_INT(V_NET, vnet_ipfw, _net_inet_ip_fw, OID_AUTO, dyn_buckets, CTLFLAG_RW, dyn_buckets, 0, "Number of dyn. buckets"); @@ -296,9 +310,11 @@ #endif /* INET6 */ #endif /* SYSCTL_NODE */ +#ifdef VIMAGE_GLOBALS +/* XXX revisit init on instantiation !!! */ static int fw_deny_unknown_exthdrs = 1; +#endif - /* * L3HDR maps an ipv4 pointer into a layer3 header pointer of type T * Other macros just cast void * into the appropriate type @@ -745,7 +761,9 @@ #endif /* INET6 */ +#ifdef VIMAGE_GLOBALS static u_int64_t norule_counter; /* counter for ipfw_log(NULL...) */ +#endif #define SNPARGS(buf, len) buf + len, sizeof(buf) > len ? sizeof(buf) - len : 0 #define SNP(buf) buf, sizeof(buf) ==== //depot/projects/vimage-commit2/src/sys/netinet/ip_fw_nat.c#8 (text+ko) ==== @@ -71,7 +71,9 @@ extern struct ip_fw_chain layer3_chain; +#ifdef VIMAGE_GLOBALS static eventhandler_tag ifaddr_event_tag; +#endif extern ipfw_nat_t *ipfw_nat_ptr; extern ipfw_nat_cfg_t *ipfw_nat_cfg_ptr; ==== //depot/projects/vimage-commit2/src/sys/netinet/ip_fw_pfil.c#10 (text+ko) ==== ==== //depot/projects/vimage-commit2/src/sys/netinet/ip_input.c#21 (text+ko) ==== @@ -89,6 +89,10 @@ CTASSERT(sizeof(struct ip) == 20); #endif +#ifndef VIMAGE_GLOBALS +struct vnet_inet vnet_inet_0; +#endif + #ifdef VIMAGE_GLOBALS static int ipsendredirects; static int ip_checkinterface; @@ -168,7 +172,9 @@ SYSCTL_V_STRUCT(V_NET, vnet_inet, _net_inet_ip, IPCTL_STATS, stats, CTLFLAG_RW, ipstat, ipstat, "IP statistics (struct ipstat, netinet/ip_var.h)"); +#ifdef VIMAGE_GLOBALS static uma_zone_t ipq_zone; +#endif static struct mtx ipqlock; #define IPQ_LOCK() mtx_lock(&ipqlock) @@ -205,7 +211,9 @@ */ ip_fw_chk_t *ip_fw_chk_ptr = NULL; ip_dn_io_t *ip_dn_io_ptr = NULL; -int fw_one_pass = 1; +#ifdef VIMAGE_GLOBALS +int fw_one_pass; +#endif static void ip_freef(struct ipqhead *, struct ipq *); @@ -244,6 +252,8 @@ V_ipport_randomtime = 45; /* user controlled via sysctl */ V_ipport_stoprandom = 0; /* toggled by ipport_tick */ + V_fw_one_pass = 1; + #ifdef NOTYET /* XXX global static but not instantiated in this file */ V_ipfastforward_active = 0; ==== //depot/projects/vimage-commit2/src/sys/netinet/tcp_sack.c#14 (text+ko) ==== @@ -134,7 +134,10 @@ SYSCTL_NODE(_net_inet_tcp, OID_AUTO, sack, CTLFLAG_RW, 0, "TCP SACK"); SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp_sack, OID_AUTO, enable, CTLFLAG_RW, tcp_do_sack, 0, "Enable/Disable TCP SACK support"); +#ifdef VIMAGE_GLOBALS +/* XXX REVISIT THIS !!! */ TUNABLE_INT("net.inet.tcp.sack.enable", &tcp_do_sack); +#endif SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp_sack, OID_AUTO, maxholes, CTLFLAG_RW, tcp_sack_maxholes, 0, ==== //depot/projects/vimage-commit2/src/sys/netinet/tcp_subr.c#33 (text+ko) ==== @@ -1479,6 +1479,7 @@ #define ISN_RANDOM_INCREMENT (4096 - 1) #ifdef VIMAGE_GLOBALS +/* XXX WARNING WARNING clash with contrib/pf/net/pf_subr.c - REVISIT !!! */ static u_char isn_secret[32]; static int isn_last_reseed; static u_int32_t isn_offset, isn_offset_old; ==== //depot/projects/vimage-commit2/src/sys/netinet/vinet.h#19 (text+ko) ==== @@ -196,8 +196,14 @@ int _icmp_rfi; int _icmp_quotelen; int _icmpbmcastecho; + + int _fw_one_pass; }; +#ifndef VIMAGE_GLOBALS +extern struct vnet_inet vnet_inet_0; +#endif + /* * Symbol translation macros */ @@ -214,6 +220,7 @@ #define V_divcbinfo VNET_INET(divcbinfo) #define V_drop_redirect VNET_INET(drop_redirect) #define V_drop_synfin VNET_INET(drop_synfin) +#define V_fw_one_pass VNET_INET(fw_one_pass) #define V_icmp_may_rst VNET_INET(icmp_may_rst) #define V_icmp_quotelen VNET_INET(icmp_quotelen) #define V_icmp_rfi VNET_INET(icmp_rfi) ==== //depot/projects/vimage-commit2/src/sys/netinet6/icmp6.c#19 (text+ko) ==== ==== //depot/projects/vimage-commit2/src/sys/netinet6/in6_proto.c#14 (text+ko) ==== @@ -517,7 +517,8 @@ sysctl_ip6_tempvltime, "I", ""); SYSCTL_V_INT(V_NET, vnet_inet6, _net_inet6_ip6, IPV6CTL_V6ONLY, v6only, CTLFLAG_RW, ip6_v6only, 0, ""); -#ifndef VIMAGE +#ifdef VIMAGE_GLOBALS +/* XXX REVISIT THIS ! */ TUNABLE_INT("net.inet6.ip6.auto_linklocal", &ip6_auto_linklocal); #endif SYSCTL_V_INT(V_NET, vnet_inet6, _net_inet6_ip6, IPV6CTL_AUTO_LINKLOCAL, ==== //depot/projects/vimage-commit2/src/sys/netinet6/ip6_input.c#14 (text+ko) ==== @@ -117,6 +117,10 @@ u_char ip6_protox[IPPROTO_MAX]; static struct ifqueue ip6intrq; +#ifndef VIMAGE_GLOBALS +struct vnet_inet6 vnet_inet6_0; +#endif + #ifdef VIMAGE_GLOBALS static int ip6qmaxlen; struct in6_ifaddr *in6_ifaddr; ==== //depot/projects/vimage-commit2/src/sys/netinet6/nd6.c#18 (text+ko) ==== @@ -164,10 +164,10 @@ V_llinfo_nd6.ln_prev = &V_llinfo_nd6; LIST_INIT(&V_nd_prefix); - ip6_use_tempaddr = 0; - ip6_temp_preferred_lifetime = DEF_TEMP_PREFERRED_LIFETIME; - ip6_temp_valid_lifetime = DEF_TEMP_VALID_LIFETIME; - ip6_temp_regen_advance = TEMPADDR_REGEN_ADVANCE; + V_ip6_use_tempaddr = 0; + V_ip6_temp_preferred_lifetime = DEF_TEMP_PREFERRED_LIFETIME; + V_ip6_temp_valid_lifetime = DEF_TEMP_VALID_LIFETIME; + V_ip6_temp_regen_advance = TEMPADDR_REGEN_ADVANCE; all1_sa.sin6_family = AF_INET6; all1_sa.sin6_len = sizeof(struct sockaddr_in6); ==== //depot/projects/vimage-commit2/src/sys/netinet6/nd6_rtr.c#16 (text+ko) ==== ==== //depot/projects/vimage-commit2/src/sys/netinet6/vinet6.h#15 (text+ko) ==== @@ -87,7 +87,7 @@ int _dad_init; int _icmp6errpps_count; - int _icmp6errppslim_last; + struct timeval _icmp6errppslim_last; int _ip6_forwarding; int _ip6_sendredirects; @@ -154,6 +154,10 @@ struct ip6_pktopts _ip6_opts; }; +#ifndef VIMAGE_GLOBALS +extern struct vnet_inet6 vnet_inet6_0; +#endif + #define INIT_VNET_INET6(vnet) \ INIT_FROM_VNET(vnet, VNET_MOD_INET6, struct vnet_inet6, vnet_inet6) ==== //depot/projects/vimage-commit2/src/sys/netipsec/ipsec.c#20 (text+ko) ==== @@ -97,6 +97,10 @@ #include +#ifndef VIMAGE_GLOBALS +struct vnet_ipsec vnet_ipsec_0; +#endif + #ifdef VIMAGE_GLOBALS /* NB: name changed so netstat doesn't use it */ struct ipsecstat ipsec4stat; ==== //depot/projects/vimage-commit2/src/sys/netipsec/vipsec.h#14 (text+ko) ==== @@ -112,6 +112,10 @@ LIST_HEAD(, secspacq) _spacqtree; }; +#ifndef VIMAGE_GLOBALS +extern struct vnet_ipsec vnet_ipsec_0; +#endif + /* * Symbol translation macros */ ==== //depot/projects/vimage-commit2/src/sys/sys/sysctl.h#11 (text+ko) ==== @@ -234,9 +234,16 @@ handler, fmt, 0, __DESCR(descr), subs, V_MOD_##mod }; \ DATA_SET(sysctl_set, sysctl__##parent##_##name) #else +#ifdef VIMAGE_GLOBALS #define SYSCTL_V_OID(subs, mod, parent, nbr, name, kind, a1, a2, \ handler, fmt, descr) \ SYSCTL_OID(parent, nbr, name, kind, &a1, a2, handler, fmt, descr) +#else +#define SYSCTL_V_OID(subs, mod, parent, nbr, name, kind, a1, a2, \ + handler, fmt, descr) \ + SYSCTL_OID(parent, nbr, name, kind, & mod ## _0._ ## a1, a2, \ + handler, fmt, descr) +#endif #endif #define SYSCTL_ADD_OID(ctx, parent, nbr, name, kind, a1, a2, handler, fmt, descr) \ @@ -262,9 +269,15 @@ SYSCTL_V_OID(subs, mod, parent, nbr, name, CTLTYPE_STRING|(access), \ sym, len, sysctl_handle_v_string, "A", descr) #else +#ifdef VIMAGE_GLOBALS #define SYSCTL_V_STRING(subs, mod, parent, nbr, name, access, sym, len, descr) \ SYSCTL_OID(parent, nbr, name, CTLTYPE_STRING|(access), \ &sym, len, sysctl_handle_string, "A", descr) +#else +#define SYSCTL_V_STRING(subs, mod, parent, nbr, name, access, sym, len, descr) \ + SYSCTL_OID(parent, nbr, name, CTLTYPE_STRING|(access), \ + & mod ## _0._ ## sym, len, sysctl_handle_string, "A", descr) +#endif #endif #define SYSCTL_ADD_STRING(ctx, parent, nbr, name, access, arg, len, descr) \ @@ -281,9 +294,15 @@ SYSCTL_V_OID(subs, mod, parent, nbr, name, CTLTYPE_INT|(access), \ sym, val, sysctl_handle_v_int, "I", descr) #else +#ifdef VIMAGE_GLOBALS #define SYSCTL_V_INT(subs, mod, parent, nbr, name, access, sym, val, descr) \ SYSCTL_OID(parent, nbr, name, CTLTYPE_INT|(access), \ &sym, val, sysctl_handle_int, "I", descr) +#else +#define SYSCTL_V_INT(subs, mod, parent, nbr, name, access, sym, val, descr) \ + SYSCTL_OID(parent, nbr, name, CTLTYPE_INT|(access), \ + & mod ## _0._ ## sym, val, sysctl_handle_int, "I", descr) +#endif #endif #define SYSCTL_ADD_INT(ctx, parent, nbr, name, access, ptr, val, descr) \ @@ -300,9 +319,15 @@ SYSCTL_V_OID(subs, mod, parent, nbr, name, CTLTYPE_UINT|(access), \ sym, val, sysctl_handle_v_int, "IU", descr) #else +#ifdef VIMAGE_GLOBALS #define SYSCTL_V_UINT(subs, mod, parent, nbr, name, access, sym, val, descr) \ SYSCTL_OID(parent, nbr, name, CTLTYPE_UINT|(access), \ &sym, val, sysctl_handle_int, "IU", descr) +#else +#define SYSCTL_V_UINT(subs, mod, parent, nbr, name, access, sym, val, descr) \ + SYSCTL_OID(parent, nbr, name, CTLTYPE_UINT|(access), \ + & mod ## _0._ ## sym, val, sysctl_handle_int, "IU", descr) +#endif #endif #define SYSCTL_ADD_UINT(ctx, parent, nbr, name, access, ptr, val, descr) \ @@ -374,11 +399,19 @@ sym, sizeof(struct type), sysctl_handle_v_opaque, \ "S," #type, descr) #else +#ifdef VIMAGE_GLOBALS #define SYSCTL_V_STRUCT(subs, mod, parent, nbr, name, access, sym, \ type, descr) \ SYSCTL_OID(parent, nbr, name, CTLTYPE_OPAQUE|(access), \ &sym, sizeof(struct type), sysctl_handle_opaque, \ "S," #type, descr) +#else +#define SYSCTL_V_STRUCT(subs, mod, parent, nbr, name, access, sym, \ + type, descr) \ + SYSCTL_OID(parent, nbr, name, CTLTYPE_OPAQUE|(access), \ + & mod ## _0._ ## sym, sizeof(struct type), \ + sysctl_handle_opaque, "S," #type, descr) +#endif #endif #define SYSCTL_ADD_STRUCT(ctx, parent, nbr, name, access, ptr, type, descr) \ ==== //depot/projects/vimage-commit2/src/sys/sys/vimage.h#23 (text+ko) ==== @@ -33,14 +33,17 @@ #ifndef _SYS_VIMAGE_H_ #define _SYS_VIMAGE_H_ -#define VIMAGE_GLOBALS 1 +#ifdef VIMAGE_GLOBALS +#define VSYM(base, sym) (sym) +#else +#define VSYM(base, sym) (base ## _0._ ## sym) +#endif /* Non-VIMAGE null-macros */ #define CURVNET_SET(arg) #define CURVNET_SET_QUIET(arg) #define CURVNET_RESTORE() #define VNET_ASSERT(condition) -#define VSYM(base, sym) (sym) #define INIT_FROM_VNET(vnet, modindex, modtype, sym) #define VNET_ITERATOR_DECL(arg) #define VNET_FOREACH(arg) @@ -58,11 +61,11 @@ #define P_TO_VCPU(p) /* XXX those defines bellow should probably go into vprocg.h and vcpu.h */ -#define VPROCG(sym) VSYM(vprocg, sym) -#define VCPU(sym) VSYM(vcpu, sym) +#define VPROCG(sym) (sym) +#define VCPU(sym) (sym) #define V_hostname VPROCG(hostname) -#define G_hostname VSYM(basevprocg, hostname) /* global hostname */ +#define G_hostname VPROCG(hostname) /* global hostname */ #define V_domainname VPROCG(domainname) #endif /* !_SYS_VIMAGE_H_ */