xref: /csrg-svn/lib/libc/net/inet_makeaddr.c (revision 42626)
126818Skarels /*
226818Skarels  * Copyright (c) 1983 Regents of the University of California.
333676Sbostic  * All rights reserved.
433676Sbostic  *
5*42626Sbostic  * %sccs.include.redist.c%
626818Skarels  */
78359Ssam 
826818Skarels #if defined(LIBC_SCCS) && !defined(lint)
9*42626Sbostic static char sccsid[] = "@(#)inet_makeaddr.c	5.5 (Berkeley) 06/01/90";
1033676Sbostic #endif /* LIBC_SCCS and not lint */
1126818Skarels 
128359Ssam #include <sys/types.h>
139192Ssam #include <netinet/in.h>
148359Ssam 
158359Ssam /*
168359Ssam  * Formulate an Internet address from network + host.  Used in
178359Ssam  * building addresses stored in the ifnet structure.
188359Ssam  */
198359Ssam struct in_addr
208370Ssam inet_makeaddr(net, host)
2136232Ssklower 	u_long net, host;
228359Ssam {
238359Ssam 	u_long addr;
248359Ssam 
258359Ssam 	if (net < 128)
2621762Skarels 		addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST);
278359Ssam 	else if (net < 65536)
2821762Skarels 		addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST);
2936232Ssklower 	else if (net < 16777216L)
3036232Ssklower 		addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST);
318359Ssam 	else
3236232Ssklower 		addr = net | host;
338359Ssam 	addr = htonl(addr);
348359Ssam 	return (*(struct in_addr *)&addr);
358359Ssam }
36