Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 06 Aug 2004 15:07:53 -0700
From:      Maksim Yevmenkin <maksim.yevmenkin@savvis.net>
To:        cokane@cokane.org
Cc:        hackers@freebsd.org
Subject:   Re: Network interface RUNNING and UP flags
Message-ID:  <41140139.5080803@savvis.net>
In-Reply-To: <346a8022040806145018a5e18@mail.gmail.com>
References:  <346a8022040806145018a5e18@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------090001030208020407050106
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit


> 2) Is there a way to set this interface flag without assigning an IPv4
> address (or any address for that matter) first?
> 
> Mainly for number two, I would like to be able to run interfaces
> bridged together without having to also give all of them addresses.

please try the attached (untested!) patch. it should set iff_running 
flag on the interface as soon as the control device is opened.

max

--------------090001030208020407050106
Content-Type: text/plain;
 name="if_tap.c.diff.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="if_tap.c.diff.txt"

--- if_tap.c.orig	Fri Aug  6 15:02:06 2004
+++ if_tap.c	Fri Aug  6 15:04:14 2004
@@ -336,15 +336,15 @@
 tapopen(dev, flag, mode, td)
 	struct cdev *dev;
 	int		 flag;
 	int		 mode;
 	struct thread	*td;
 {
 	struct tap_softc	*tp = NULL;
-	int			 error;
+	int			 error, s;
 
 	if ((error = suser(td)) != 0)
 		return (error);
 
 	if ((dev2unit(dev) & CLONE_UNITMASK) > TAPMAXUNIT)
 		return (ENXIO);
 
@@ -365,14 +365,19 @@
 		return (EBUSY);
 	}
 
 	bcopy(tp->arpcom.ac_enaddr, tp->ether_addr, sizeof(tp->ether_addr));
 	tp->tap_pid = td->td_proc->p_pid;
 	tp->tap_flags |= TAP_OPEN;
 	mtx_unlock(&tp->tap_mtx);
+
+	s = splimp();
+	tp->tap_if.if_flags |= IFF_RUNNING;
+	tp->tap_if.if_flags &= ~IFF_OACTIVE;
+	splx(s);
 
 	TAPDEBUG("%s is open. minor = %#x\n", 
 		tp->tap_if.if_xname, minor(dev));
 
 	return (0);
 } /* tapopen */
 

--------------090001030208020407050106--



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