xref: /original-bsd/sys/netinet/in_local.c (revision 39c8fdd5)
1 /*	in_local.c	4.1	83/03/13	*/
2 
3 /*
4  * Site specific Internet routines.
5  */
6 
7 #ifndef if_localmakeaddr
8 /*
9  * Formulate an Internet address from network + host.  Handle
10  * local subnet interpretation.  Used in building addresses
11  * stored in the ifnet structure.
12  */
13 struct in_addr
14 if_localmakeaddr(net, host)
15 	int net, host;
16 {
17 	u_long addr, subnet;
18 
19 	subnet = net >> 24, net &= 0xffffff;
20 	if (net < 128)
21 		addr = (net << IN_CLASSA_NSHIFT) | host |
22 		  (subnet << IN_CLASSA_NSHIFT - 8);
23 	else if (net < 65536)
24 		addr = (net << IN_CLASSB_NSHIFT) | host |
25 		  (subnet << IN_CLASSB_NSHIFT - 8);
26 	else
27 		addr = (net << IN_CLASSC_NSHIFT) | host;
28 	addr = htonl(addr);
29 	return (*(struct in_addr *)&addr);
30 }
31 #endif
32