2.9BSD/usr/net/src/net/inet/inet_netof.c
/* inet_netof.c 4.2 82/10/07 */
#include <sys/types.h>
#include <net/in.h>
#include <netdb.h>
/*
* Return the network number from an internet
* address; handles class a/b/c network #'s.
*/
u_long
inet_netof(in)
struct in_addr in;
{
#if !pdp11
register u_long net;
if ((in.s_addr&IN_CLASSA) == 0)
return (in.s_addr & IN_CLASSA_NET);
if ((in.s_addr&IN_CLASSB) == 0)
return ((int)htons((u_short)(in.s_addr & IN_CLASSB_NET)));
net = htonl((u_long)(in.s_addr & IN_CLASSC_NET));
net >>= 8;
return (net);
#else
u_long net;
in.s_addr = htonl(in.s_addr);
net = IN_NETOF(in);
net = (long)(net << 16) | (long)((net >> 16) & 0xffff);
in.s_addr = ntohl(in.s_addr);
return(net);
#endif
}