Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: 1343914619-10576-1-git-send-email-arne@rfc2549.org
URL: http://article.gmane.org/gmane.network.openvpn.devel/6942
Signed-off-by: David Sommerseth <dazo@users.sourceforge.net>
| ... | ... |
@@ -1567,7 +1567,7 @@ man_listen (struct management *man) |
| 1567 | 1567 |
else |
| 1568 | 1568 |
#endif |
| 1569 | 1569 |
{
|
| 1570 |
- man->connection.sd_top = create_socket_tcp (); |
|
| 1570 |
+ man->connection.sd_top = create_socket_tcp (AF_INET); |
|
| 1571 | 1571 |
socket_bind (man->connection.sd_top, &man->settings.local, "MANAGEMENT"); |
| 1572 | 1572 |
} |
| 1573 | 1573 |
|
| ... | ... |
@@ -1633,7 +1633,7 @@ man_connect (struct management *man) |
| 1633 | 1633 |
else |
| 1634 | 1634 |
#endif |
| 1635 | 1635 |
{
|
| 1636 |
- man->connection.sd_cli = create_socket_tcp (); |
|
| 1636 |
+ man->connection.sd_cli = create_socket_tcp (AF_INET); |
|
| 1637 | 1637 |
status = openvpn_connect (man->connection.sd_cli, |
| 1638 | 1638 |
&man->settings.local, |
| 1639 | 1639 |
5, |
| ... | ... |
@@ -829,11 +829,11 @@ link_socket_update_buffer_sizes (struct link_socket *ls, int rcvbuf, int sndbuf) |
| 829 | 829 |
*/ |
| 830 | 830 |
|
| 831 | 831 |
socket_descriptor_t |
| 832 |
-create_socket_tcp (void) |
|
| 832 |
+create_socket_tcp (int af) |
|
| 833 | 833 |
{
|
| 834 | 834 |
socket_descriptor_t sd; |
| 835 | 835 |
|
| 836 |
- if ((sd = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) |
|
| 836 |
+ if ((sd = socket (af, SOCK_STREAM, IPPROTO_TCP)) < 0) |
|
| 837 | 837 |
msg (M_ERR, "Cannot create TCP socket"); |
| 838 | 838 |
|
| 839 | 839 |
#ifndef WIN32 /* using SO_REUSEADDR on Windows will cause bind to succeed on port conflicts! */ |
| ... | ... |
@@ -846,18 +846,6 @@ create_socket_tcp (void) |
| 846 | 846 |
} |
| 847 | 847 |
#endif |
| 848 | 848 |
|
| 849 |
-#if 0 |
|
| 850 |
- /* set socket linger options */ |
|
| 851 |
- {
|
|
| 852 |
- struct linger linger; |
|
| 853 |
- linger.l_onoff = 1; |
|
| 854 |
- linger.l_linger = 2; |
|
| 855 |
- if (setsockopt (sd, SOL_SOCKET, SO_LINGER, |
|
| 856 |
- (void *) &linger, sizeof (linger)) < 0) |
|
| 857 |
- msg (M_ERR, "TCP: Cannot setsockopt SO_LINGER on TCP socket"); |
|
| 858 |
- } |
|
| 859 |
-#endif |
|
| 860 |
- |
|
| 861 | 849 |
return sd; |
| 862 | 850 |
} |
| 863 | 851 |
|
| ... | ... |
@@ -912,25 +900,6 @@ create_socket_udp6 (const unsigned int flags) |
| 912 | 912 |
return sd; |
| 913 | 913 |
} |
| 914 | 914 |
|
| 915 |
-static socket_descriptor_t |
|
| 916 |
-create_socket_tcp6 (void) |
|
| 917 |
-{
|
|
| 918 |
- socket_descriptor_t sd; |
|
| 919 |
- |
|
| 920 |
- if ((sd = socket (PF_INET6, SOCK_STREAM, IPPROTO_TCP)) < 0) |
|
| 921 |
- msg (M_ERR, "Cannot create TCP6 socket"); |
|
| 922 |
- |
|
| 923 |
- /* set SO_REUSEADDR on socket */ |
|
| 924 |
- {
|
|
| 925 |
- int on = 1; |
|
| 926 |
- if (setsockopt (sd, SOL_SOCKET, SO_REUSEADDR, |
|
| 927 |
- (void *) &on, sizeof (on)) < 0) |
|
| 928 |
- msg (M_ERR, "TCP: Cannot setsockopt SO_REUSEADDR on TCP6 socket"); |
|
| 929 |
- } |
|
| 930 |
- |
|
| 931 |
- return sd; |
|
| 932 |
-} |
|
| 933 |
- |
|
| 934 | 915 |
static void |
| 935 | 916 |
create_socket (struct link_socket *sock) |
| 936 | 917 |
{
|
| ... | ... |
@@ -942,18 +911,18 @@ create_socket (struct link_socket *sock) |
| 942 | 942 |
|
| 943 | 943 |
#ifdef ENABLE_SOCKS |
| 944 | 944 |
if (sock->socks_proxy) |
| 945 |
- sock->ctrl_sd = create_socket_tcp (); |
|
| 945 |
+ sock->ctrl_sd = create_socket_tcp (AF_INET); |
|
| 946 | 946 |
#endif |
| 947 | 947 |
} |
| 948 | 948 |
else if (sock->info.proto == PROTO_TCPv4_SERVER |
| 949 | 949 |
|| sock->info.proto == PROTO_TCPv4_CLIENT) |
| 950 | 950 |
{
|
| 951 |
- sock->sd = create_socket_tcp (); |
|
| 951 |
+ sock->sd = create_socket_tcp (AF_INET); |
|
| 952 | 952 |
} |
| 953 | 953 |
else if (sock->info.proto == PROTO_TCPv6_SERVER |
| 954 | 954 |
|| sock->info.proto == PROTO_TCPv6_CLIENT) |
| 955 | 955 |
{
|
| 956 |
- sock->sd = create_socket_tcp6 (); |
|
| 956 |
+ sock->sd = create_socket_tcp (AF_INET6); |
|
| 957 | 957 |
} |
| 958 | 958 |
else if (sock->info.proto == PROTO_UDPv6) |
| 959 | 959 |
{
|
| ... | ... |
@@ -1304,15 +1273,7 @@ socket_connect (socket_descriptor_t *sd, |
| 1304 | 1304 |
if (*signal_received) |
| 1305 | 1305 |
goto done; |
| 1306 | 1306 |
|
| 1307 |
- switch(local->addr.sa.sa_family) |
|
| 1308 |
- {
|
|
| 1309 |
- case PF_INET6: |
|
| 1310 |
- *sd = create_socket_tcp6 (); |
|
| 1311 |
- break; |
|
| 1312 |
- case PF_INET: |
|
| 1313 |
- *sd = create_socket_tcp (); |
|
| 1314 |
- break; |
|
| 1315 |
- } |
|
| 1307 |
+ *sd = create_socket_tcp (local->addr.sa.sa_family); |
|
| 1316 | 1308 |
|
| 1317 | 1309 |
if (bind_local) |
| 1318 | 1310 |
socket_bind (*sd, local, "TCP Client"); |
| ... | ... |
@@ -1917,7 +1878,7 @@ link_socket_init_phase2 (struct link_socket *sock, |
| 1917 | 1917 |
if (proxy_retry) |
| 1918 | 1918 |
{
|
| 1919 | 1919 |
openvpn_close_socket (sock->sd); |
| 1920 |
- sock->sd = create_socket_tcp (); |
|
| 1920 |
+ sock->sd = create_socket_tcp (AF_INET); |
|
| 1921 | 1921 |
} |
| 1922 | 1922 |
} while (proxy_retry); |
| 1923 | 1923 |
} |
| ... | ... |
@@ -425,7 +425,7 @@ bool ip_or_dns_addr_safe (const char *addr, const bool allow_fqdn); |
| 425 | 425 |
bool mac_addr_safe (const char *mac_addr); |
| 426 | 426 |
bool ipv6_addr_safe (const char *ipv6_text_addr); |
| 427 | 427 |
|
| 428 |
-socket_descriptor_t create_socket_tcp (void); |
|
| 428 |
+socket_descriptor_t create_socket_tcp (int af); |
|
| 429 | 429 |
|
| 430 | 430 |
socket_descriptor_t socket_do_accept (socket_descriptor_t sd, |
| 431 | 431 |
struct link_socket_actual *act, |