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
--- 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 */
 
_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to