localize header files
[unix-history] / usr / src / sys / netinet / in.c
CommitLineData
fcfe450e 1/* in.c 4.4 82/10/09 */
8473bbab
SL
2
3#include "../h/param.h"
4#include "../h/mbuf.h"
5#include "../h/protosw.h"
6#include "../h/socket.h"
7#include "../h/socketvar.h"
fcfe450e
BJ
8#include "../netinet/in.h"
9#include "../netinet/in_systm.h"
6187f8f4
SL
10#include "../net/if.h"
11#include "../net/route.h"
8473bbab
SL
12#include "../net/af.h"
13
14#ifdef INET
15inet_hash(sin, hp)
16 register struct sockaddr_in *sin;
17 struct afhash *hp;
18{
8473bbab
SL
19 hp->afh_nethash = in_netof(sin->sin_addr);
20 hp->afh_hosthash = ntohl(sin->sin_addr.s_addr);
21 if (hp->afh_hosthash < 0)
22 hp->afh_hosthash = -hp->afh_hosthash;
23}
24
25inet_netmatch(sin1, sin2)
26 struct sockaddr_in *sin1, *sin2;
27{
8473bbab
SL
28 return (sin1->sin_addr.s_net == sin2->sin_addr.s_net);
29}
30
31/*
32 * Formulate an Internet address from network + host. Used in
33 * building addresses stored in the ifnet structure.
34 */
35struct in_addr
36if_makeaddr(net, host)
37 int net, host;
38{
39 u_long addr;
40
8473bbab
SL
41 if (net < 128)
42 addr = (net << 24) | host;
43 else if (net < 65536)
44 addr = (net << 16) | host;
45 else
46 addr = (net << 8) | host;
47#ifdef vax
48 addr = htonl(addr);
49#endif
50 return (*(struct in_addr *)&addr);
51}
52
53/*
54 * Return the network number from an internet
55 * address; handles class a/b/c network #'s.
56 */
57in_netof(in)
58 struct in_addr in;
59{
60
61 return (IN_NETOF(in));
62}
63
64/*
65 * Return the local network address portion of an
66 * internet address; handles class a/b/c network
67 * number formats.
68 */
69in_lnaof(in)
70 struct in_addr in;
71{
72
73 return (IN_LNAOF(in));
74}
75
76/*
77 * Initialize an interface's routing
78 * table entry according to the network.
79 * INTERNET SPECIFIC.
80 */
81if_rtinit(ifp, flags)
82 register struct ifnet *ifp;
83 int flags;
84{
85 struct sockaddr_in sin;
86
8473bbab
SL
87 if (ifp->if_flags & IFF_ROUTE)
88 return;
89 bzero((caddr_t)&sin, sizeof (sin));
90 sin.sin_family = AF_INET;
91 sin.sin_addr = if_makeaddr(ifp->if_net, 0);
92 rtinit(&sin, &ifp->if_addr, flags);
93}
94#endif