Module Name:    src
Committed By:   pooka
Date:           Tue Oct 19 19:19:41 UTC 2010

Modified Files:
        src/sys/rump/net/lib/libvirtif: component.c if_virt.c

Log Message:
Make virtif a cloner so that it can be brough to life also with
"ifconfig create".  As previously, virt<n> interfaces with the
host's /dev/tap<n> (I guess it could be made explicit with
"ifconfig media", but leave it this way for now).


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/rump/net/lib/libvirtif/component.c
cvs rdiff -u -r1.19 -r1.20 src/sys/rump/net/lib/libvirtif/if_virt.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/rump/net/lib/libvirtif/component.c
diff -u src/sys/rump/net/lib/libvirtif/component.c:1.2 src/sys/rump/net/lib/libvirtif/component.c:1.3
--- src/sys/rump/net/lib/libvirtif/component.c:1.2	Mon Mar  1 13:12:21 2010
+++ src/sys/rump/net/lib/libvirtif/component.c	Tue Oct 19 19:19:41 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: component.c,v 1.2 2010/03/01 13:12:21 pooka Exp $	*/
+/*	$NetBSD: component.c,v 1.3 2010/10/19 19:19:41 pooka Exp $	*/
 
 /*
  * Copyright (c) 2009 Antti Kantee.  All Rights Reserved.
@@ -28,17 +28,20 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.2 2010/03/01 13:12:21 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.3 2010/10/19 19:19:41 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/domain.h>
 #include <sys/protosw.h>
 
+#include <net/if.h>
+
 #include "rump_private.h"
 #include "rump_net_private.h"
 
 RUMP_COMPONENT(RUMP_COMPONENT_NET_IF)
 {
+	extern struct if_clone virtif_cloner; /* XXX */
 
-	rump_dummyif_create();
+	if_clone_attach(&virtif_cloner);
 }

Index: src/sys/rump/net/lib/libvirtif/if_virt.c
diff -u src/sys/rump/net/lib/libvirtif/if_virt.c:1.19 src/sys/rump/net/lib/libvirtif/if_virt.c:1.20
--- src/sys/rump/net/lib/libvirtif/if_virt.c:1.19	Tue Aug 10 18:06:10 2010
+++ src/sys/rump/net/lib/libvirtif/if_virt.c	Tue Oct 19 19:19:41 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_virt.c,v 1.19 2010/08/10 18:06:10 pooka Exp $	*/
+/*	$NetBSD: if_virt.c,v 1.20 2010/10/19 19:19:41 pooka Exp $	*/
 
 /*
  * Copyright (c) 2008 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_virt.c,v 1.19 2010/08/10 18:06:10 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_virt.c,v 1.20 2010/10/19 19:19:41 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/condvar.h>
@@ -74,29 +74,11 @@
 
 static void virtif_worker(void *);
 static void virtif_sender(void *);
+static int  virtif_clone(struct if_clone *, int);
+static int  virtif_unclone(struct ifnet *);
 
-#if 0
-/*
- * Create a socket and call ifioctl() to configure the interface.
- * This trickles down to virtif_ioctl().
- */
-static int
-configaddr(struct ifnet *ifp, struct ifaliasreq *ia)
-{
-	struct socket *so;
-	int error;
-
-	strcpy(ia->ifra_name, ifp->if_xname);
-	error = socreate(ia->ifra_addr.sa_family, &so, SOCK_DGRAM,
-	    0, curlwp, NULL);
-	if (error)
-		return error;
-	error = ifioctl(so, SIOCAIFADDR, ia, curlwp);
-	soclose(so);
-
-	return error;
-}
-#endif
+struct if_clone virtif_cloner =
+    IF_CLONE_INITIALIZER(VIRTIF_BASE, virtif_clone, virtif_unclone);
 
 int
 rump_virtif_create(int num)
@@ -140,6 +122,20 @@
 }
 
 static int
+virtif_clone(struct if_clone *ifc, int unit)
+{
+
+	return rump_virtif_create(unit);
+}
+
+static int
+virtif_unclone(struct ifnet *ifp)
+{
+
+	return EOPNOTSUPP;
+}
+
+static int
 virtif_init(struct ifnet *ifp)
 {
 	int rv;

Reply via email to