1*6087Sroot /* if.c 4.9 82/03/09 */ 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 95206Swnj ifinit() 105206Swnj { 115206Swnj register struct ifnet *ifp; 125206Swnj 135206Swnj for (ifp = ifnet; ifp; ifp = ifp->if_next) 145206Swnj if (ifp->if_init) 155206Swnj (*ifp->if_init)(); 165206Swnj } 175206Swnj 185206Swnj ifubareset(uban) 195206Swnj int uban; 205206Swnj { 215206Swnj register struct ifnet *ifp; 225206Swnj 235206Swnj for (ifp = ifnet; ifp; ifp = ifp->if_next) 245206Swnj if (ifp->if_ubareset) 255206Swnj (*ifp->if_ubareset)(uban); 265206Swnj } 275206Swnj 285160Swnj if_attach(ifp) 295160Swnj struct ifnet *ifp; 305160Swnj { 315698Swnj register struct ifnet **p = &ifnet; 325160Swnj 335160Swnj COUNT(IF_ATTACH); 345698Swnj while (*p) 355698Swnj p = &((*p)->if_next); 365698Swnj *p = ifp; 375160Swnj } 385160Swnj 394951Swnj /*ARGSUSED*/ 404951Swnj struct ifnet * 414944Swnj if_ifwithaddr(in) 424944Swnj struct in_addr in; 434944Swnj { 444944Swnj register struct ifnet *ifp; 454944Swnj 464951Swnj COUNT(IF_IFWITHADDR); 474944Swnj for (ifp = ifnet; ifp; ifp = ifp->if_next) 48*6087Sroot if (in.s_addr == ifp->if_addr.s_addr || 49*6087Sroot (ifp->if_broadaddr.s_addr != 0 && 50*6087Sroot in.s_addr == ifp->if_broadaddr.s_addr)) 514944Swnj break; 524944Swnj return (ifp); 534944Swnj } 544944Swnj 554951Swnj /*ARGSUSED*/ 564951Swnj struct ifnet * 574944Swnj if_ifonnetof(in) 584944Swnj struct in_addr in; 594944Swnj { 604944Swnj register struct ifnet *ifp; 614944Swnj int net; 624944Swnj 634951Swnj COUNT(IF_IFONNETOF); 645083Swnj net = in.s_net; /* XXX */ 654944Swnj for (ifp = ifnet; ifp; ifp = ifp->if_next) 664944Swnj if (ifp->if_net == net) 674944Swnj break; 684944Swnj return (ifp); 694944Swnj } 704944Swnj 715104Swnj /*ARGSUSED*/ 725083Swnj struct ifnet * 735083Swnj if_gatewayfor(addr) 745083Swnj struct in_addr addr; 755083Swnj { 765083Swnj 775083Swnj COUNT(IF_GATEWAYFOR); 785083Swnj return (0); 795083Swnj } 805104Swnj 815104Swnj struct in_addr 825104Swnj if_makeaddr(net, host) 835104Swnj int net, host; 845104Swnj { 855104Swnj u_long addr; 865104Swnj 875104Swnj if (net < 128) 885206Swnj addr = (net << 24) | host; 895104Swnj else if (net < 65536) 905206Swnj addr = (net << 16) | host; 915104Swnj else 925206Swnj addr = (net << 8) | host; 935685Ssam #ifdef vax 945104Swnj addr = htonl(addr); 955685Ssam #endif 965104Swnj return (*(struct in_addr *)&addr); 975104Swnj } 98