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