[Click] [PATCH] Wrong initialization values with inet_makeaddr on ARM
Roberto Riggio
roberto.riggio at create-net.org
Fri Oct 15 07:03:16 EDT 2010
This problems happens only on an ARM board, basically the following
statements:
addr_1.sin_addr = inet_makeaddr(127, 1);
addr_2.sin_addr = inet_makeaddr(0, 0);
addr_3.sin_addr.s_addr = INADDR_ANY;
printf("Server (1), binded to %s\n",inet_ntoa(addr_1.sin_addr));
printf("Server (2), binded to %s\n",inet_ntoa(addr_2.sin_addr));
printf("Server (3), binded to %s\n",inet_ntoa(addr_3.sin_addr));
produce this output:
Server (1), binded to 0.0.133.112
Server (2), binded to 0.0.133.112
Server (3), binded to 0.0.0.0
The problem lies probably with the c lib used during the
compilation, but to me it was much easier to workaround the
problem with this patch.
--
diff -urN a/elements/userlevel/controlsocket.cc
b/elements/userlevel/controlsocket.cc
--- a/elements/userlevel/controlsocket.cc 2010-10-15
12:22:57.536443142 +0200
+++ b/elements/userlevel/controlsocket.cc 2010-10-15
12:47:05.596443142 +0200
@@ -177,9 +177,9 @@
sa.sin_family = AF_INET;
sa.sin_port = htons(portno);
if (_localhost)
- sa.sin_addr = inet_makeaddr(127, 1);
+ sa.sin_addr.s_addr = INADDR_LOOPBACK;
else
- sa.sin_addr = inet_makeaddr(0, 0);
+ sa.sin_addr.s_addr = INADDR_ANY;
int tries = 0;
while (bind(_socket_fd, (struct sockaddr *)&sa, sizeof(sa)) < 0) {
if (tries > 10 || _unix_pathname.back() != '+' || portno >= 65534
More information about the click
mailing list