PERFORCE change 111145 for review
Marko Zec
zec at FreeBSD.org
Tue Dec 5 07:03:42 PST 2006
http://perforce.freebsd.org/chv.cgi?CH=111145
Change 111145 by zec at zec_tca51 on 2006/12/05 15:03:17
If a function has an argument that holds a pointer to a vnet
instance, set the local vnet * using this info, instead
of using the per-thread vnet affinity (curvnetb). Furthermore,
the macro which sets the local vnet * will compare the target
vnet with the per-thread curvnetb, and panic if those two do
not match. This should allow us to catch more inconsistencies
than solely relying on curvnetb to be pointing to the correct
vnet instance all the time.
Affected files ...
.. //depot/projects/vimage/src/sys/kern/kern_vimage.c#5 edit
.. //depot/projects/vimage/src/sys/net/if.c#5 edit
.. //depot/projects/vimage/src/sys/net/if_loop.c#3 edit
.. //depot/projects/vimage/src/sys/net/if_stf.c#3 edit
.. //depot/projects/vimage/src/sys/net/rtsock.c#4 edit
.. //depot/projects/vimage/src/sys/netgraph/ng_ether.c#3 edit
.. //depot/projects/vimage/src/sys/netinet/if_ether.c#4 edit
.. //depot/projects/vimage/src/sys/netinet/igmp.c#3 edit
.. //depot/projects/vimage/src/sys/netinet/in.c#3 edit
.. //depot/projects/vimage/src/sys/netinet/in_pcb.c#3 edit
.. //depot/projects/vimage/src/sys/netinet/ip_input.c#3 edit
.. //depot/projects/vimage/src/sys/netinet/raw_ip.c#3 edit
.. //depot/projects/vimage/src/sys/netinet/tcp_output.c#3 edit
.. //depot/projects/vimage/src/sys/netinet/tcp_usrreq.c#3 edit
.. //depot/projects/vimage/src/sys/netinet/udp_usrreq.c#3 edit
.. //depot/projects/vimage/src/sys/netinet6/in6_ifattach.c#3 edit
.. //depot/projects/vimage/src/sys/netinet6/in6_pcb.c#3 edit
.. //depot/projects/vimage/src/sys/netinet6/nd6.c#4 edit
.. //depot/projects/vimage/src/sys/netinet6/raw_ip6.c#3 edit
.. //depot/projects/vimage/src/sys/netinet6/scope6.c#3 edit
.. //depot/projects/vimage/src/sys/netinet6/udp6_usrreq.c#3 edit
.. //depot/projects/vimage/src/sys/sys/vimage.h#4 edit
Differences ...
==== //depot/projects/vimage/src/sys/kern/kern_vimage.c#5 (text+ko) ====
==== //depot/projects/vimage/src/sys/net/if.c#5 (text+ko) ====
@@ -408,6 +408,8 @@
#endif
if_slowtimo(0);
#ifdef VIMAGE
+ } else {
+ panic("if_check() called for a non-default vimage!?!");
}
#endif
}
==== //depot/projects/vimage/src/sys/net/if_loop.c#3 (text+ko) ====
@@ -124,7 +124,7 @@
lo_clone_destroy(ifp)
struct ifnet *ifp;
{
- INIT_VNET_NET(curvnetb);
+ INIT_VNET_NET(ifp->if_vnetb);
struct lo_softc *sc;
sc = ifp->if_softc;
@@ -291,7 +291,7 @@
int af;
int hlen;
{
- INIT_VNET_NET(curvnetb);
+ INIT_VNET_NET(ifp->if_vnetb);
int isr;
M_ASSERTPKTHDR(m);
==== //depot/projects/vimage/src/sys/net/if_stf.c#3 (text+ko) ====
@@ -365,7 +365,7 @@
stf_getsrcifa6(ifp)
struct ifnet *ifp;
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(ifp->if_vnetb);
struct ifaddr *ia;
struct in_ifaddr *ia4;
struct sockaddr_in6 *sin6;
==== //depot/projects/vimage/src/sys/net/rtsock.c#4 (text+ko) ====
@@ -317,7 +317,7 @@
route_output(struct mbuf *m, struct socket *so)
{
#define sa_equal(a1, a2) (bcmp((a1), (a2), (a1)->sa_len) == 0)
- INIT_VNET_NET(curvnetb);
+ INIT_VNET_NET(so->so_vnetb);
struct rt_msghdr *rtm = NULL;
struct rtentry *rt = NULL;
struct radix_node_head *rnh;
==== //depot/projects/vimage/src/sys/netgraph/ng_ether.c#3 (text+ko) ====
@@ -741,22 +741,14 @@
/* Create nodes for any already-existing Ethernet interfaces */
IFNET_RLOCK();
-#ifdef VIMAGE
- struct vnet_base *vnetb_iter;
- /* XXX LOCKING */
- LIST_FOREACH(vnetb_iter, &vnetb_head, vnetb_le) {
- CURVNETB_SET(vnetb_iter);
- INIT_VNET_NET(vnetb_iter);
-#endif
+ VNETB_ITERLOOP_BEGIN();
+ INIT_VNET_NET(vnetb_iter);
TAILQ_FOREACH(ifp, &V_ifnet, if_link) {
if (ifp->if_type == IFT_ETHER
|| ifp->if_type == IFT_L2VLAN)
ng_ether_attach(ifp);
}
-#ifdef VIMAGE
- CURVNETB_RESTORE();
- }
-#endif
+ VNETB_ITERLOOP_END();
IFNET_RUNLOCK();
break;
==== //depot/projects/vimage/src/sys/netinet/if_ether.c#4 (text+ko) ====
@@ -603,7 +603,6 @@
in_arpinput(m)
struct mbuf *m;
{
- INIT_VNET_INET(curvnetb);
struct arphdr *ah;
struct ifnet *ifp = m->m_pkthdr.rcvif;
struct llinfo_arp *la;
@@ -621,6 +620,7 @@
#ifdef DEV_CARP
int carp_match = 0;
#endif
+ INIT_VNET_INET(ifp->if_vnetb);
if (ifp->if_bridge)
bridged = 1;
@@ -995,7 +995,8 @@
static void
arp_init(void)
{
- INIT_VNET_INET(curvnetb); /* XXX */
+ INIT_VNET_INET(curvnetb); /* XXX should panic here! */
+printf("arp_init\n");
arpintrq.ifq_maxlen = 50;
mtx_init(&arpintrq.ifq_mtx, "arp_inq", NULL, MTX_DEF);
==== //depot/projects/vimage/src/sys/netinet/igmp.c#3 (text+ko) ====
@@ -156,7 +156,7 @@
static struct router_info *
find_rti(struct ifnet *ifp)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(ifp->if_vnetb);
struct router_info *rti;
mtx_assert(&igmp_mtx, MA_OWNED);
@@ -185,7 +185,6 @@
void
igmp_input(register struct mbuf *m, int off)
{
- INIT_VNET_INET(curvnetb);
register int iphlen = off;
register struct igmp *igmp;
register struct ip *ip;
@@ -197,6 +196,7 @@
struct in_multistep step;
struct router_info *rti;
int timer; /** timer value in the igmp query header **/
+ INIT_VNET_INET(ifp->if_vnetb);
++igmpstat.igps_rcv_total;
==== //depot/projects/vimage/src/sys/netinet/in.c#3 (text+ko) ====
@@ -720,7 +720,7 @@
struct sockaddr_in *sin;
int scrub;
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(ifp->if_vnetb);
register u_long i = ntohl(sin->sin_addr.s_addr);
struct sockaddr_in oldaddr;
int s = splimp(), flags = RTF_UP, error = 0;
@@ -998,7 +998,7 @@
register struct in_addr *ap;
register struct ifnet *ifp;
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(ifp->if_vnetb);
register struct in_multi *inm;
int error;
@@ -1107,7 +1107,7 @@
in_delmulti_ifp(ifp)
register struct ifnet *ifp;
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(ifp->if_vnetb);
struct in_multi *inm;
struct in_multi *oinm;
@@ -1129,7 +1129,7 @@
in_ifdetach(ifp)
struct ifnet *ifp;
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(ifp->if_vnetb);
in_pcbpurgeif0(&V_ripcbinfo, ifp);
in_pcbpurgeif0(&V_udbinfo, ifp);
==== //depot/projects/vimage/src/sys/netinet/in_pcb.c#3 (text+ko) ====
@@ -270,7 +270,6 @@
in_pcbbind_setup(struct inpcb *inp, struct sockaddr *nam, in_addr_t *laddrp,
u_short *lportp, struct ucred *cred)
{
- INIT_VNET_INET(curvnetb);
struct socket *so = inp->inp_socket;
unsigned short *lastport;
struct sockaddr_in *sin;
@@ -280,6 +279,7 @@
int wild = 0, reuseport = (so->so_options & SO_REUSEPORT);
int error, prison = 0;
int dorandom;
+ INIT_VNET_INET(so->so_vnetb);
INP_INFO_WLOCK_ASSERT(pcbinfo);
INP_LOCK_ASSERT(inp);
==== //depot/projects/vimage/src/sys/netinet/ip_input.c#3 (text+ko) ====
@@ -1604,7 +1604,7 @@
int
ip_rsvp_init(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
if (so->so_type != SOCK_RAW ||
so->so_proto->pr_protocol != IPPROTO_RSVP)
==== //depot/projects/vimage/src/sys/netinet/raw_ip.c#3 (text+ko) ====
@@ -281,7 +281,7 @@
int
rip_output(struct mbuf *m, struct socket *so, u_long dst)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct ip *ip;
int error;
struct inpcb *inp = sotoinpcb(so);
@@ -616,7 +616,7 @@
static int
rip_attach(struct socket *so, int proto, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
int error;
@@ -654,7 +654,7 @@
static void
rip_detach(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
inp = sotoinpcb(so);
@@ -690,7 +690,7 @@
static void
rip_abort(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
inp = sotoinpcb(so);
@@ -706,7 +706,7 @@
static void
rip_close(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
inp = sotoinpcb(so);
@@ -722,7 +722,7 @@
static int
rip_disconnect(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
if ((so->so_state & SS_ISCONNECTED) == 0)
@@ -741,8 +741,8 @@
static int
rip_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
{
- INIT_VNET_NET(curvnetb);
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_NET(so->so_vnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct sockaddr_in *addr = (struct sockaddr_in *)nam;
struct inpcb *inp;
@@ -776,8 +776,8 @@
static int
rip_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
{
- INIT_VNET_NET(curvnetb);
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_NET(so->so_vnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct sockaddr_in *addr = (struct sockaddr_in *)nam;
struct inpcb *inp;
@@ -940,7 +940,7 @@
static int
rip_sockaddr(struct socket *so, struct sockaddr **nam)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
return (in_setsockaddr(so, nam, &V_ripcbinfo));
}
@@ -951,7 +951,7 @@
static int
rip_peeraddr(struct socket *so, struct sockaddr **nam)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
return (in_setpeeraddr(so, nam, &V_ripcbinfo));
}
==== //depot/projects/vimage/src/sys/netinet/tcp_output.c#3 (text+ko) ====
@@ -120,8 +120,8 @@
int
tcp_output(struct tcpcb *tp)
{
- INIT_VNET_INET(curvnetb);
struct socket *so = tp->t_inpcb->inp_socket;
+ INIT_VNET_INET(so->so_vnetb);
long len, recwin, sendwin;
int off, flags, error;
#ifdef TCP_SIGNATURE
==== //depot/projects/vimage/src/sys/netinet/tcp_usrreq.c#3 (text+ko) ====
@@ -152,7 +152,7 @@
static void
tcp_detach(struct socket *so, struct inpcb *inp)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct tcpcb *tp;
#ifdef INET6
int isipv6 = INP_CHECK_SOCKAF(so, AF_INET6) != 0;
@@ -247,7 +247,7 @@
static void
tcp_usr_detach(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
struct tcpcb *tp;
TCPDEBUG0;
@@ -272,7 +272,7 @@
static int
tcp_usr_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
int error = 0;
struct inpcb *inp;
struct tcpcb *tp = NULL;
@@ -313,7 +313,7 @@
static int
tcp6_usr_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
int error = 0;
struct inpcb *inp;
struct tcpcb *tp = NULL;
@@ -372,7 +372,7 @@
static int
tcp_usr_listen(struct socket *so, int backlog, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
int error = 0;
struct inpcb *inp;
struct tcpcb *tp = NULL;
@@ -409,7 +409,7 @@
static int
tcp6_usr_listen(struct socket *so, int backlog, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
int error = 0;
struct inpcb *inp;
struct tcpcb *tp = NULL;
@@ -457,7 +457,7 @@
static int
tcp_usr_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
int error = 0;
struct inpcb *inp;
struct tcpcb *tp = NULL;
@@ -500,7 +500,7 @@
static int
tcp6_usr_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
int error = 0;
struct inpcb *inp;
struct tcpcb *tp = NULL;
@@ -573,7 +573,7 @@
static int
tcp_usr_disconnect(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
struct tcpcb *tp = NULL;
int error = 0;
@@ -702,7 +702,7 @@
static int
tcp_sockaddr(struct socket *so, struct sockaddr **nam)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
return (in_setsockaddr(so, nam, &V_tcbinfo));
}
@@ -714,7 +714,7 @@
static int
tcp_peeraddr(struct socket *so, struct sockaddr **nam)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
return (in_setpeeraddr(so, nam, &V_tcbinfo));
}
@@ -725,7 +725,7 @@
static int
tcp_usr_shutdown(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
int error = 0;
struct inpcb *inp;
struct tcpcb *tp = NULL;
@@ -792,7 +792,7 @@
tcp_usr_send(struct socket *so, int flags, struct mbuf *m,
struct sockaddr *nam, struct mbuf *control, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
int error = 0;
struct inpcb *inp;
struct tcpcb *tp = NULL;
@@ -948,7 +948,7 @@
static void
tcp_usr_abort(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
struct tcpcb *tp = NULL;
TCPDEBUG0;
@@ -987,7 +987,7 @@
static void
tcp_usr_close(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
struct tcpcb *tp = NULL;
TCPDEBUG0;
@@ -1121,12 +1121,12 @@
struct sockaddr *nam;
struct thread *td;
{
- INIT_VNET_INET(curvnetb);
struct inpcb *inp = tp->t_inpcb, *oinp;
struct socket *so = inp->inp_socket;
struct in_addr laddr;
u_short lport;
int error;
+ INIT_VNET_INET(so->so_vnetb);
INP_INFO_WLOCK_ASSERT(&V_tcbinfo);
INP_LOCK_ASSERT(inp);
@@ -1176,12 +1176,12 @@
struct sockaddr *nam;
struct thread *td;
{
- INIT_VNET_INET(curvnetb);
struct inpcb *inp = tp->t_inpcb, *oinp;
struct socket *so = inp->inp_socket;
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)nam;
struct in6_addr *addr6;
int error;
+ INIT_VNET_INET(so->so_vnetb);
INP_INFO_WLOCK_ASSERT(&V_tcbinfo);
INP_LOCK_ASSERT(inp);
@@ -1452,7 +1452,7 @@
tcp_attach(so)
struct socket *so;
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
register struct tcpcb *tp;
struct inpcb *inp;
int error;
@@ -1514,9 +1514,9 @@
tcp_disconnect(tp)
register struct tcpcb *tp;
{
- INIT_VNET_INET(curvnetb);
struct inpcb *inp = tp->t_inpcb;
struct socket *so = inp->inp_socket;
+ INIT_VNET_INET(so->so_vnetb);
INP_INFO_WLOCK_ASSERT(&V_tcbinfo);
INP_LOCK_ASSERT(inp);
==== //depot/projects/vimage/src/sys/netinet/udp_usrreq.c#3 (text+ko) ====
@@ -981,7 +981,7 @@
static void
udp_abort(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
inp = sotoinpcb(so);
@@ -1000,7 +1000,7 @@
static int
udp_attach(struct socket *so, int proto, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
int error;
@@ -1027,7 +1027,7 @@
static int
udp_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
int error;
@@ -1044,7 +1044,7 @@
static void
udp_close(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
inp = sotoinpcb(so);
@@ -1063,7 +1063,7 @@
static int
udp_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
int error;
struct sockaddr_in *sin;
@@ -1091,7 +1091,7 @@
static void
udp_detach(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
inp = sotoinpcb(so);
@@ -1108,7 +1108,7 @@
static int
udp_disconnect(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
inp = sotoinpcb(so);
@@ -1163,7 +1163,7 @@
static int
udp_sockaddr(struct socket *so, struct sockaddr **nam)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
return (in_setsockaddr(so, nam, &V_udbinfo));
}
@@ -1175,7 +1175,7 @@
static int
udp_peeraddr(struct socket *so, struct sockaddr **nam)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
return (in_setpeeraddr(so, nam, &V_udbinfo));
}
==== //depot/projects/vimage/src/sys/netinet6/in6_ifattach.c#3 (text+ko) ====
@@ -360,7 +360,7 @@
struct ifnet *altifp; /* secondary EUI64 source */
struct in6_addr *in6;
{
- INIT_VNET_NET(curvnetb);
+ INIT_VNET_NET(ifp0->if_vnetb);
struct ifnet *ifp;
/* first, try to get it from the interface itself */
@@ -734,8 +734,8 @@
in6_ifdetach(ifp)
struct ifnet *ifp;
{
- INIT_VNET_NET(curvnetb);
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_NET(ifp->if_vnetb);
+ INIT_VNET_INET(ifp->if_vnetb);
struct in6_ifaddr *ia, *oia;
struct ifaddr *ifa, *next;
struct rtentry *rt;
==== //depot/projects/vimage/src/sys/netinet6/in6_pcb.c#3 (text+ko) ====
@@ -562,7 +562,7 @@
int
in6_mapped_sockaddr(struct socket *so, struct sockaddr **nam)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
int error;
@@ -584,7 +584,7 @@
int
in6_mapped_peeraddr(struct socket *so, struct sockaddr **nam)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
int error;
==== //depot/projects/vimage/src/sys/netinet6/nd6.c#4 (text+ko) ====
@@ -1197,12 +1197,12 @@
struct rtentry *rt;
struct rt_addrinfo *info; /* xxx unused */
{
- INIT_VNET_NET(curvnetb);
struct sockaddr *gate = rt->rt_gateway;
struct llinfo_nd6 *ln = (struct llinfo_nd6 *)rt->rt_llinfo;
static struct sockaddr_dl null_sdl = {sizeof(null_sdl), AF_LINK};
struct ifnet *ifp = rt->rt_ifp;
struct ifaddr *ifa;
+ INIT_VNET_NET(ifp->if_vnetb);
RT_LOCK_ASSERT(rt);
==== //depot/projects/vimage/src/sys/netinet6/raw_ip6.c#3 (text+ko) ====
@@ -553,7 +553,7 @@
static int
rip6_attach(struct socket *so, int proto, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
struct icmp6_filter *filter;
int error;
@@ -591,7 +591,7 @@
static void
rip6_detach(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
inp = sotoinpcb(so);
@@ -649,8 +649,8 @@
static int
rip6_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
{
- INIT_VNET_NET(curvnetb);
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_NET(so->so_vnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp = sotoinpcb(so);
struct sockaddr_in6 *addr = (struct sockaddr_in6 *)nam;
struct ifaddr *ia = NULL;
@@ -684,8 +684,8 @@
static int
rip6_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
{
- INIT_VNET_NET(curvnetb);
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_NET(so->so_vnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp = sotoinpcb(so);
struct sockaddr_in6 *addr = (struct sockaddr_in6 *)nam;
struct in6_addr *in6a = NULL;
@@ -757,7 +757,7 @@
rip6_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp = sotoinpcb(so);
struct sockaddr_in6 tmp;
struct sockaddr_in6 *dst;
==== //depot/projects/vimage/src/sys/netinet6/scope6.c#3 (text+ko) ====
@@ -115,7 +115,7 @@
struct ifnet *ifp;
struct scope6_id *idlist;
{
- INIT_VNET_NET(curvnetb);
+ INIT_VNET_NET(ifp->if_vnetb);
int i;
int error = 0;
struct scope6_id *sid = NULL;
==== //depot/projects/vimage/src/sys/netinet6/udp6_usrreq.c#3 (text+ko) ====
@@ -485,7 +485,7 @@
static void
udp6_abort(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
inp = sotoinpcb(so);
@@ -515,7 +515,7 @@
static int
udp6_attach(struct socket *so, int proto, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
int error;
@@ -554,7 +554,7 @@
static int
udp6_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
int error;
@@ -594,7 +594,7 @@
static void
udp6_close(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
inp = sotoinpcb(so);
@@ -623,7 +623,7 @@
static int
udp6_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
int error;
@@ -676,7 +676,7 @@
static void
udp6_detach(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
inp = sotoinpcb(so);
@@ -692,7 +692,7 @@
static int
udp6_disconnect(struct socket *so)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
int error;
@@ -731,7 +731,7 @@
udp6_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr,
struct mbuf *control, struct thread *td)
{
- INIT_VNET_INET(curvnetb);
+ INIT_VNET_INET(so->so_vnetb);
struct inpcb *inp;
int error = 0;
==== //depot/projects/vimage/src/sys/sys/vimage.h#4 (text+ko) ====
@@ -147,7 +147,10 @@
#define VSYM(base, sym) ((base)->_##sym)
#define INIT_FROM_VNET_BASE(vnetb, modindex, modtype, sym) \
- VNET_ASSERT(vnetb != 0); \
+ if (vnetb != curvnetb) \
+ panic("in %s:%d %s()\n vnetb=%p curvnetb=%p", \
+ __FILE__, __LINE__, __FUNCTION__, \
+ vnetb, curvnetb); \
modtype *sym = (vnetb)->mod_data[modindex];
#define VNETB_ITERLOOP_BEGIN() \
More information about the p4-projects
mailing list