fix double merge
No binary (build failed)
—
(log yok)
| @@ -114,82 +114,6 @@ int xsocket_stream_ip4or6(sa_family_t *fp) | |
| return fd; | |
| } | |
| - | int create_and_bind_socket_ip4or6(const char *hostaddr, int port) |
| - | { |
| - | static const int on = 1; |
| - | int fd; |
| - | sockaddr_inet sa; |
| - | |
| - | memset(&sa, 0, sizeof(sa)); |
| - | if (hostaddr && dotted2sockaddr(hostaddr, &sa.sa, sizeof(sa))) |
| - | bb_show_usage(); |
| - | |
| - | if (!sa.sa.sa_family) |
| - | fd = xsocket_stream_ip4or6(&sa.sa.sa_family); |
| - | else /* user specified bind addr dictates family */ |
| - | fd = xsocket(sa.sa.sa_family, SOCK_STREAM, 0); |
| - | setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); |
| - | |
| - | /* if (port >= 0) { */ |
| - | #if ENABLE_FEATURE_IPV6 |
| - | if (sa.sa.sa_family == AF_INET6 /* && !sa.sin6.sin6_port */) |
| - | sa.sin6.sin6_port = htons(port); |
| - | #endif |
| - | if (sa.sa.sa_family == AF_INET /* && !sa.sin.sin_port */) |
| - | sa.sin.sin_port = htons(port); |
| - | /* } */ |
| - | |
| - | xbind(fd, &sa.sa, sizeof(sa)); |
| - | return fd; |
| - | } |
| - | |
| - | int dotted2sockaddr(const char *dotted, struct sockaddr* sp, int socklen) |
| - | { |
| - | union { |
| - | struct in_addr a4; |
| - | #if ENABLE_FEATURE_IPV6 |
| - | struct in6_addr a6; |
| - | #endif |
| - | } a; |
| - | |
| - | /* TODO maybe: port spec? like n.n.n.n:nn */ |
| - | |
| - | #if ENABLE_FEATURE_IPV6 |
| - | if (socklen >= sizeof(struct sockaddr_in6) |
| - | && inet_pton(AF_INET6, dotted, &a.a6) > 0 |
| - | ) { |
| - | ((struct sockaddr_in6*)sp)->sin6_family = AF_INET6; |
| - | ((struct sockaddr_in6*)sp)->sin6_addr = a.a6; |
| - | /* ((struct sockaddr_in6*)sp)->sin6_port = */ |
| - | return 0; /* success */ |
| - | } |
| - | #endif |
| - | if (socklen >= sizeof(struct sockaddr_in) |
| - | && inet_pton(AF_INET, dotted, &a.a4) > 0 |
| - | ) { |
| - | ((struct sockaddr_in*)sp)->sin_family = AF_INET; |
| - | ((struct sockaddr_in*)sp)->sin_addr = a.a4; |
| - | /* ((struct sockaddr_in*)sp)->sin_port = */ |
| - | return 0; /* success */ |
| - | } |
| - | return 1; |
| - | } |
| - | |
| - | int xsocket_stream_ip4or6(sa_family_t *fp) |
| - | { |
| - | int fd; |
| - | #if ENABLE_FEATURE_IPV6 |
| - | fd = socket(AF_INET6, SOCK_STREAM, 0); |
| - | if (fp) *fp = AF_INET6; |
| - | if (fd < 0) |
| - | #endif |
| - | { |
| - | fd = xsocket(AF_INET, SOCK_STREAM, 0); |
| - | if (fp) *fp = AF_INET; |
| - | } |
| - | return fd; |
| - | } |
| - | |
| int create_and_bind_socket_ip4or6(const char *hostaddr, int port) | |
| { | |
| static const int on = 1; | |