diff options
author | Christian Grothoff <christian@grothoff.org> | 2022-01-16 18:51:27 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2022-02-19 12:41:01 +0100 |
commit | 980eec8b79b63b445530cd42778a772e8a67b820 (patch) | |
tree | 3552b52fd3883c449e1b67639a21726069b2060f /src/dhtu | |
parent | 7236e5f83a621ab972f9ae6eda5b9562aba3217b (diff) | |
download | gnunet-980eec8b79b63b445530cd42778a772e8a67b820.tar.gz gnunet-980eec8b79b63b445530cd42778a772e8a67b820.zip |
-fix port initialization in addr
Diffstat (limited to 'src/dhtu')
-rw-r--r-- | src/dhtu/dhtu.conf | 2 | ||||
-rw-r--r-- | src/dhtu/plugin_dhtu_ip.c | 47 |
2 files changed, 45 insertions, 4 deletions
diff --git a/src/dhtu/dhtu.conf b/src/dhtu/dhtu.conf index 438cd0955..ea5ade752 100644 --- a/src/dhtu/dhtu.conf +++ b/src/dhtu/dhtu.conf | |||
@@ -3,3 +3,5 @@ ENABLED = YES | |||
3 | 3 | ||
4 | [dhtu-ip] | 4 | [dhtu-ip] |
5 | ENABLED = NO | 5 | ENABLED = NO |
6 | NSE = 4 | ||
7 | UDP_PORT = 6666 | ||
diff --git a/src/dhtu/plugin_dhtu_ip.c b/src/dhtu/plugin_dhtu_ip.c index 998a7903b..123a372b6 100644 --- a/src/dhtu/plugin_dhtu_ip.c +++ b/src/dhtu/plugin_dhtu_ip.c | |||
@@ -225,6 +225,11 @@ struct Plugin | |||
225 | * How often have we scanned for IPs? | 225 | * How often have we scanned for IPs? |
226 | */ | 226 | */ |
227 | unsigned int scan_generation; | 227 | unsigned int scan_generation; |
228 | |||
229 | /** | ||
230 | * Port as a 16-bit value. | ||
231 | */ | ||
232 | uint16_t port16; | ||
228 | }; | 233 | }; |
229 | 234 | ||
230 | 235 | ||
@@ -598,9 +603,37 @@ process_ifcs (void *cls, | |||
598 | return GNUNET_OK; | 603 | return GNUNET_OK; |
599 | } | 604 | } |
600 | } | 605 | } |
601 | (void) create_source (plugin, | 606 | switch (addr->sa_family) |
602 | addr, | 607 | { |
603 | addrlen); | 608 | case AF_INET: |
609 | { | ||
610 | struct sockaddr_in v4; | ||
611 | |||
612 | GNUNET_assert (sizeof(v4) == addrlen); | ||
613 | memcpy (&v4, | ||
614 | addr, | ||
615 | addrlen); | ||
616 | v4.sin_port = htons (plugin->port16); | ||
617 | (void) create_source (plugin, | ||
618 | (const struct sockaddr *) &v4, | ||
619 | sizeof (v4)); | ||
620 | break; | ||
621 | } | ||
622 | case AF_INET6: | ||
623 | { | ||
624 | struct sockaddr_in6 v6; | ||
625 | |||
626 | GNUNET_assert (sizeof(v6) == addrlen); | ||
627 | memcpy (&v6, | ||
628 | addr, | ||
629 | addrlen); | ||
630 | v6.sin6_port = htons (plugin->port16); | ||
631 | (void) create_source (plugin, | ||
632 | (const struct sockaddr *) &v6, | ||
633 | sizeof (v6)); | ||
634 | break; | ||
635 | } | ||
636 | } | ||
604 | return GNUNET_OK; | 637 | return GNUNET_OK; |
605 | } | 638 | } |
606 | 639 | ||
@@ -854,6 +887,7 @@ libgnunet_plugin_dhtu_ip_init (void *cls) | |||
854 | plugin = GNUNET_new (struct Plugin); | 887 | plugin = GNUNET_new (struct Plugin); |
855 | plugin->env = env; | 888 | plugin->env = env; |
856 | plugin->port = port; | 889 | plugin->port = port; |
890 | plugin->port16 = (uint16_t) nport; | ||
857 | if (GNUNET_OK != | 891 | if (GNUNET_OK != |
858 | GNUNET_CRYPTO_get_peer_identity (env->cfg, | 892 | GNUNET_CRYPTO_get_peer_identity (env->cfg, |
859 | &plugin->my_id)) | 893 | &plugin->my_id)) |
@@ -1009,8 +1043,13 @@ libgnunet_plugin_dhtu_ip_done (void *cls) | |||
1009 | 0.0, | 1043 | 0.0, |
1010 | 0.0); | 1044 | 0.0); |
1011 | GNUNET_CONTAINER_multihashmap_destroy (plugin->dsts); | 1045 | GNUNET_CONTAINER_multihashmap_destroy (plugin->dsts); |
1046 | if (NULL != plugin->read_task) | ||
1047 | { | ||
1048 | GNUNET_SCHEDULER_cancel (plugin->read_task); | ||
1049 | plugin->read_task = NULL; | ||
1050 | } | ||
1012 | GNUNET_SCHEDULER_cancel (plugin->scan_task); | 1051 | GNUNET_SCHEDULER_cancel (plugin->scan_task); |
1013 | GNUNET_break (0 == | 1052 | GNUNET_break (GNUNET_OK == |
1014 | GNUNET_NETWORK_socket_close (plugin->sock)); | 1053 | GNUNET_NETWORK_socket_close (plugin->sock)); |
1015 | GNUNET_free (plugin->port); | 1054 | GNUNET_free (plugin->port); |
1016 | GNUNET_free (plugin); | 1055 | GNUNET_free (plugin); |