1*5206Swnj /* if.c 4.6 81/12/07 */ 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*5206Swnj ifinit() 10*5206Swnj { 11*5206Swnj register struct ifnet *ifp; 12*5206Swnj 13*5206Swnj for (ifp = ifnet; ifp; ifp = ifp->if_next) 14*5206Swnj if (ifp->if_init) 15*5206Swnj (*ifp->if_init)(); 16*5206Swnj } 17*5206Swnj 18*5206Swnj ifubareset(uban) 19*5206Swnj int uban; 20*5206Swnj { 21*5206Swnj register struct ifnet *ifp; 22*5206Swnj 23*5206Swnj for (ifp = ifnet; ifp; ifp = ifp->if_next) 24*5206Swnj if (ifp->if_ubareset) 25*5206Swnj (*ifp->if_ubareset)(uban); 26*5206Swnj } 27*5206Swnj 285160Swnj if_attach(ifp) 295160Swnj struct ifnet *ifp; 305160Swnj { 315160Swnj 325160Swnj COUNT(IF_ATTACH); 335160Swnj ifp->if_next = ifnet; 345160Swnj ifnet = ifp; 355160Swnj } 365160Swnj 374951Swnj /*ARGSUSED*/ 384951Swnj struct ifnet * 394944Swnj if_ifwithaddr(in) 404944Swnj struct in_addr in; 414944Swnj { 424944Swnj register struct ifnet *ifp; 434944Swnj 444951Swnj COUNT(IF_IFWITHADDR); 454944Swnj for (ifp = ifnet; ifp; ifp = ifp->if_next) 464944Swnj if (ifp->if_addr.s_addr == in.s_addr) 474944Swnj break; 484944Swnj return (ifp); 494944Swnj } 504944Swnj 514951Swnj /*ARGSUSED*/ 524951Swnj struct ifnet * 534944Swnj if_ifonnetof(in) 544944Swnj struct in_addr in; 554944Swnj { 564944Swnj register struct ifnet *ifp; 574944Swnj int net; 584944Swnj 594951Swnj COUNT(IF_IFONNETOF); 605083Swnj net = in.s_net; /* XXX */ 614944Swnj for (ifp = ifnet; ifp; ifp = ifp->if_next) 624944Swnj if (ifp->if_net == net) 634944Swnj break; 644944Swnj return (ifp); 654944Swnj } 664944Swnj 675104Swnj /*ARGSUSED*/ 685083Swnj struct ifnet * 695083Swnj if_gatewayfor(addr) 705083Swnj struct in_addr addr; 715083Swnj { 725083Swnj 735083Swnj COUNT(IF_GATEWAYFOR); 745083Swnj return (0); 755083Swnj } 765104Swnj 775104Swnj struct in_addr 785104Swnj if_makeaddr(net, host) 795104Swnj int net, host; 805104Swnj { 815104Swnj u_long addr; 825104Swnj 835104Swnj if (net < 128) 84*5206Swnj addr = (net << 24) | host; 855104Swnj else if (net < 65536) 86*5206Swnj addr = (net << 16) | host; 875104Swnj else 88*5206Swnj addr = (net << 8) | host; 895104Swnj addr = htonl(addr); 905104Swnj return (*(struct in_addr *)&addr); 915104Swnj } 92