date and time created 82/03/27 22:57:39 by sam
[unix-history] / usr / src / sys / net / if.c
CommitLineData
1e977657 1/* if.c 4.10 82/03/15 */
1bfd8df7
BJ
2
3#include "../h/param.h"
4#include "../h/systm.h"
8a13b737
BJ
5#include "../net/in.h"
6#include "../net/in_systm.h"
1bfd8df7
BJ
7#include "../net/if.h"
8
1e977657
BJ
9int ifqmaxlen = IFQ_MAXLEN;
10
85ce71f2
BJ
11ifinit()
12{
13 register struct ifnet *ifp;
14
15 for (ifp = ifnet; ifp; ifp = ifp->if_next)
1e977657 16 if (ifp->if_init) {
85ce71f2 17 (*ifp->if_init)();
1e977657
BJ
18 if (ifp->if_snd.ifq_maxlen == 0)
19 ifp->if_snd.ifq_maxlen = ifqmaxlen;
20 }
85ce71f2
BJ
21}
22
23ifubareset(uban)
24 int uban;
25{
26 register struct ifnet *ifp;
27
28 for (ifp = ifnet; ifp; ifp = ifp->if_next)
29 if (ifp->if_ubareset)
30 (*ifp->if_ubareset)(uban);
31}
32
405c9168
BJ
33if_attach(ifp)
34 struct ifnet *ifp;
35{
c4af8b24 36 register struct ifnet **p = &ifnet;
405c9168
BJ
37
38COUNT(IF_ATTACH);
c4af8b24
BJ
39 while (*p)
40 p = &((*p)->if_next);
41 *p = ifp;
405c9168
BJ
42}
43
4ad99bae
BJ
44/*ARGSUSED*/
45struct ifnet *
1bfd8df7
BJ
46if_ifwithaddr(in)
47 struct in_addr in;
48{
49 register struct ifnet *ifp;
50
4ad99bae 51COUNT(IF_IFWITHADDR);
1bfd8df7 52 for (ifp = ifnet; ifp; ifp = ifp->if_next)
1dd55890
BJ
53 if (in.s_addr == ifp->if_addr.s_addr ||
54 (ifp->if_broadaddr.s_addr != 0 &&
55 in.s_addr == ifp->if_broadaddr.s_addr))
1bfd8df7 56 break;
1bfd8df7
BJ
57 return (ifp);
58}
59
4ad99bae
BJ
60/*ARGSUSED*/
61struct ifnet *
1bfd8df7
BJ
62if_ifonnetof(in)
63 struct in_addr in;
64{
65 register struct ifnet *ifp;
1bfd8df7
BJ
66 int net;
67
4ad99bae 68COUNT(IF_IFONNETOF);
8a13b737 69 net = in.s_net; /* XXX */
1bfd8df7
BJ
70 for (ifp = ifnet; ifp; ifp = ifp->if_next)
71 if (ifp->if_net == net)
72 break;
1bfd8df7
BJ
73 return (ifp);
74}
75
f1b2fa5b 76/*ARGSUSED*/
8a13b737
BJ
77struct ifnet *
78if_gatewayfor(addr)
79 struct in_addr addr;
80{
81
82COUNT(IF_GATEWAYFOR);
83 return (0);
84}
f1b2fa5b
BJ
85
86struct in_addr
87if_makeaddr(net, host)
88 int net, host;
89{
90 u_long addr;
91
92 if (net < 128)
85ce71f2 93 addr = (net << 24) | host;
f1b2fa5b 94 else if (net < 65536)
85ce71f2 95 addr = (net << 16) | host;
f1b2fa5b 96 else
85ce71f2 97 addr = (net << 8) | host;
72c68388 98#ifdef vax
f1b2fa5b 99 addr = htonl(addr);
72c68388 100#endif
f1b2fa5b
BJ
101 return (*(struct in_addr *)&addr);
102}