@@ -110,7 +110,7 @@ int create_iwpm_socket_v4(__u16 bind_port)
memset(&bind_addr, 0, sizeof(bind_addr));
bind_in4 = &bind_addr.v4_sockaddr;
bind_in4->sin_family = AF_INET;
- bind_in4->sin_addr.s_addr = INADDR_ANY;
+ bind_in4->sin_addr.s_addr = htobe32(INADDR_ANY);
bind_in4->sin_port = htobe16(bind_port);
if (bind(pm_sock, &bind_addr.sock_addr, sizeof(struct sockaddr_in))) {
@@ -279,7 +279,7 @@ static int get_iwpm_tcp_port(__u16 addr_family, __be16 requested_port,
mapped_port = &((struct sockaddr_in *)mapped_addr)->sin_port;
bind_in4 = &bind_addr.v4_sockaddr;
bind_in4->sin_family = addr_family;
- bind_in4->sin_addr.s_addr = INADDR_ANY;
+ bind_in4->sin_addr.s_addr = htobe32(INADDR_ANY);
if (requested_port)
requested_port = *mapped_port;
bind_in4->sin_port = requested_port;
@@ -1402,8 +1402,8 @@ connected:
static int rs_any_addr(const union socket_addr *addr)
{
if (addr->sa.sa_family == AF_INET) {
- return (addr->sin.sin_addr.s_addr == INADDR_ANY ||
- addr->sin.sin_addr.s_addr == INADDR_LOOPBACK);
+ return (addr->sin.sin_addr.s_addr == htobe32(INADDR_ANY) ||
+ addr->sin.sin_addr.s_addr == htobe32(INADDR_LOOPBACK));
} else {
return (!memcmp(&addr->sin6.sin6_addr, &in6addr_any, 16) ||
!memcmp(&addr->sin6.sin6_addr, &in6addr_loopback, 16));
The constants are in host order. INADDR_ANY is 0 so the swap has no change, but the INADDR_LOOPBACK test in rsocket never worked. Found by sparse Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> --- iwpmd/iwarp_pm_common.c | 2 +- iwpmd/iwarp_pm_helper.c | 2 +- librdmacm/rsocket.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-)