Module Name:    src
Committed By:   pooka
Date:           Wed May 27 23:41:20 UTC 2009

Modified Files:
        src/sys/rump/librump/rumpnet: rump_net_private.h
        src/sys/rump/net/lib: Makefile.inc
        src/sys/rump/net/lib/libvirtif: if_virt.c

Log Message:
Add a dummyif, which doesn't actually traffic any cargo, but since
it has no backend it can always be attached and is therefore
convenient for testing ifconfig.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/rump/librump/rumpnet/rump_net_private.h
cvs rdiff -u -r1.2 -r1.3 src/sys/rump/net/lib/Makefile.inc
cvs rdiff -u -r1.9 -r1.10 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/librump/rumpnet/rump_net_private.h
diff -u src/sys/rump/librump/rumpnet/rump_net_private.h:1.1 src/sys/rump/librump/rumpnet/rump_net_private.h:1.2
--- src/sys/rump/librump/rumpnet/rump_net_private.h:1.1	Wed Oct 15 13:00:40 2008
+++ src/sys/rump/librump/rumpnet/rump_net_private.h	Wed May 27 23:41:20 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: rump_net_private.h,v 1.1 2008/10/15 13:00:40 pooka Exp $	*/
+/*	$NetBSD: rump_net_private.h,v 1.2 2009/05/27 23:41:20 pooka Exp $	*/
 
 /*
  * Copyright (c) 2008 Antti Kantee.  All Rights Reserved.
@@ -31,4 +31,6 @@
 void		rump_net_init(void);
 void		rump_netisr_init(void);
 
+void		rump_dummyif_create(void);
+
 #endif /* _SYS_RUMP_NET_PRIVATE_H_ */

Index: src/sys/rump/net/lib/Makefile.inc
diff -u src/sys/rump/net/lib/Makefile.inc:1.2 src/sys/rump/net/lib/Makefile.inc:1.3
--- src/sys/rump/net/lib/Makefile.inc:1.2	Thu Jan  1 19:43:58 2009
+++ src/sys/rump/net/lib/Makefile.inc	Wed May 27 23:41:20 2009
@@ -1,7 +1,7 @@
-#	$NetBSD: Makefile.inc,v 1.2 2009/01/01 19:43:58 pooka Exp $
+#	$NetBSD: Makefile.inc,v 1.3 2009/05/27 23:41:20 pooka Exp $
 #
 
 RUMPTOP=	${.CURDIR}/../../..
-CPPFLAGS+=	-I${RUMPTOP}/librump/rumpnet/opt
+CPPFLAGS+=	-I${RUMPTOP}/librump/rumpnet -I${RUMPTOP}/librump/rumpnet/opt
 
 .include "${RUMPTOP}/Makefile.rump"

Index: src/sys/rump/net/lib/libvirtif/if_virt.c
diff -u src/sys/rump/net/lib/libvirtif/if_virt.c:1.9 src/sys/rump/net/lib/libvirtif/if_virt.c:1.10
--- src/sys/rump/net/lib/libvirtif/if_virt.c:1.9	Tue May 26 19:03:05 2009
+++ src/sys/rump/net/lib/libvirtif/if_virt.c	Wed May 27 23:41:20 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_virt.c,v 1.9 2009/05/26 19:03:05 pooka Exp $	*/
+/*	$NetBSD: if_virt.c,v 1.10 2009/05/27 23:41:20 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.9 2009/05/26 19:03:05 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_virt.c,v 1.10 2009/05/27 23:41:20 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/condvar.h>
@@ -48,6 +48,7 @@
 #include <rump/rumpuser.h>
 
 #include "rump_private.h"
+#include "rump_net_private.h"
 
 /*
  * Virtual interface for userspace purposes.  Uses tap(4) to
@@ -253,3 +254,49 @@
 
 	mutex_exit(softnet_lock);
 }
+
+/*
+ * dummyif is a nada-interface.
+ * As it requires nothing external, it can be used for testing
+ * interface configuration.
+ */
+static int	dummyif_init(struct ifnet *);
+static void	dummyif_start(struct ifnet *);
+
+void
+rump_dummyif_create()
+{
+	struct ifnet *ifp;
+	struct ethercom *ec;
+	uint8_t enaddr[ETHER_ADDR_LEN] = { 0xb2, 0x0a, 0x00, 0x0b, 0x0e, 0x01 };
+
+	enaddr[2] = arc4random() & 0xff;
+	enaddr[5] = arc4random() & 0xff;
+
+	ec = kmem_zalloc(sizeof(*ec), KM_SLEEP);
+
+	ifp = &ec->ec_if;
+	strlcpy(ifp->if_xname, "dummy0", sizeof(ifp->if_xname));
+	ifp->if_softc = ifp;
+	ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
+	ifp->if_init = dummyif_init;
+	ifp->if_ioctl = virtif_ioctl;
+	ifp->if_start = dummyif_start;
+
+	if_attach(ifp);
+	ether_ifattach(ifp, enaddr);
+}
+
+static int
+dummyif_init(struct ifnet *ifp)
+{
+
+	ifp->if_flags |= IFF_RUNNING;
+	return 0;
+}
+
+static void
+dummyif_start(struct ifnet *ifp)
+{
+
+}

Reply via email to