You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apache-bugdb@apache.org by Thomas Graf <gr...@essi.fr> on 1998/09/16 19:40:02 UTC

Re: general/3011: Wrong order of bytes in IP address for Listen and VirtualHost directives

The following reply was made to PR general/3011; it has been noted by GNATS.

From: Thomas Graf <gr...@essi.fr>
To: Marc Slemko <ma...@znep.com>
Cc: apbugs@hyperreal.org
Subject: Re: general/3011: Wrong order of bytes in IP address for Listen
 	 and VirtualHost directives
Date: Wed, 16 Sep 1998 17:29:24 +0000

 Marc Slemko wrote:
 
 > On 16 Sep 1998, Thomas Graf wrote:
 >
 > > Data General DG/UX for Intel
 >
 > What compiler are you using?
 >
 > >
 > > uname -a: dgux dms1 R4.20MU01 generic AViiON Pentium
 > > >Description:
 > > Named virtual hosts (3 names, 1 IP address) did not work until I gave the
 > > IP address in opposite order (least significant byte first).
 > > In this case:
 > > www.dms.at and dms1.essi.fr have the IP address 157.169.10.160. The
 > > NameVirtualHost and <VirtualHost> did not show an error (httpd -S), but virtual
 > > hosts did not work.
 > > When I added the following directive in httpd.conf:
 > > Listen 157.169.10.160:80
 > > I got the error message:
 > > [Tue Sep 15 14:30:58 1998] [crit] (126)Can't assign requested address: make_sock: could not bind to address 160.10.169.157 port 80
 > > Virtual hosts work since I replaced the IP address with 160.10.169.157.
 >
 > This really looks like a bogosity in the OS.
 >
 > What does the inet_network man page say WRT the byte order returned?
 >
 
  All Internet addresses are returned in network order (bytes ordered
  from left to right).  All network numbers and local address parts are
  returned as machine-format integer values.
 
 
 > If you compile and run the following program:
 >
 > #include <sys/types.h>
 > #include <sys/socket.h>
 > #include <netinet/in.h>
 > #include <arpa/inet.h>
 > #include <stdio.h>
 >
 > int main () {
 >         printf("inet_network(\"10.11.12.13\") = %ld\n",
 >                 inet_network("10.11.12.13"));
 > }
 >
 > what do you get?
 >
 
 The output of this program is:
 inet_network("10.11.12.13") = 168496141
 (which is the same as on my Linux 2.0.35 system).
 
 Thomas.