aboutsummaryrefslogtreecommitdiff
path: root/src/vpn/gnunet-service-vpn.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2013-10-11 16:29:47 +0000
committerChristian Grothoff <christian@grothoff.org>2013-10-11 16:29:47 +0000
commit024c76de62aecbb528417a7c2c6f03a2e2584705 (patch)
tree8f34f3caa459d887ebabef05a0073a49c42ada18 /src/vpn/gnunet-service-vpn.c
parent4731f3f3f673f89080461937fc2222ada419cf5e (diff)
downloadgnunet-024c76de62aecbb528417a7c2c6f03a2e2584705.tar.gz
gnunet-024c76de62aecbb528417a7c2c6f03a2e2584705.zip
-fixing minor memleaks
Diffstat (limited to 'src/vpn/gnunet-service-vpn.c')
-rw-r--r--src/vpn/gnunet-service-vpn.c66
1 files changed, 37 insertions, 29 deletions
diff --git a/src/vpn/gnunet-service-vpn.c b/src/vpn/gnunet-service-vpn.c
index 4ecd0dfc1..bba321f8c 100644
--- a/src/vpn/gnunet-service-vpn.c
+++ b/src/vpn/gnunet-service-vpn.c
@@ -167,7 +167,7 @@ struct DestinationEntry
167 * Address if af is AF_INET. 167 * Address if af is AF_INET.
168 */ 168 */
169 struct in_addr v4; 169 struct in_addr v4;
170 170
171 /** 171 /**
172 * Address if af is AF_INET6. 172 * Address if af is AF_INET6.
173 */ 173 */
@@ -1222,7 +1222,7 @@ route_packet (struct DestinationEntry *destination,
1222 tim = (struct GNUNET_EXIT_TcpInternetStartMessage *) &tnq[1]; 1222 tim = (struct GNUNET_EXIT_TcpInternetStartMessage *) &tnq[1];
1223 tim->header.size = htons ((uint16_t) mlen); 1223 tim->header.size = htons ((uint16_t) mlen);
1224 tim->header.type = htons (GNUNET_MESSAGE_TYPE_VPN_TCP_TO_INTERNET_START); 1224 tim->header.type = htons (GNUNET_MESSAGE_TYPE_VPN_TCP_TO_INTERNET_START);
1225 tim->af = htonl (destination->details.exit_destination.af); 1225 tim->af = htonl (destination->details.exit_destination.af);
1226 tim->tcp_header = *tcp; 1226 tim->tcp_header = *tcp;
1227 switch (destination->details.exit_destination.af) 1227 switch (destination->details.exit_destination.af)
1228 { 1228 {
@@ -1331,7 +1331,7 @@ route_packet (struct DestinationEntry *destination,
1331 gettext_noop ("# ICMPv6 packets dropped (not allowed)"), 1331 gettext_noop ("# ICMPv6 packets dropped (not allowed)"),
1332 1, GNUNET_NO); 1332 1, GNUNET_NO);
1333 return; 1333 return;
1334 } 1334 }
1335 /* end of AF_INET6 */ 1335 /* end of AF_INET6 */
1336 break; 1336 break;
1337 default: 1337 default:
@@ -1375,11 +1375,11 @@ route_packet (struct DestinationEntry *destination,
1375 case AF_INET: 1375 case AF_INET:
1376 switch (icmp->type) 1376 switch (icmp->type)
1377 { 1377 {
1378 case GNUNET_TUN_ICMPTYPE_ECHO_REPLY: 1378 case GNUNET_TUN_ICMPTYPE_ECHO_REPLY:
1379 if (destination->details.exit_destination.af == AF_INET6) 1379 if (destination->details.exit_destination.af == AF_INET6)
1380 iim->icmp_header.type = GNUNET_TUN_ICMPTYPE6_ECHO_REPLY; 1380 iim->icmp_header.type = GNUNET_TUN_ICMPTYPE6_ECHO_REPLY;
1381 break; 1381 break;
1382 case GNUNET_TUN_ICMPTYPE_ECHO_REQUEST: 1382 case GNUNET_TUN_ICMPTYPE_ECHO_REQUEST:
1383 if (destination->details.exit_destination.af == AF_INET6) 1383 if (destination->details.exit_destination.af == AF_INET6)
1384 iim->icmp_header.type = GNUNET_TUN_ICMPTYPE6_ECHO_REQUEST; 1384 iim->icmp_header.type = GNUNET_TUN_ICMPTYPE6_ECHO_REQUEST;
1385 break; 1385 break;
@@ -1389,7 +1389,7 @@ route_packet (struct DestinationEntry *destination,
1389 /* throw away IP-payload, exit will have to make it up anyway */ 1389 /* throw away IP-payload, exit will have to make it up anyway */
1390 payload_length = sizeof (struct GNUNET_TUN_IcmpHeader); 1390 payload_length = sizeof (struct GNUNET_TUN_IcmpHeader);
1391 break; 1391 break;
1392 case GNUNET_TUN_ICMPTYPE_TIME_EXCEEDED: 1392 case GNUNET_TUN_ICMPTYPE_TIME_EXCEEDED:
1393 if (destination->details.exit_destination.af == AF_INET6) 1393 if (destination->details.exit_destination.af == AF_INET6)
1394 iim->icmp_header.type = GNUNET_TUN_ICMPTYPE6_TIME_EXCEEDED; 1394 iim->icmp_header.type = GNUNET_TUN_ICMPTYPE6_TIME_EXCEEDED;
1395 /* throw away IP-payload, exit will have to make it up anyway */ 1395 /* throw away IP-payload, exit will have to make it up anyway */
@@ -1411,7 +1411,7 @@ route_packet (struct DestinationEntry *destination,
1411 GNUNET_STATISTICS_update (stats, 1411 GNUNET_STATISTICS_update (stats,
1412 gettext_noop ("# ICMPv4 packets dropped (type not allowed)"), 1412 gettext_noop ("# ICMPv4 packets dropped (type not allowed)"),
1413 1, GNUNET_NO); 1413 1, GNUNET_NO);
1414 GNUNET_free (tnq); 1414 GNUNET_free (tnq);
1415 return; 1415 return;
1416 } 1416 }
1417 /* end of AF_INET */ 1417 /* end of AF_INET */
@@ -1467,7 +1467,7 @@ route_packet (struct DestinationEntry *destination,
1467 GNUNET_STATISTICS_update (stats, 1467 GNUNET_STATISTICS_update (stats,
1468 gettext_noop ("# ICMPv6 packets dropped (type not allowed)"), 1468 gettext_noop ("# ICMPv6 packets dropped (type not allowed)"),
1469 1, GNUNET_NO); 1469 1, GNUNET_NO);
1470 GNUNET_free (tnq); 1470 GNUNET_free (tnq);
1471 return; 1471 return;
1472 } 1472 }
1473 /* end of AF_INET6 */ 1473 /* end of AF_INET6 */
@@ -1564,7 +1564,7 @@ message_token (void *cls,
1564 if (NULL == de) 1564 if (NULL == de)
1565 { 1565 {
1566 char buf[INET6_ADDRSTRLEN]; 1566 char buf[INET6_ADDRSTRLEN];
1567 1567
1568 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 1568 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
1569 _("Packet received for unmapped destination `%s' (dropping it)\n"), 1569 _("Packet received for unmapped destination `%s' (dropping it)\n"),
1570 inet_ntop (AF_INET6, 1570 inet_ntop (AF_INET6,
@@ -1576,8 +1576,8 @@ message_token (void *cls,
1576 route_packet (de, 1576 route_packet (de,
1577 AF_INET6, 1577 AF_INET6,
1578 pkt6->next_header, 1578 pkt6->next_header,
1579 &pkt6->source_address, 1579 &pkt6->source_address,
1580 &pkt6->destination_address, 1580 &pkt6->destination_address,
1581 &pkt6[1], 1581 &pkt6[1],
1582 mlen - sizeof (struct GNUNET_TUN_IPv6Header)); 1582 mlen - sizeof (struct GNUNET_TUN_IPv6Header));
1583 } 1583 }
@@ -1600,7 +1600,7 @@ message_token (void *cls,
1600 if (NULL == de) 1600 if (NULL == de)
1601 { 1601 {
1602 char buf[INET_ADDRSTRLEN]; 1602 char buf[INET_ADDRSTRLEN];
1603 1603
1604 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 1604 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
1605 _("Packet received for unmapped destination `%s' (dropping it)\n"), 1605 _("Packet received for unmapped destination `%s' (dropping it)\n"),
1606 inet_ntop (AF_INET, 1606 inet_ntop (AF_INET,
@@ -1612,14 +1612,14 @@ message_token (void *cls,
1612 if (pkt4->header_length * 4 != sizeof (struct GNUNET_TUN_IPv4Header)) 1612 if (pkt4->header_length * 4 != sizeof (struct GNUNET_TUN_IPv4Header))
1613 { 1613 {
1614 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 1614 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
1615 _("Received IPv4 packet with options (dropping it)\n")); 1615 _("Received IPv4 packet with options (dropping it)\n"));
1616 return GNUNET_OK; 1616 return GNUNET_OK;
1617 } 1617 }
1618 route_packet (de, 1618 route_packet (de,
1619 AF_INET, 1619 AF_INET,
1620 pkt4->protocol, 1620 pkt4->protocol,
1621 &pkt4->source_address, 1621 &pkt4->source_address,
1622 &pkt4->destination_address, 1622 &pkt4->destination_address,
1623 &pkt4[1], 1623 &pkt4[1],
1624 mlen - sizeof (struct GNUNET_TUN_IPv4Header)); 1624 mlen - sizeof (struct GNUNET_TUN_IPv4Header));
1625 } 1625 }
@@ -1772,7 +1772,7 @@ receive_icmp_back (void *cls,
1772 do ICMP PT (translate ICMP types) */ 1772 do ICMP PT (translate ICMP types) */
1773 switch (ntohl (i2v->af)) 1773 switch (ntohl (i2v->af))
1774 { 1774 {
1775 case AF_INET: 1775 case AF_INET:
1776 switch (icmp->type) 1776 switch (icmp->type)
1777 { 1777 {
1778 case GNUNET_TUN_ICMPTYPE_ECHO_REPLY: 1778 case GNUNET_TUN_ICMPTYPE_ECHO_REPLY:
@@ -1780,11 +1780,11 @@ receive_icmp_back (void *cls,
1780 break; 1780 break;
1781 case GNUNET_TUN_ICMPTYPE_DESTINATION_UNREACHABLE: 1781 case GNUNET_TUN_ICMPTYPE_DESTINATION_UNREACHABLE:
1782 case GNUNET_TUN_ICMPTYPE_SOURCE_QUENCH: 1782 case GNUNET_TUN_ICMPTYPE_SOURCE_QUENCH:
1783 case GNUNET_TUN_ICMPTYPE_TIME_EXCEEDED: 1783 case GNUNET_TUN_ICMPTYPE_TIME_EXCEEDED:
1784 { 1784 {
1785 struct GNUNET_TUN_IPv4Header *ipp = (struct GNUNET_TUN_IPv4Header *) &icmp[1]; 1785 struct GNUNET_TUN_IPv4Header *ipp = (struct GNUNET_TUN_IPv4Header *) &icmp[1];
1786 struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; 1786 struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1];
1787 1787
1788 if (mlen != 0) 1788 if (mlen != 0)
1789 { 1789 {
1790 /* sender did not strip ICMP payload? */ 1790 /* sender did not strip ICMP payload? */
@@ -1814,7 +1814,7 @@ receive_icmp_back (void *cls,
1814 { 1814 {
1815 struct GNUNET_TUN_IPv4Header *ipp = (struct GNUNET_TUN_IPv4Header *) &icmp[1]; 1815 struct GNUNET_TUN_IPv4Header *ipp = (struct GNUNET_TUN_IPv4Header *) &icmp[1];
1816 struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; 1816 struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1];
1817 1817
1818 if (mlen != 0) 1818 if (mlen != 0)
1819 { 1819 {
1820 /* sender did not strip ICMP payload? */ 1820 /* sender did not strip ICMP payload? */
@@ -1831,7 +1831,7 @@ receive_icmp_back (void *cls,
1831 { 1831 {
1832 struct GNUNET_TUN_IPv4Header *ipp = (struct GNUNET_TUN_IPv4Header *) &icmp[1]; 1832 struct GNUNET_TUN_IPv4Header *ipp = (struct GNUNET_TUN_IPv4Header *) &icmp[1];
1833 struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; 1833 struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1];
1834 1834
1835 if (mlen != 0) 1835 if (mlen != 0)
1836 { 1836 {
1837 /* sender did not strip ICMP payload? */ 1837 /* sender did not strip ICMP payload? */
@@ -1867,7 +1867,7 @@ receive_icmp_back (void *cls,
1867 default: 1867 default:
1868 GNUNET_break_op (0); 1868 GNUNET_break_op (0);
1869 return GNUNET_SYSERR; 1869 return GNUNET_SYSERR;
1870 } 1870 }
1871 msg->size = htons (size); 1871 msg->size = htons (size);
1872 GNUNET_TUN_calculate_icmp_checksum (icmp, 1872 GNUNET_TUN_calculate_icmp_checksum (icmp,
1873 &i2v[1], 1873 &i2v[1],
@@ -1910,7 +1910,7 @@ receive_icmp_back (void *cls,
1910 do ICMP PT (translate ICMP types) */ 1910 do ICMP PT (translate ICMP types) */
1911 switch (ntohl (i2v->af)) 1911 switch (ntohl (i2v->af))
1912 { 1912 {
1913 case AF_INET: 1913 case AF_INET:
1914 /* ICMP PT 4-to-6 and possibly making up payloads */ 1914 /* ICMP PT 4-to-6 and possibly making up payloads */
1915 switch (icmp->type) 1915 switch (icmp->type)
1916 { 1916 {
@@ -1925,7 +1925,7 @@ receive_icmp_back (void *cls,
1925 { 1925 {
1926 struct GNUNET_TUN_IPv6Header *ipp = (struct GNUNET_TUN_IPv6Header *) &icmp[1]; 1926 struct GNUNET_TUN_IPv6Header *ipp = (struct GNUNET_TUN_IPv6Header *) &icmp[1];
1927 struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; 1927 struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1];
1928 1928
1929 if (mlen != 0) 1929 if (mlen != 0)
1930 { 1930 {
1931 /* sender did not strip ICMP payload? */ 1931 /* sender did not strip ICMP payload? */
@@ -1937,12 +1937,12 @@ receive_icmp_back (void *cls,
1937 make_up_icmpv6_payload (ts, ipp, udp); 1937 make_up_icmpv6_payload (ts, ipp, udp);
1938 } 1938 }
1939 break; 1939 break;
1940 case GNUNET_TUN_ICMPTYPE_TIME_EXCEEDED: 1940 case GNUNET_TUN_ICMPTYPE_TIME_EXCEEDED:
1941 icmp->type = GNUNET_TUN_ICMPTYPE6_TIME_EXCEEDED; 1941 icmp->type = GNUNET_TUN_ICMPTYPE6_TIME_EXCEEDED;
1942 { 1942 {
1943 struct GNUNET_TUN_IPv6Header *ipp = (struct GNUNET_TUN_IPv6Header *) &icmp[1]; 1943 struct GNUNET_TUN_IPv6Header *ipp = (struct GNUNET_TUN_IPv6Header *) &icmp[1];
1944 struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; 1944 struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1];
1945 1945
1946 if (mlen != 0) 1946 if (mlen != 0)
1947 { 1947 {
1948 /* sender did not strip ICMP payload? */ 1948 /* sender did not strip ICMP payload? */
@@ -1957,7 +1957,7 @@ receive_icmp_back (void *cls,
1957 case GNUNET_TUN_ICMPTYPE_SOURCE_QUENCH: 1957 case GNUNET_TUN_ICMPTYPE_SOURCE_QUENCH:
1958 GNUNET_STATISTICS_update (stats, 1958 GNUNET_STATISTICS_update (stats,
1959 gettext_noop ("# ICMPv4 packets dropped (impossible PT to v6)"), 1959 gettext_noop ("# ICMPv4 packets dropped (impossible PT to v6)"),
1960 1, GNUNET_NO); 1960 1, GNUNET_NO);
1961 return GNUNET_OK; 1961 return GNUNET_OK;
1962 default: 1962 default:
1963 GNUNET_break_op (0); 1963 GNUNET_break_op (0);
@@ -1978,7 +1978,7 @@ receive_icmp_back (void *cls,
1978 { 1978 {
1979 struct GNUNET_TUN_IPv6Header *ipp = (struct GNUNET_TUN_IPv6Header *) &icmp[1]; 1979 struct GNUNET_TUN_IPv6Header *ipp = (struct GNUNET_TUN_IPv6Header *) &icmp[1];
1980 struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1]; 1980 struct GNUNET_TUN_UdpHeader *udp = (struct GNUNET_TUN_UdpHeader *) &ipp[1];
1981 1981
1982 if (mlen != 0) 1982 if (mlen != 0)
1983 { 1983 {
1984 /* sender did not strip ICMP payload? */ 1984 /* sender did not strip ICMP payload? */
@@ -2358,7 +2358,7 @@ allocate_v4_address (struct in_addr *v4)
2358 } 2358 }
2359 /* Pick random IPv4 address within the subnet, except 'addr' or 'mask' itself */ 2359 /* Pick random IPv4 address within the subnet, except 'addr' or 'mask' itself */
2360 rnd.s_addr = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 2360 rnd.s_addr = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK,
2361 UINT32_MAX); 2361 UINT32_MAX);
2362 v4->s_addr = (addr.s_addr | rnd.s_addr) & mask.s_addr; 2362 v4->s_addr = (addr.s_addr | rnd.s_addr) & mask.s_addr;
2363 get_destination_key_from_ip (AF_INET, 2363 get_destination_key_from_ip (AF_INET,
2364 v4, 2364 v4,
@@ -2550,7 +2550,7 @@ allocate_response_ip (int *result_af,
2550 return GNUNET_SYSERR; 2550 return GNUNET_SYSERR;
2551 } 2551 }
2552 return GNUNET_OK; 2552 return GNUNET_OK;
2553} 2553}
2554 2554
2555 2555
2556/** 2556/**
@@ -2975,6 +2975,7 @@ run (void *cls,
2975 return; 2975 return;
2976 } 2976 }
2977 vpn_argv[1] = ifname; 2977 vpn_argv[1] = ifname;
2978 ipv6addr = NULL;
2978 if (GNUNET_OK == GNUNET_NETWORK_test_pf (PF_INET6)) 2979 if (GNUNET_OK == GNUNET_NETWORK_test_pf (PF_INET6))
2979 { 2980 {
2980 if ( (GNUNET_SYSERR == 2981 if ( (GNUNET_SYSERR ==
@@ -2985,15 +2986,18 @@ run (void *cls,
2985 GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV6ADDR", 2986 GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV6ADDR",
2986 _("Must specify valid IPv6 address")); 2987 _("Must specify valid IPv6 address"));
2987 GNUNET_SCHEDULER_shutdown (); 2988 GNUNET_SCHEDULER_shutdown ();
2989 GNUNET_free_non_null (ipv6addr);
2988 return; 2990 return;
2989 } 2991 }
2990 vpn_argv[2] = ipv6addr; 2992 vpn_argv[2] = ipv6addr;
2993 ipv6prefix_s = NULL;
2991 if (GNUNET_SYSERR == 2994 if (GNUNET_SYSERR ==
2992 GNUNET_CONFIGURATION_get_value_string (cfg, "VPN", "IPV6PREFIX", 2995 GNUNET_CONFIGURATION_get_value_string (cfg, "VPN", "IPV6PREFIX",
2993 &ipv6prefix_s)) 2996 &ipv6prefix_s))
2994 { 2997 {
2995 GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV6PREFIX"); 2998 GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV6PREFIX");
2996 GNUNET_SCHEDULER_shutdown (); 2999 GNUNET_SCHEDULER_shutdown ();
3000 GNUNET_free_non_null (ipv6prefix_s);
2997 return; 3001 return;
2998 } 3002 }
2999 vpn_argv[3] = ipv6prefix_s; 3003 vpn_argv[3] = ipv6prefix_s;
@@ -3018,6 +3022,7 @@ run (void *cls,
3018 } 3022 }
3019 if (GNUNET_OK == GNUNET_NETWORK_test_pf (PF_INET)) 3023 if (GNUNET_OK == GNUNET_NETWORK_test_pf (PF_INET))
3020 { 3024 {
3025 ipv4addr = NULL;
3021 if ( (GNUNET_SYSERR == 3026 if ( (GNUNET_SYSERR ==
3022 GNUNET_CONFIGURATION_get_value_string (cfg, "vpn", "IPV4ADDR", 3027 GNUNET_CONFIGURATION_get_value_string (cfg, "vpn", "IPV4ADDR",
3023 &ipv4addr) || 3028 &ipv4addr) ||
@@ -3026,9 +3031,11 @@ run (void *cls,
3026 GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV4ADDR", 3031 GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV4ADDR",
3027 _("Must specify valid IPv4 address")); 3032 _("Must specify valid IPv4 address"));
3028 GNUNET_SCHEDULER_shutdown (); 3033 GNUNET_SCHEDULER_shutdown ();
3034 GNUNET_free_non_null (ipv4addr);
3029 return; 3035 return;
3030 } 3036 }
3031 vpn_argv[4] = ipv4addr; 3037 vpn_argv[4] = ipv4addr;
3038 ipv4mask = NULL;
3032 if ( (GNUNET_SYSERR == 3039 if ( (GNUNET_SYSERR ==
3033 GNUNET_CONFIGURATION_get_value_string (cfg, "vpn", "IPV4MASK", 3040 GNUNET_CONFIGURATION_get_value_string (cfg, "vpn", "IPV4MASK",
3034 &ipv4mask) || 3041 &ipv4mask) ||
@@ -3037,6 +3044,7 @@ run (void *cls,
3037 GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV4MASK", 3044 GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, "VPN", "IPV4MASK",
3038 _("Must specify valid IPv4 mask")); 3045 _("Must specify valid IPv4 mask"));
3039 GNUNET_SCHEDULER_shutdown (); 3046 GNUNET_SCHEDULER_shutdown ();
3047 GNUNET_free_non_null (ipv4mask);
3040 return; 3048 return;
3041 } 3049 }
3042 vpn_argv[5] = ipv4mask; 3050 vpn_argv[5] = ipv4mask;