1 /* if.c 4.10 82/03/15 */ 2 3 #include "../h/param.h" 4 #include "../h/systm.h" 5 #include "../net/in.h" 6 #include "../net/in_systm.h" 7 #include "../net/if.h" 8 9 int ifqmaxlen = IFQ_MAXLEN; 10 11 ifinit() 12 { 13 register struct ifnet *ifp; 14 15 for (ifp = ifnet; ifp; ifp = ifp->if_next) 16 if (ifp->if_init) { 17 (*ifp->if_init)(); 18 if (ifp->if_snd.ifq_maxlen == 0) 19 ifp->if_snd.ifq_maxlen = ifqmaxlen; 20 } 21 } 22 23 ifubareset(uban) 24 int uban; 25 { 26 register struct ifnet *ifp; 27 28 for (ifp = ifnet; ifp; ifp = ifp->if_next) 29 if (ifp->if_ubareset) 30 (*ifp->if_ubareset)(uban); 31 } 32 33 if_attach(ifp) 34 struct ifnet *ifp; 35 { 36 register struct ifnet **p = &ifnet; 37 38 COUNT(IF_ATTACH); 39 while (*p) 40 p = &((*p)->if_next); 41 *p = ifp; 42 } 43 44 /*ARGSUSED*/ 45 struct ifnet * 46 if_ifwithaddr(in) 47 struct in_addr in; 48 { 49 register struct ifnet *ifp; 50 51 COUNT(IF_IFWITHADDR); 52 for (ifp = ifnet; ifp; ifp = ifp->if_next) 53 if (in.s_addr == ifp->if_addr.s_addr || 54 (ifp->if_broadaddr.s_addr != 0 && 55 in.s_addr == ifp->if_broadaddr.s_addr)) 56 break; 57 return (ifp); 58 } 59 60 /*ARGSUSED*/ 61 struct ifnet * 62 if_ifonnetof(in) 63 struct in_addr in; 64 { 65 register struct ifnet *ifp; 66 int net; 67 68 COUNT(IF_IFONNETOF); 69 net = in.s_net; /* XXX */ 70 for (ifp = ifnet; ifp; ifp = ifp->if_next) 71 if (ifp->if_net == net) 72 break; 73 return (ifp); 74 } 75 76 /*ARGSUSED*/ 77 struct ifnet * 78 if_gatewayfor(addr) 79 struct in_addr addr; 80 { 81 82 COUNT(IF_GATEWAYFOR); 83 return (0); 84 } 85 86 struct in_addr 87 if_makeaddr(net, host) 88 int net, host; 89 { 90 u_long addr; 91 92 if (net < 128) 93 addr = (net << 24) | host; 94 else if (net < 65536) 95 addr = (net << 16) | host; 96 else 97 addr = (net << 8) | host; 98 #ifdef vax 99 addr = htonl(addr); 100 #endif 101 return (*(struct in_addr *)&addr); 102 } 103