diff --git a/libnix/sources/socket/arpa/inet_makeaddr.c b/libnix/sources/socket/arpa/inet_makeaddr.c index e06423b..aac0c9b 100644 --- a/libnix/sources/socket/arpa/inet_makeaddr.c +++ b/libnix/sources/socket/arpa/inet_makeaddr.c @@ -45,16 +45,16 @@ static char sccsid[] = "@(#)inet_addr.c 5.10 (Berkeley) 2/24/91"; struct in_addr inet_makeaddr(u_long net, u_long host) { - u_long addr; + struct in_addr addr; if (net < 128) - addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST); + addr.s_addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST); else if (net < 65536) - addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST); + addr.s_addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST); else if (net < 16777216L) - addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST); + addr.s_addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST); else - addr = net | host; - addr = htonl(addr); - return (*(struct in_addr *)&addr); + addr.s_addr = net | host; + addr.s_addr = htonl(addr.s_addr); + return addr; }