date and time created 82/03/27 22:57:39 by sam
[unix-history] / usr / src / sys / net / if.c
index 6d12908..c1c6c10 100644 (file)
@@ -1,4 +1,4 @@
-/*     if.c    4.7     82/02/03        */
+/*     if.c    4.10    82/03/15        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -6,13 +6,18 @@
 #include "../net/in_systm.h"
 #include "../net/if.h"
 
 #include "../net/in_systm.h"
 #include "../net/if.h"
 
+int    ifqmaxlen = IFQ_MAXLEN;
+
 ifinit()
 {
        register struct ifnet *ifp;
 
        for (ifp = ifnet; ifp; ifp = ifp->if_next)
 ifinit()
 {
        register struct ifnet *ifp;
 
        for (ifp = ifnet; ifp; ifp = ifp->if_next)
-               if (ifp->if_init)
+               if (ifp->if_init) {
                        (*ifp->if_init)();
                        (*ifp->if_init)();
+                       if (ifp->if_snd.ifq_maxlen == 0)
+                               ifp->if_snd.ifq_maxlen = ifqmaxlen;
+               }
 }
 
 ifubareset(uban)
 }
 
 ifubareset(uban)
@@ -28,10 +33,12 @@ ifubareset(uban)
 if_attach(ifp)
        struct ifnet *ifp;
 {
 if_attach(ifp)
        struct ifnet *ifp;
 {
+       register struct ifnet **p = &ifnet;
 
 COUNT(IF_ATTACH);
 
 COUNT(IF_ATTACH);
-       ifp->if_next = ifnet;
-       ifnet = ifp;
+       while (*p)
+               p = &((*p)->if_next);
+       *p = ifp;
 }
 
 /*ARGSUSED*/
 }
 
 /*ARGSUSED*/
@@ -43,7 +50,9 @@ if_ifwithaddr(in)
 
 COUNT(IF_IFWITHADDR);
        for (ifp = ifnet; ifp; ifp = ifp->if_next)
 
 COUNT(IF_IFWITHADDR);
        for (ifp = ifnet; ifp; ifp = ifp->if_next)
-               if (ifp->if_addr.s_addr == in.s_addr)
+               if (in.s_addr == ifp->if_addr.s_addr ||
+                   (ifp->if_broadaddr.s_addr != 0 &&
+                    in.s_addr == ifp->if_broadaddr.s_addr))
                        break;
        return (ifp);
 }
                        break;
        return (ifp);
 }