Commit | Line | Data |
---|---|---|
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 |
9 | int ifqmaxlen = IFQ_MAXLEN; |
10 | ||
85ce71f2 BJ |
11 | ifinit() |
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 | ||
23 | ifubareset(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 |
33 | if_attach(ifp) |
34 | struct ifnet *ifp; | |
35 | { | |
c4af8b24 | 36 | register struct ifnet **p = &ifnet; |
405c9168 BJ |
37 | |
38 | COUNT(IF_ATTACH); | |
c4af8b24 BJ |
39 | while (*p) |
40 | p = &((*p)->if_next); | |
41 | *p = ifp; | |
405c9168 BJ |
42 | } |
43 | ||
4ad99bae BJ |
44 | /*ARGSUSED*/ |
45 | struct ifnet * | |
1bfd8df7 BJ |
46 | if_ifwithaddr(in) |
47 | struct in_addr in; | |
48 | { | |
49 | register struct ifnet *ifp; | |
50 | ||
4ad99bae | 51 | COUNT(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*/ |
61 | struct ifnet * | |
1bfd8df7 BJ |
62 | if_ifonnetof(in) |
63 | struct in_addr in; | |
64 | { | |
65 | register struct ifnet *ifp; | |
1bfd8df7 BJ |
66 | int net; |
67 | ||
4ad99bae | 68 | COUNT(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 |
77 | struct ifnet * |
78 | if_gatewayfor(addr) | |
79 | struct in_addr addr; | |
80 | { | |
81 | ||
82 | COUNT(IF_GATEWAYFOR); | |
83 | return (0); | |
84 | } | |
f1b2fa5b BJ |
85 | |
86 | struct in_addr | |
87 | if_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 | } |