xref: /csrg-svn/sys/net/if.c (revision 5685)
1 /*	if.c	4.7	82/02/03	*/
2 
3 #include "../h/param.h"
4 #include "../h/systm.h"
5 #include "../net/in.h"
6 #include "../net/in_systm.h"
7 #include "../net/if.h"
8 
9 ifinit()
10 {
11 	register struct ifnet *ifp;
12 
13 	for (ifp = ifnet; ifp; ifp = ifp->if_next)
14 		if (ifp->if_init)
15 			(*ifp->if_init)();
16 }
17 
18 ifubareset(uban)
19 	int uban;
20 {
21 	register struct ifnet *ifp;
22 
23 	for (ifp = ifnet; ifp; ifp = ifp->if_next)
24 		if (ifp->if_ubareset)
25 			(*ifp->if_ubareset)(uban);
26 }
27 
28 if_attach(ifp)
29 	struct ifnet *ifp;
30 {
31 
32 COUNT(IF_ATTACH);
33 	ifp->if_next = ifnet;
34 	ifnet = ifp;
35 }
36 
37 /*ARGSUSED*/
38 struct ifnet *
39 if_ifwithaddr(in)
40 	struct in_addr in;
41 {
42 	register struct ifnet *ifp;
43 
44 COUNT(IF_IFWITHADDR);
45 	for (ifp = ifnet; ifp; ifp = ifp->if_next)
46 		if (ifp->if_addr.s_addr == in.s_addr)
47 			break;
48 	return (ifp);
49 }
50 
51 /*ARGSUSED*/
52 struct ifnet *
53 if_ifonnetof(in)
54 	struct in_addr in;
55 {
56 	register struct ifnet *ifp;
57 	int net;
58 
59 COUNT(IF_IFONNETOF);
60 	net = in.s_net;			/* XXX */
61 	for (ifp = ifnet; ifp; ifp = ifp->if_next)
62 		if (ifp->if_net == net)
63 			break;
64 	return (ifp);
65 }
66 
67 /*ARGSUSED*/
68 struct ifnet *
69 if_gatewayfor(addr)
70 	struct in_addr addr;
71 {
72 
73 COUNT(IF_GATEWAYFOR);
74 	return (0);
75 }
76 
77 struct in_addr
78 if_makeaddr(net, host)
79 	int net, host;
80 {
81 	u_long addr;
82 
83 	if (net < 128)
84 		addr = (net << 24) | host;
85 	else if (net < 65536)
86 		addr = (net << 16) | host;
87 	else
88 		addr = (net << 8) | host;
89 #ifdef vax
90 	addr = htonl(addr);
91 #endif
92 	return (*(struct in_addr *)&addr);
93 }
94