From d3c2109cb8d49b179846c1fd086841bfe25602eb Mon Sep 17 00:00:00 2001 From: erickson Date: Tue, 16 Aug 2005 15:09:32 +0000 Subject: [PATCH] added ability to bind to a specific IP address for TCP server connections. TCP client code is now tested and appears to work git-svn-id: svn://svn.open-ils.org/ILS/trunk@1662 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- OpenSRF/src/utils/socket_bundle.c | 10 ++++++++-- OpenSRF/src/utils/socket_bundle.h | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/OpenSRF/src/utils/socket_bundle.c b/OpenSRF/src/utils/socket_bundle.c index 2ec5acd627..c18534f188 100644 --- a/OpenSRF/src/utils/socket_bundle.c +++ b/OpenSRF/src/utils/socket_bundle.c @@ -82,7 +82,7 @@ socket_node* _socket_add_node(socket_manager* mgr, /* creates a new server socket node and adds it to the socket set. returns new socket fd on success. -1 on failure. socket_type is one of INET or UNIX */ -int socket_open_tcp_server(socket_manager* mgr, int port) { +int socket_open_tcp_server(socket_manager* mgr, int port, char* listen_ip) { if( mgr == NULL ) return warning_handler("socket_open_tcp_server(): NULL mgr"); @@ -95,7 +95,13 @@ int socket_open_tcp_server(socket_manager* mgr, int port) { return warning_handler("tcp_server_connect(): Unable to create socket"); server_addr.sin_family = AF_INET; - server_addr.sin_addr.s_addr = htonl(INADDR_ANY); + + if(listen_ip != NULL) { + server_addr.sin_addr.s_addr = inet_addr(listen_ip); + } else { + server_addr.sin_addr.s_addr = htonl(INADDR_ANY); + } + server_addr.sin_port = htons(port); if(bind( sock_fd, (struct sockaddr*) &server_addr, sizeof(server_addr)) < 0) diff --git a/OpenSRF/src/utils/socket_bundle.h b/OpenSRF/src/utils/socket_bundle.h index 05c2863741..25fc158a8e 100644 --- a/OpenSRF/src/utils/socket_bundle.h +++ b/OpenSRF/src/utils/socket_bundle.h @@ -70,7 +70,7 @@ void socket_manager_free(socket_manager* mgr); /* creates a new server socket node and adds it to the socket set. returns socket id on success. -1 on failure. socket_type is one of INET or UNIX */ -int socket_open_tcp_server(socket_manager*, int port); +int socket_open_tcp_server(socket_manager*, int port, char* listen_ip ); int socket_open_unix_server(socket_manager* mgr, char* path); -- 2.43.2