Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Dec 2006 12:21:56 GMT
From:      Marko Zec <zec@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 111452 for review
Message-ID:  <200612111221.kBBCLuJa049739@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=111452

Change 111452 by zec@zec_tca51 on 2006/12/11 12:21:41

	Attempt to virtualize raw sockets.

Affected files ...

.. //depot/projects/vimage/src/sys/net/raw_cb.c#2 edit
.. //depot/projects/vimage/src/sys/net/raw_cb.h#2 edit
.. //depot/projects/vimage/src/sys/net/raw_usrreq.c#2 edit
.. //depot/projects/vimage/src/sys/net/vnet.h#3 edit

Differences ...

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

@@ -30,6 +30,8 @@
  * $FreeBSD: src/sys/net/raw_cb.c,v 1.34 2006/06/02 08:27:15 rwatson Exp $
  */
 
+#include "opt_vimage.h"
+
 #include <sys/param.h>
 #include <sys/domain.h>
 #include <sys/lock.h>
@@ -39,7 +41,9 @@
 #include <sys/socket.h>
 #include <sys/socketvar.h>
 #include <sys/systm.h>
+#include <sys/vimage.h>
 
+#include <net/vnet.h>
 #include <net/raw_cb.h>
 
 /*
@@ -52,7 +56,9 @@
  */
 
 struct mtx rawcb_mtx;
+#ifndef VIMAGE
 struct rawcb_list_head rawcb_list;
+#endif
 
 const static u_long	raw_sendspace = RAWSNDQ;
 const static u_long	raw_recvspace = RAWRCVQ;
@@ -66,6 +72,7 @@
 	register struct socket *so;
 	int proto;
 {
+	INIT_VNET_NET(so->so_vnetb);
 	register struct rawcb *rp = sotorawcb(so);
 	int error;
 
@@ -83,7 +90,7 @@
 	rp->rcb_proto.sp_family = so->so_proto->pr_domain->dom_family;
 	rp->rcb_proto.sp_protocol = proto;
 	mtx_lock(&rawcb_mtx);
-	LIST_INSERT_HEAD(&rawcb_list, rp, list);
+	LIST_INSERT_HEAD(&V_rawcb_list, rp, list);
 	mtx_unlock(&rawcb_mtx);
 	return (0);
 }

==== //depot/projects/vimage/src/sys/net/raw_cb.h#2 (text+ko) ====

@@ -56,7 +56,11 @@
 #define	RAWRCVQ		8192
 
 #ifdef _KERNEL
+
+#ifndef VIMAGE
 extern LIST_HEAD(rawcb_list_head, rawcb) rawcb_list;
+#endif
+
 extern struct mtx rawcb_mtx;
 
 /* protosw entries */

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

@@ -30,6 +30,8 @@
  * $FreeBSD: src/sys/net/raw_usrreq.c,v 1.44 2006/11/06 13:42:02 rwatson Exp $
  */
 
+#include "opt_vimage.h"
+
 #include <sys/param.h>
 #include <sys/kernel.h>
 #include <sys/lock.h>
@@ -43,7 +45,9 @@
 #include <sys/socketvar.h>
 #include <sys/sx.h>
 #include <sys/systm.h>
+#include <sys/vimage.h>
 
+#include <net/vnet.h>
 #include <net/raw_cb.h>
 
 MTX_SYSINIT(rawcb_mtx, &rawcb_mtx, "rawcb", MTX_DEF);
@@ -54,8 +58,11 @@
 void
 raw_init()
 {
+#ifndef VIMAGE
+	INIT_VNET_NET(curvnetb);
 
-	LIST_INIT(&rawcb_list);
+	LIST_INIT(&V_rawcb_list);
+#endif
 }
 
 
@@ -73,13 +80,14 @@
 	register struct sockproto *proto;
 	struct sockaddr *src, *dst;
 {
+	INIT_VNET_NET(curvnetb);
 	register struct rawcb *rp;
 	register struct mbuf *m = m0;
 	struct socket *last;
 
 	last = 0;
 	mtx_lock(&rawcb_mtx);
-	LIST_FOREACH(rp, &rawcb_list, list) {
+	LIST_FOREACH(rp, &V_rawcb_list, list) {
 		if (rp->rcb_proto.sp_family != proto->sp_family)
 			continue;
 		if (rp->rcb_proto.sp_protocol  &&

==== //depot/projects/vimage/src/sys/net/vnet.h#3 (text+ko) ====

@@ -36,11 +36,13 @@
 
 #ifdef VIMAGE
 #include <sys/proc.h>
+#include <sys/protosw.h>
 #include <sys/socket.h>
 
 #include <net/if.h>
 #include <net/if_var.h>
 #include <net/route.h>
+#include <net/raw_cb.h>
 
 struct vnet_net {
 	struct	vnet_base *parent_vnetb;
@@ -58,7 +60,9 @@
 	int	_rttrash;
 
 	struct	ifnet *_loif;
-	LIST_HEAD(lo_list, lo_softc) _lo_list;
+	LIST_HEAD(, lo_softc) _lo_list;
+
+	LIST_HEAD(, rawcb) _rawcb_list;
 };
 
 extern struct vnet_net vnet_net_0;
@@ -84,5 +88,6 @@
 #define V_rttrash	VNET_NET(rttrash)
 #define V_loif		VNET_NET(loif)
 #define V_lo_list	VNET_NET(lo_list)
+#define V_rawcb_list	VNET_NET(rawcb_list)
 
 #endif /* !_NET_VNET_H_ */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200612111221.kBBCLuJa049739>