From a8d3ec4e04ed8a94b4d108386d114b89ef94dd60 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 7 Nov 2013 18:16:34 +0100 Subject: [SERVER] Add --bind parameter to specify bind interface (currently IPv4 only) --- src/server/sockhelper.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/server/sockhelper.c') diff --git a/src/server/sockhelper.c b/src/server/sockhelper.c index b72cf05..ffb34e9 100644 --- a/src/server/sockhelper.c +++ b/src/server/sockhelper.c @@ -81,13 +81,21 @@ void sock_set_timeout(const int sockfd, const int milliseconds) setsockopt( sockfd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv) ); } -int sock_listen_any(int protocol_family, uint16_t port) +int sock_listen_any(int protocol_family, uint16_t port, char* bind_addr) { struct sockaddr_storage addr; + struct in_addr local; + if (bind_addr == NULL) { + if (!inet_aton(bind_addr, &local)) return -1; + } memset( &addr, 0, sizeof(addr) ); if ( protocol_family == PF_INET ) { struct sockaddr_in *v4 = (struct sockaddr_in *)&addr; - v4->sin_addr.s_addr = INADDR_ANY; + if (bind_addr == NULL) { + v4->sin_addr.s_addr = INADDR_ANY; + } else { + v4->sin_addr = local; + } v4->sin_port = htons( port ); v4->sin_family = AF_INET; } -- cgit v1.2.3-55-g7522