|
|
@ -49,7 +49,7 @@ int setnonblocking(int fd) { |
|
|
|
return fcntl(fd, F_SETFL, flags | O_NONBLOCK); |
|
|
|
} |
|
|
|
|
|
|
|
int create_and_bind(const char *port) { |
|
|
|
int create_and_bind(const char *addr, const char *port) { |
|
|
|
struct addrinfo hints; |
|
|
|
struct addrinfo *result, *rp; |
|
|
|
int s, listen_sock; |
|
|
@ -58,7 +58,7 @@ int create_and_bind(const char *port) { |
|
|
|
hints.ai_family = AF_UNSPEC; /* Return IPv4 and IPv6 choices */ |
|
|
|
hints.ai_socktype = SOCK_STREAM; /* We want a TCP socket */ |
|
|
|
|
|
|
|
s = getaddrinfo("0.0.0.0", port, &hints, &result); |
|
|
|
s = getaddrinfo(addr, port, &hints, &result); |
|
|
|
if (s != 0) { |
|
|
|
LOGD("getaddrinfo: %s", gai_strerror(s)); |
|
|
|
return -1; |
|
|
@ -533,6 +533,7 @@ int main (int argc, char **argv) { |
|
|
|
int i, c; |
|
|
|
int pid_flags = 0; |
|
|
|
char *local_port = NULL; |
|
|
|
char *local_addr = NULL; |
|
|
|
char *password = NULL; |
|
|
|
char *timeout = NULL; |
|
|
|
char *method = NULL; |
|
|
@ -545,7 +546,7 @@ int main (int argc, char **argv) { |
|
|
|
|
|
|
|
opterr = 0; |
|
|
|
|
|
|
|
while ((c = getopt (argc, argv, "f:s:p:l:k:t:m:c:")) != -1) { |
|
|
|
while ((c = getopt (argc, argv, "f:s:p:l:k:t:m:c:b:")) != -1) { |
|
|
|
switch (c) { |
|
|
|
case 's': |
|
|
|
remote_host[remote_num++] = optarg; |
|
|
@ -572,6 +573,9 @@ int main (int argc, char **argv) { |
|
|
|
case 'c': |
|
|
|
conf_path = optarg; |
|
|
|
break; |
|
|
|
case 'b': |
|
|
|
local_addr = optarg; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -603,6 +607,8 @@ int main (int argc, char **argv) { |
|
|
|
|
|
|
|
if (timeout == NULL) timeout = "10"; |
|
|
|
|
|
|
|
if (local_addr == NULL) local_addr = "0.0.0.0"; |
|
|
|
|
|
|
|
if (pid_flags) { |
|
|
|
demonize(pid_path); |
|
|
|
} |
|
|
@ -616,7 +622,7 @@ int main (int argc, char **argv) { |
|
|
|
|
|
|
|
// Setup socket |
|
|
|
int listenfd; |
|
|
|
listenfd = create_and_bind(local_port); |
|
|
|
listenfd = create_and_bind(local_addr, local_port); |
|
|
|
if (listenfd < 0) { |
|
|
|
FATAL("bind() error.."); |
|
|
|
} |
|
|
|