1*6207Swnj /* if.c 4.10 82/03/15 */ 24944Swnj 34944Swnj #include "../h/param.h" 44944Swnj #include "../h/systm.h" 55083Swnj #include "../net/in.h" 65083Swnj #include "../net/in_systm.h" 74944Swnj #include "../net/if.h" 84944Swnj 9*6207Swnj int ifqmaxlen = IFQ_MAXLEN; 10*6207Swnj 115206Swnj ifinit() 125206Swnj { 135206Swnj register struct ifnet *ifp; 145206Swnj 155206Swnj for (ifp = ifnet; ifp; ifp = ifp->if_next) 16*6207Swnj if (ifp->if_init) { 175206Swnj (*ifp->if_init)(); 18*6207Swnj if (ifp->if_snd.ifq_maxlen == 0) 19*6207Swnj ifp->if_snd.ifq_maxlen = ifqmaxlen; 20*6207Swnj } 215206Swnj } 225206Swnj 235206Swnj ifubareset(uban) 245206Swnj int uban; 255206Swnj { 265206Swnj register struct ifnet *ifp; 275206Swnj 285206Swnj for (ifp = ifnet; ifp; ifp = ifp->if_next) 295206Swnj if (ifp->if_ubareset) 305206Swnj (*ifp->if_ubareset)(uban); 315206Swnj } 325206Swnj 335160Swnj if_attach(ifp) 345160Swnj struct ifnet *ifp; 355160Swnj { 365698Swnj register struct ifnet **p = &ifnet; 375160Swnj 385160Swnj COUNT(IF_ATTACH); 395698Swnj while (*p) 405698Swnj p = &((*p)->if_next); 415698Swnj *p = ifp; 425160Swnj } 435160Swnj 444951Swnj /*ARGSUSED*/ 454951Swnj struct ifnet * 464944Swnj if_ifwithaddr(in) 474944Swnj struct in_addr in; 484944Swnj { 494944Swnj register struct ifnet *ifp; 504944Swnj 514951Swnj COUNT(IF_IFWITHADDR); 524944Swnj for (ifp = ifnet; ifp; ifp = ifp->if_next) 536087Sroot if (in.s_addr == ifp->if_addr.s_addr || 546087Sroot (ifp->if_broadaddr.s_addr != 0 && 556087Sroot in.s_addr == ifp->if_broadaddr.s_addr)) 564944Swnj break; 574944Swnj return (ifp); 584944Swnj } 594944Swnj 604951Swnj /*ARGSUSED*/ 614951Swnj struct ifnet * 624944Swnj if_ifonnetof(in) 634944Swnj struct in_addr in; 644944Swnj { 654944Swnj register struct ifnet *ifp; 664944Swnj int net; 674944Swnj 684951Swnj COUNT(IF_IFONNETOF); 695083Swnj net = in.s_net; /* XXX */ 704944Swnj for (ifp = ifnet; ifp; ifp = ifp->if_next) 714944Swnj if (ifp->if_net == net) 724944Swnj break; 734944Swnj return (ifp); 744944Swnj } 754944Swnj 765104Swnj /*ARGSUSED*/ 775083Swnj struct ifnet * 785083Swnj if_gatewayfor(addr) 795083Swnj struct in_addr addr; 805083Swnj { 815083Swnj 825083Swnj COUNT(IF_GATEWAYFOR); 835083Swnj return (0); 845083Swnj } 855104Swnj 865104Swnj struct in_addr 875104Swnj if_makeaddr(net, host) 885104Swnj int net, host; 895104Swnj { 905104Swnj u_long addr; 915104Swnj 925104Swnj if (net < 128) 935206Swnj addr = (net << 24) | host; 945104Swnj else if (net < 65536) 955206Swnj addr = (net << 16) | host; 965104Swnj else 975206Swnj addr = (net << 8) | host; 985685Ssam #ifdef vax 995104Swnj addr = htonl(addr); 1005685Ssam #endif 1015104Swnj return (*(struct in_addr *)&addr); 1025104Swnj } 103