xref: /csrg-svn/lib/libc/net/inet_makeaddr.c (revision 26818)
1*26818Skarels /*
2*26818Skarels  * Copyright (c) 1983 Regents of the University of California.
3*26818Skarels  * All rights reserved.  The Berkeley software License Agreement
4*26818Skarels  * specifies the terms and conditions for redistribution.
5*26818Skarels  */
68359Ssam 
7*26818Skarels #if defined(LIBC_SCCS) && !defined(lint)
8*26818Skarels static char sccsid[] = "@(#)inet_makeaddr.c	5.1 (Berkeley) 03/11/86";
9*26818Skarels #endif LIBC_SCCS and not lint
10*26818Skarels 
118359Ssam #include <sys/types.h>
129192Ssam #include <netinet/in.h>
138359Ssam 
148359Ssam /*
158359Ssam  * Formulate an Internet address from network + host.  Used in
168359Ssam  * building addresses stored in the ifnet structure.
178359Ssam  */
188359Ssam struct in_addr
198370Ssam inet_makeaddr(net, host)
208359Ssam 	int net, host;
218359Ssam {
228359Ssam 	u_long addr;
238359Ssam 
248359Ssam 	if (net < 128)
2521762Skarels 		addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST);
268359Ssam 	else if (net < 65536)
2721762Skarels 		addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST);
288359Ssam 	else
2921762Skarels 		addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST);
308359Ssam 	addr = htonl(addr);
318359Ssam 	return (*(struct in_addr *)&addr);
328359Ssam }
33