xref: /csrg-svn/sys/net/if.c (revision 5160)
1*5160Swnj /*	if.c	4.5	81/12/02	*/
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*5160Swnj if_attach(ifp)
10*5160Swnj 	struct ifnet *ifp;
11*5160Swnj {
12*5160Swnj 
13*5160Swnj COUNT(IF_ATTACH);
14*5160Swnj 	ifp->if_next = ifnet;
15*5160Swnj 	ifnet = ifp;
16*5160Swnj }
17*5160Swnj 
184951Swnj /*ARGSUSED*/
194951Swnj struct ifnet *
204944Swnj if_ifwithaddr(in)
214944Swnj 	struct in_addr in;
224944Swnj {
234944Swnj 	register struct ifnet *ifp;
244944Swnj 
254951Swnj COUNT(IF_IFWITHADDR);
264944Swnj 	for (ifp = ifnet; ifp; ifp = ifp->if_next)
274944Swnj 		if (ifp->if_addr.s_addr == in.s_addr)
284944Swnj 			break;
294944Swnj 	return (ifp);
304944Swnj }
314944Swnj 
324951Swnj /*ARGSUSED*/
334951Swnj struct ifnet *
344944Swnj if_ifonnetof(in)
354944Swnj 	struct in_addr in;
364944Swnj {
374944Swnj 	register struct ifnet *ifp;
384944Swnj 	int net;
394944Swnj 
404951Swnj COUNT(IF_IFONNETOF);
415083Swnj 	net = in.s_net;			/* XXX */
424944Swnj 	for (ifp = ifnet; ifp; ifp = ifp->if_next)
434944Swnj 		if (ifp->if_net == net)
444944Swnj 			break;
454944Swnj 	return (ifp);
464944Swnj }
474944Swnj 
485104Swnj /*ARGSUSED*/
495083Swnj struct ifnet *
505083Swnj if_gatewayfor(addr)
515083Swnj 	struct in_addr addr;
525083Swnj {
535083Swnj 
545083Swnj COUNT(IF_GATEWAYFOR);
555083Swnj 	return (0);
565083Swnj }
575104Swnj 
585104Swnj struct in_addr
595104Swnj if_makeaddr(net, host)
605104Swnj 	int net, host;
615104Swnj {
625104Swnj 	u_long addr;
635104Swnj 
645104Swnj 	if (net < 128)
655104Swnj 		addr = (host << 8) | net;
665104Swnj 	else if (net < 65536)
675104Swnj 		addr = (host << 16) | net;
685104Swnj 	else
695104Swnj 		addr = (host << 24) | net;
705104Swnj 	addr = htonl(addr);
715104Swnj 	return (*(struct in_addr *)&addr);
725104Swnj }
73