]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Merge almost identical create_socket_tcp and create_socket_tcp6
authorArne Schwabe <arne@rfc2549.org>
Thu, 2 Aug 2012 13:36:59 +0000 (15:36 +0200)
committerDavid Sommerseth <dazo@users.sourceforge.net>
Mon, 6 Aug 2012 11:46:39 +0000 (13:46 +0200)
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>
src/openvpn/manage.c
src/openvpn/socket.c
src/openvpn/socket.h

index 3ef14e5523b72a548d301e2bd27e19e5a3dfbeff..d0bb4164f2d49b479d4d1729ca18b2927eb13e52 100644 (file)
@@ -1567,7 +1567,7 @@ man_listen (struct management *man)
       else
 #endif
        {
-         man->connection.sd_top = create_socket_tcp ();
+         man->connection.sd_top = create_socket_tcp (AF_INET);
          socket_bind (man->connection.sd_top, &man->settings.local, "MANAGEMENT");
        }
 
@@ -1633,7 +1633,7 @@ man_connect (struct management *man)
   else
 #endif
     {
-      man->connection.sd_cli = create_socket_tcp ();
+      man->connection.sd_cli = create_socket_tcp (AF_INET);
       status = openvpn_connect (man->connection.sd_cli,
                                &man->settings.local,
                                5,
index eb5e1802f26b2482c1c9b6e37e890ccbab5e3f82..a34e78cf5b4926e2c765f20b5847a18cfd9072d7 100644 (file)
@@ -829,11 +829,11 @@ link_socket_update_buffer_sizes (struct link_socket *ls, int rcvbuf, int sndbuf)
  */
 
 socket_descriptor_t
-create_socket_tcp (void)
+create_socket_tcp (int af)
 {
   socket_descriptor_t sd;
 
-  if ((sd = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
+  if ((sd = socket (af, SOCK_STREAM, IPPROTO_TCP)) < 0)
     msg (M_ERR, "Cannot create TCP socket");
 
 #ifndef WIN32 /* using SO_REUSEADDR on Windows will cause bind to succeed on port conflicts! */
@@ -846,18 +846,6 @@ create_socket_tcp (void)
   }
 #endif
 
-#if 0
-  /* set socket linger options */
-  {
-    struct linger linger;
-    linger.l_onoff = 1;
-    linger.l_linger = 2;
-    if (setsockopt (sd, SOL_SOCKET, SO_LINGER,
-                   (void *) &linger, sizeof (linger)) < 0)
-      msg (M_ERR, "TCP: Cannot setsockopt SO_LINGER on TCP socket");
-  }
-#endif
-
   return sd;
 }
 
@@ -912,25 +900,6 @@ create_socket_udp6 (const unsigned int flags)
   return sd;
 }
 
-static socket_descriptor_t
-create_socket_tcp6 (void)
-{
-  socket_descriptor_t sd;
-
-  if ((sd = socket (PF_INET6, SOCK_STREAM, IPPROTO_TCP)) < 0)
-    msg (M_ERR, "Cannot create TCP6 socket");
-
-  /* set SO_REUSEADDR on socket */
-  {
-    int on = 1;
-    if (setsockopt (sd, SOL_SOCKET, SO_REUSEADDR,
-                   (void *) &on, sizeof (on)) < 0)
-      msg (M_ERR, "TCP: Cannot setsockopt SO_REUSEADDR on TCP6 socket");
-  }
-
-  return sd;
-}
-
 static void
 create_socket (struct link_socket *sock)
 {
@@ -942,18 +911,18 @@ create_socket (struct link_socket *sock)
 
 #ifdef ENABLE_SOCKS
       if (sock->socks_proxy)
-       sock->ctrl_sd = create_socket_tcp ();
+       sock->ctrl_sd = create_socket_tcp (AF_INET);
 #endif
     }
   else if (sock->info.proto == PROTO_TCPv4_SERVER
           || sock->info.proto == PROTO_TCPv4_CLIENT)
     {
-      sock->sd = create_socket_tcp ();
+      sock->sd = create_socket_tcp (AF_INET);
     }
   else if (sock->info.proto == PROTO_TCPv6_SERVER
           || sock->info.proto == PROTO_TCPv6_CLIENT)
     {
-      sock->sd = create_socket_tcp6 ();
+      sock->sd = create_socket_tcp (AF_INET6);
     }
   else if (sock->info.proto == PROTO_UDPv6)
     {
@@ -1304,15 +1273,7 @@ socket_connect (socket_descriptor_t *sd,
       if (*signal_received)
        goto done;
 
-      switch(local->addr.sa.sa_family)
-       {
-       case PF_INET6:
-         *sd = create_socket_tcp6 ();
-         break;
-       case PF_INET:
-         *sd = create_socket_tcp ();
-         break;
-       }
+       *sd = create_socket_tcp (local->addr.sa.sa_family);
 
       if (bind_local)
         socket_bind (*sd, local, "TCP Client");
@@ -1917,7 +1878,7 @@ link_socket_init_phase2 (struct link_socket *sock,
            if (proxy_retry)
              {
                openvpn_close_socket (sock->sd);
-               sock->sd = create_socket_tcp ();
+               sock->sd = create_socket_tcp (AF_INET);
              }
          } while (proxy_retry);
        }
index 47c6e8eb78cda5d955a85b76bdd5577200fc97ab..43f72dc0c22041b2fda17f72f137ad776e93e1cf 100644 (file)
@@ -425,7 +425,7 @@ bool ip_or_dns_addr_safe (const char *addr, const bool allow_fqdn);
 bool mac_addr_safe (const char *mac_addr);
 bool ipv6_addr_safe (const char *ipv6_text_addr);
 
-socket_descriptor_t create_socket_tcp (void);
+socket_descriptor_t create_socket_tcp (int af);
 
 socket_descriptor_t socket_do_accept (socket_descriptor_t sd,
                                      struct link_socket_actual *act,