1*5698Swnj /* if.c 4.8 82/02/03 */ 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 { 31*5698Swnj register struct ifnet **p = &ifnet; 325160Swnj 335160Swnj COUNT(IF_ATTACH); 34*5698Swnj while (*p) 35*5698Swnj p = &((*p)->if_next); 36*5698Swnj *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) 484944Swnj if (ifp->if_addr.s_addr == in.s_addr) 494944Swnj break; 504944Swnj return (ifp); 514944Swnj } 524944Swnj 534951Swnj /*ARGSUSED*/ 544951Swnj struct ifnet * 554944Swnj if_ifonnetof(in) 564944Swnj struct in_addr in; 574944Swnj { 584944Swnj register struct ifnet *ifp; 594944Swnj int net; 604944Swnj 614951Swnj COUNT(IF_IFONNETOF); 625083Swnj net = in.s_net; /* XXX */ 634944Swnj for (ifp = ifnet; ifp; ifp = ifp->if_next) 644944Swnj if (ifp->if_net == net) 654944Swnj break; 664944Swnj return (ifp); 674944Swnj } 684944Swnj 695104Swnj /*ARGSUSED*/ 705083Swnj struct ifnet * 715083Swnj if_gatewayfor(addr) 725083Swnj struct in_addr addr; 735083Swnj { 745083Swnj 755083Swnj COUNT(IF_GATEWAYFOR); 765083Swnj return (0); 775083Swnj } 785104Swnj 795104Swnj struct in_addr 805104Swnj if_makeaddr(net, host) 815104Swnj int net, host; 825104Swnj { 835104Swnj u_long addr; 845104Swnj 855104Swnj if (net < 128) 865206Swnj addr = (net << 24) | host; 875104Swnj else if (net < 65536) 885206Swnj addr = (net << 16) | host; 895104Swnj else 905206Swnj addr = (net << 8) | host; 915685Ssam #ifdef vax 925104Swnj addr = htonl(addr); 935685Ssam #endif 945104Swnj return (*(struct in_addr *)&addr); 955104Swnj } 96