xref: /csrg-svn/lib/libc/net/inet_makeaddr.c (revision 61150)
126818Skarels /*
2*61150Sbostic  * Copyright (c) 1983, 1993
3*61150Sbostic  *	The Regents of the University of California.  All rights reserved.
433676Sbostic  *
542626Sbostic  * %sccs.include.redist.c%
626818Skarels  */
78359Ssam 
826818Skarels #if defined(LIBC_SCCS) && !defined(lint)
9*61150Sbostic static char sccsid[] = "@(#)inet_makeaddr.c	8.1 (Berkeley) 06/04/93";
1033676Sbostic #endif /* LIBC_SCCS and not lint */
1126818Skarels 
1246604Sbostic #include <sys/param.h>
139192Ssam #include <netinet/in.h>
1446604Sbostic #include <arpa/inet.h>
158359Ssam 
168359Ssam /*
178359Ssam  * Formulate an Internet address from network + host.  Used in
188359Ssam  * building addresses stored in the ifnet structure.
198359Ssam  */
208359Ssam struct in_addr
inet_makeaddr(net,host)218370Ssam inet_makeaddr(net, host)
2236232Ssklower 	u_long net, host;
238359Ssam {
248359Ssam 	u_long addr;
258359Ssam 
268359Ssam 	if (net < 128)
2721762Skarels 		addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST);
288359Ssam 	else if (net < 65536)
2921762Skarels 		addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST);
3036232Ssklower 	else if (net < 16777216L)
3136232Ssklower 		addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST);
328359Ssam 	else
3336232Ssklower 		addr = net | host;
348359Ssam 	addr = htonl(addr);
358359Ssam 	return (*(struct in_addr *)&addr);
368359Ssam }
37