aboutsummaryrefslogtreecommitdiff
path: root/src/transport
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2011-05-16 13:35:17 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2011-05-16 13:35:17 +0000
commit60858280816615ca9c70332af76bbb797f2984be (patch)
tree546e85fc35492844f83640c9d3f13ba30b682321 /src/transport
parentf1d701c55b497773d7abda7b75c97012c0abab28 (diff)
downloadgnunet-60858280816615ca9c70332af76bbb797f2984be.tar.gz
gnunet-60858280816615ca9c70332af76bbb797f2984be.zip
more fixes in address handling
Diffstat (limited to 'src/transport')
-rw-r--r--src/transport/plugin_transport_tcp.c37
1 files changed, 27 insertions, 10 deletions
diff --git a/src/transport/plugin_transport_tcp.c b/src/transport/plugin_transport_tcp.c
index daaf02dde..cca50c1ca 100644
--- a/src/transport/plugin_transport_tcp.c
+++ b/src/transport/plugin_transport_tcp.c
@@ -2730,6 +2730,7 @@ libgnunet_plugin_transport_tcp_init (void *cls)
2730 int enable_upnp; 2730 int enable_upnp;
2731 char *internal_address; 2731 char *internal_address;
2732 char *external_address; 2732 char *external_address;
2733 char *bind_address;
2733 struct sockaddr_in in_addr; 2734 struct sockaddr_in in_addr;
2734 struct GNUNET_TIME_Relative idle_timeout; 2735 struct GNUNET_TIME_Relative idle_timeout;
2735 2736
@@ -2805,6 +2806,18 @@ libgnunet_plugin_transport_tcp_init (void *cls)
2805 enable_upnp = GNUNET_NO; 2806 enable_upnp = GNUNET_NO;
2806 } 2807 }
2807 2808
2809 bind_address = NULL;
2810 if (GNUNET_YES == GNUNET_CONFIGURATION_get_value_string (env->cfg,
2811 "transport-tcp",
2812 "BINDTO",
2813 &bind_address))
2814 {
2815 GNUNET_log_from (GNUNET_ERROR_TYPE_INFO,
2816 "tcp",
2817 _("Binding TCP plugin to specific address: `%s'\n"),
2818 bind_address);
2819 }
2820
2808 internal_address = NULL; 2821 internal_address = NULL;
2809 if (GNUNET_OK == 2822 if (GNUNET_OK ==
2810 GNUNET_CONFIGURATION_have_value (env->cfg, 2823 GNUNET_CONFIGURATION_have_value (env->cfg,
@@ -2830,6 +2843,19 @@ libgnunet_plugin_transport_tcp_init (void *cls)
2830 return NULL; 2843 return NULL;
2831 } 2844 }
2832 2845
2846 if ((bind_address != NULL) && (internal_address != NULL))
2847 {
2848 if (0 != strcmp(internal_address, bind_address ))
2849 {
2850 GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
2851 "tcp","Specific bind address `%s' and internal address `%s' must not differ, forcing internal address to bind address!\n", bind_address, internal_address);
2852 GNUNET_free (internal_address);
2853 internal_address = bind_address;
2854 GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
2855 "tcp","New internal address `%s'\n", internal_address);
2856 }
2857 }
2858
2833 aport = 0; 2859 aport = 0;
2834 if ( (GNUNET_OK != 2860 if ( (GNUNET_OK !=
2835 GNUNET_CONFIGURATION_get_value_number (env->cfg, 2861 GNUNET_CONFIGURATION_get_value_number (env->cfg,
@@ -2875,6 +2901,7 @@ libgnunet_plugin_transport_tcp_init (void *cls)
2875 plugin = GNUNET_malloc (sizeof (struct Plugin)); 2901 plugin = GNUNET_malloc (sizeof (struct Plugin));
2876 plugin->open_port = bport; 2902 plugin->open_port = bport;
2877 plugin->adv_port = aport; 2903 plugin->adv_port = aport;
2904 plugin->bind_address = bind_address;
2878 plugin->external_address = external_address; 2905 plugin->external_address = external_address;
2879 plugin->internal_address = internal_address; 2906 plugin->internal_address = internal_address;
2880 plugin->behind_nat = behind_nat; 2907 plugin->behind_nat = behind_nat;
@@ -2927,16 +2954,6 @@ libgnunet_plugin_transport_tcp_init (void *cls)
2927 GNUNET_SERVER_disconnect_notify (plugin->server, 2954 GNUNET_SERVER_disconnect_notify (plugin->server,
2928 &disconnect_notify, 2955 &disconnect_notify,
2929 plugin); 2956 plugin);
2930 if (GNUNET_YES == GNUNET_CONFIGURATION_get_value_string (env->cfg,
2931 "transport-tcp",
2932 "BINDTO",
2933 &plugin->bind_address))
2934 {
2935 GNUNET_log_from (GNUNET_ERROR_TYPE_INFO,
2936 "tcp",
2937 _("Binding TCP plugin to specific address: `%s'\n"),
2938 plugin->bind_address);
2939 }
2940 GNUNET_OS_network_interfaces_list (&process_interfaces, plugin); 2957 GNUNET_OS_network_interfaces_list (&process_interfaces, plugin);
2941 2958
2942 if ( (plugin->behind_nat == GNUNET_YES) && 2959 if ( (plugin->behind_nat == GNUNET_YES) &&