xref: /csrg-svn/sys/net/if.c (revision 5206)
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