diff options
author | Martin Schanzenbach <schanzen@gnunet.org> | 2023-06-02 18:08:52 +0200 |
---|---|---|
committer | Martin Schanzenbach <schanzen@gnunet.org> | 2023-06-02 18:08:52 +0200 |
commit | 3f175b372d2fd8e5cedb2543d06a126ee9650dca (patch) | |
tree | 11240da9ba764ec6d93ccc8846fc2a0e1827c127 /src/transport/gnunet-communicator-udp.c | |
parent | aac3e643d17fa7a0cc336faf4286bbbeba2f3eac (diff) | |
download | gnunet-3f175b372d2fd8e5cedb2543d06a126ee9650dca.tar.gz gnunet-3f175b372d2fd8e5cedb2543d06a126ee9650dca.zip |
TNG: Minor code cleanup UDP communicator.
Diffstat (limited to 'src/transport/gnunet-communicator-udp.c')
-rw-r--r-- | src/transport/gnunet-communicator-udp.c | 107 |
1 files changed, 11 insertions, 96 deletions
diff --git a/src/transport/gnunet-communicator-udp.c b/src/transport/gnunet-communicator-udp.c index 67207c4b3..4657a7220 100644 --- a/src/transport/gnunet-communicator-udp.c +++ b/src/transport/gnunet-communicator-udp.c | |||
@@ -67,7 +67,7 @@ | |||
67 | * How often do we scan for changes to our network interfaces? | 67 | * How often do we scan for changes to our network interfaces? |
68 | */ | 68 | */ |
69 | #define INTERFACE_SCAN_FREQUENCY \ | 69 | #define INTERFACE_SCAN_FREQUENCY \ |
70 | GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 5) | 70 | GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 5) |
71 | 71 | ||
72 | /** | 72 | /** |
73 | * How long do we believe our addresses to remain up (before | 73 | * How long do we believe our addresses to remain up (before |
@@ -76,7 +76,7 @@ | |||
76 | #define ADDRESS_VALIDITY_PERIOD GNUNET_TIME_UNIT_HOURS | 76 | #define ADDRESS_VALIDITY_PERIOD GNUNET_TIME_UNIT_HOURS |
77 | 77 | ||
78 | #define WORKING_QUEUE_INTERVALL \ | 78 | #define WORKING_QUEUE_INTERVALL \ |
79 | GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MICROSECONDS,1) | 79 | GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MICROSECONDS,1) |
80 | 80 | ||
81 | /** | 81 | /** |
82 | * AES key size. | 82 | * AES key size. |
@@ -937,22 +937,12 @@ receiver_destroy (struct ReceiverAddress *receiver) | |||
937 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 937 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
938 | "Disconnecting receiver for peer `%s'\n", | 938 | "Disconnecting receiver for peer `%s'\n", |
939 | GNUNET_i2s (&receiver->target)); | 939 | GNUNET_i2s (&receiver->target)); |
940 | /*if (NULL != (mq = receiver->kx_mq)) | ||
941 | { | ||
942 | receiver->kx_mq = NULL; | ||
943 | GNUNET_MQ_destroy (mq); | ||
944 | }*/ | ||
945 | if (NULL != receiver->kx_qh) | 940 | if (NULL != receiver->kx_qh) |
946 | { | 941 | { |
947 | GNUNET_TRANSPORT_communicator_mq_del (receiver->kx_qh); | 942 | GNUNET_TRANSPORT_communicator_mq_del (receiver->kx_qh); |
948 | receiver->kx_qh = NULL; | 943 | receiver->kx_qh = NULL; |
949 | receiver->kx_mq = NULL; | 944 | receiver->kx_mq = NULL; |
950 | } | 945 | } |
951 | /*if (NULL != (mq = receiver->d_mq)) | ||
952 | { | ||
953 | receiver->d_mq = NULL; | ||
954 | GNUNET_MQ_destroy (mq); | ||
955 | }*/ | ||
956 | if (NULL != receiver->d_qh) | 946 | if (NULL != receiver->d_qh) |
957 | { | 947 | { |
958 | GNUNET_TRANSPORT_communicator_mq_del (receiver->d_qh); | 948 | GNUNET_TRANSPORT_communicator_mq_del (receiver->d_qh); |
@@ -1207,15 +1197,12 @@ check_timeouts (void *cls) | |||
1207 | rt = GNUNET_TIME_UNIT_FOREVER_REL; | 1197 | rt = GNUNET_TIME_UNIT_FOREVER_REL; |
1208 | while (NULL != (receiver = GNUNET_CONTAINER_heap_peek (receivers_heap))) | 1198 | while (NULL != (receiver = GNUNET_CONTAINER_heap_peek (receivers_heap))) |
1209 | { | 1199 | { |
1210 | /* if (GNUNET_YES != receiver->receiver_destroy_called) */ | ||
1211 | /* { */ | ||
1212 | rt = GNUNET_TIME_absolute_get_remaining (receiver->timeout); | 1200 | rt = GNUNET_TIME_absolute_get_remaining (receiver->timeout); |
1213 | if (0 != rt.rel_value_us) | 1201 | if (0 != rt.rel_value_us) |
1214 | break; | 1202 | break; |
1215 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1203 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1216 | "Receiver timed out\n"); | 1204 | "Receiver timed out\n"); |
1217 | receiver_destroy (receiver); | 1205 | receiver_destroy (receiver); |
1218 | // } | ||
1219 | } | 1206 | } |
1220 | st = GNUNET_TIME_UNIT_FOREVER_REL; | 1207 | st = GNUNET_TIME_UNIT_FOREVER_REL; |
1221 | while (NULL != (sender = GNUNET_CONTAINER_heap_peek (senders_heap))) | 1208 | while (NULL != (sender = GNUNET_CONTAINER_heap_peek (senders_heap))) |
@@ -1575,7 +1562,6 @@ add_acks_rekey (struct ReceiverAddress *receiver) | |||
1575 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1562 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1576 | "%u receiver->acks_available 4\n", | 1563 | "%u receiver->acks_available 4\n", |
1577 | receiver->acks_available); | 1564 | receiver->acks_available); |
1578 | /* add_acks (receiver->ss_rekey, acks_to_add - 3); */ | ||
1579 | if (0 != acks_to_add) | 1565 | if (0 != acks_to_add) |
1580 | { | 1566 | { |
1581 | add_acks (receiver->ss_rekey, acks_to_add); | 1567 | add_acks (receiver->ss_rekey, acks_to_add); |
@@ -1607,7 +1593,6 @@ handle_ack (void *cls, const struct GNUNET_PeerIdentity *pid, void *value) | |||
1607 | struct ReceiverAddress *receiver = value; | 1593 | struct ReceiverAddress *receiver = value; |
1608 | uint32_t acks_to_add; | 1594 | uint32_t acks_to_add; |
1609 | uint32_t allowed; | 1595 | uint32_t allowed; |
1610 | // int needed_for_rekeying; | ||
1611 | 1596 | ||
1612 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1597 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1613 | "in handle ack with cmac %s\n", | 1598 | "in handle ack with cmac %s\n", |
@@ -1662,30 +1647,10 @@ handle_ack (void *cls, const struct GNUNET_PeerIdentity *pid, void *value) | |||
1662 | receiver->acks_available, | 1647 | receiver->acks_available, |
1663 | ack->acks_available, | 1648 | ack->acks_available, |
1664 | GNUNET_h2s (&ss->master)); | 1649 | GNUNET_h2s (&ss->master)); |
1665 | // Uncomment this for alternativ 1 of backchannel functionality | ||
1666 | acks_to_add = (allowed - ss->sequence_allowed); | 1650 | acks_to_add = (allowed - ss->sequence_allowed); |
1667 | if ((GNUNET_NO == receiver->rekeying) && | 1651 | if ((GNUNET_NO == receiver->rekeying) && |
1668 | (receiver->number_rekeying_kce < 3) ) | 1652 | (receiver->number_rekeying_kce < 3) ) |
1669 | acks_to_add = reset_rekey_kces (receiver, acks_to_add); | 1653 | acks_to_add = reset_rekey_kces (receiver, acks_to_add); |
1670 | /* if ((GNUNET_NO == receiver->rekeying) && */ | ||
1671 | /* (receiver->number_rekeying_kce < */ | ||
1672 | /* 3) ) */ | ||
1673 | /* { */ | ||
1674 | /* needed_for_rekeying = (3 - receiver->number_rekeying_kce); */ | ||
1675 | /* if (acks_to_add <= needed_for_rekeying) */ | ||
1676 | /* { */ | ||
1677 | /* receiver->number_rekeying_kce += acks_to_add; */ | ||
1678 | /* acks_to_add = 0; */ | ||
1679 | /* } */ | ||
1680 | /* else */ | ||
1681 | /* { */ | ||
1682 | /* acks_to_add -= (3 - receiver->number_rekeying_kce); */ | ||
1683 | /* receiver->number_rekeying_kce = 3; */ | ||
1684 | /* } */ | ||
1685 | /* } */ | ||
1686 | /* GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, */ | ||
1687 | /* "%u kce for rekeying\n", */ | ||
1688 | /* receiver->number_rekeying_kce); */ | ||
1689 | 1654 | ||
1690 | if ((0 != acks_to_add) && (GNUNET_NO == receiver->rekeying)) | 1655 | if ((0 != acks_to_add) && (GNUNET_NO == receiver->rekeying)) |
1691 | { | 1656 | { |
@@ -1794,7 +1759,6 @@ kce_generate_cb (void *cls) | |||
1794 | } | 1759 | } |
1795 | 1760 | ||
1796 | 1761 | ||
1797 | |||
1798 | } | 1762 | } |
1799 | 1763 | ||
1800 | 1764 | ||
@@ -1869,14 +1833,6 @@ consider_ss_ack (struct SharedSecret *ss, int initial) | |||
1869 | if (GNUNET_NO == initial) | 1833 | if (GNUNET_NO == initial) |
1870 | kce_generate (ss, ++ss->sequence_allowed); | 1834 | kce_generate (ss, ++ss->sequence_allowed); |
1871 | 1835 | ||
1872 | /*if (0 == ss->sender->acks_available) | ||
1873 | { | ||
1874 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1875 | "Generating keys\n"); | ||
1876 | while (ss->active_kce_count < KCN_TARGET) | ||
1877 | kce_generate (ss, ++ss->sequence_allowed); | ||
1878 | }*/ | ||
1879 | |||
1880 | if (NULL != kce_task) | 1836 | if (NULL != kce_task) |
1881 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1837 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1882 | "kce_task is not NULL\n"); | 1838 | "kce_task is not NULL\n"); |
@@ -1887,7 +1843,7 @@ consider_ss_ack (struct SharedSecret *ss, int initial) | |||
1887 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1843 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1888 | "initial: GNUNET_YES\n"); | 1844 | "initial: GNUNET_YES\n"); |
1889 | 1845 | ||
1890 | if ( kce_task_finished || (GNUNET_NO == initial)) | 1846 | if (kce_task_finished || (GNUNET_NO == initial)) |
1891 | { | 1847 | { |
1892 | struct UDPAck ack; | 1848 | struct UDPAck ack; |
1893 | struct SharedSecret *ss_tell; | 1849 | struct SharedSecret *ss_tell; |
@@ -1923,9 +1879,7 @@ consider_ss_ack (struct SharedSecret *ss, int initial) | |||
1923 | (ss->sender->num_secrets > MAX_SECRETS) )) | 1879 | (ss->sender->num_secrets > MAX_SECRETS) )) |
1924 | { | 1880 | { |
1925 | 1881 | ||
1926 | // kce_generate (ss, ++ss->sequence_allowed); | 1882 | // TODO This task must be per sender! FIXME: This is a nice todo, but I do not know what must be done here to fix. |
1927 | // kce_generate (ss, ++ss->sequence_allowed); | ||
1928 | // TODO This task must be per sender! | ||
1929 | kce_task = GNUNET_SCHEDULER_add_delayed (WORKING_QUEUE_INTERVALL, | 1883 | kce_task = GNUNET_SCHEDULER_add_delayed (WORKING_QUEUE_INTERVALL, |
1930 | kce_generate_cb, | 1884 | kce_generate_cb, |
1931 | ss); | 1885 | ss); |
@@ -1989,12 +1943,9 @@ decrypt_box (const struct UDPBox *box, | |||
1989 | { | 1943 | { |
1990 | ss->sender->rekeying = GNUNET_NO; | 1944 | ss->sender->rekeying = GNUNET_NO; |
1991 | ss->sender->ss_rekey = NULL; | 1945 | ss->sender->ss_rekey = NULL; |
1992 | // destroy_all_secrets (ss, GNUNET_NO); | ||
1993 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1946 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1994 | "Receiver stopped rekeying.\n"); | 1947 | "Receiver stopped rekeying.\n"); |
1995 | } | 1948 | } |
1996 | /*else if (GNUNET_NO == box->rekeying) | ||
1997 | consider_ss_ack (ss, GNUNET_NO);*/ | ||
1998 | else | 1949 | else |
1999 | { | 1950 | { |
2000 | ss->sender->rekeying = GNUNET_YES; | 1951 | ss->sender->rekeying = GNUNET_YES; |
@@ -2052,23 +2003,11 @@ decrypt_rekey (const struct UDPRekey *rekey, | |||
2052 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 2003 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
2053 | "decrypted UDPRekey with kid %s\n", | 2004 | "decrypted UDPRekey with kid %s\n", |
2054 | GNUNET_sh2s (&rekey->kid)); | 2005 | GNUNET_sh2s (&rekey->kid)); |
2055 | /*cmac = (struct GNUNET_HashCode *) out_buf; | ||
2056 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
2057 | "Received secret with cmac %s \n", | ||
2058 | GNUNET_h2s (&cmac));*/ | ||
2059 | // ss_rekey = (struct SharedSecret *) out_buf; | ||
2060 | master = (struct GNUNET_HashCode *) out_buf; | 2006 | master = (struct GNUNET_HashCode *) out_buf; |
2061 | ss_rekey = GNUNET_new (struct SharedSecret); | 2007 | ss_rekey = GNUNET_new (struct SharedSecret); |
2062 | ss_rekey->master = *master; | 2008 | ss_rekey->master = *master; |
2063 | calculate_cmac (ss_rekey); | 2009 | calculate_cmac (ss_rekey); |
2064 | ss_rekey->sender = sender; | 2010 | ss_rekey->sender = sender; |
2065 | // ss_rekey->sequence_used = 0; | ||
2066 | // ss_rekey->sequence_allowed = 0; | ||
2067 | /* ss_rekey->active_kce_count = 0; */ | ||
2068 | /* ss_rekey->prev = NULL; */ | ||
2069 | /* ss_rekey->next = NULL; */ | ||
2070 | /* GNUNET_assert (ss_rekey->prev == NULL && sender->ss_head != ss_rekey); */ | ||
2071 | /* GNUNET_assert (ss_rekey->next == NULL && sender->ss_tail != ss_rekey); */ | ||
2072 | GNUNET_CONTAINER_DLL_insert (sender->ss_head, sender->ss_tail, ss_rekey); | 2011 | GNUNET_CONTAINER_DLL_insert (sender->ss_head, sender->ss_tail, ss_rekey); |
2073 | sender->ss_rekey = ss_rekey; | 2012 | sender->ss_rekey = ss_rekey; |
2074 | sender->num_secrets++; | 2013 | sender->num_secrets++; |
@@ -2496,8 +2435,6 @@ sock_read (void *cls) | |||
2496 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 2435 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
2497 | "Got KX: Receiver doing rekeying.\n"); | 2436 | "Got KX: Receiver doing rekeying.\n"); |
2498 | } | 2437 | } |
2499 | /*if (sender->num_secrets > MAX_SECRETS) | ||
2500 | secret_destroy (sender->ss_tail);*/ | ||
2501 | } | 2438 | } |
2502 | } | 2439 | } |
2503 | 2440 | ||
@@ -2885,16 +2822,6 @@ send_UDPRekey (struct ReceiverAddress *receiver, struct SharedSecret *ss) | |||
2885 | &(receiver->ss_rekey->master), | 2822 | &(receiver->ss_rekey->master), |
2886 | sizeof(receiver->ss_rekey->master))); | 2823 | sizeof(receiver->ss_rekey->master))); |
2887 | dpos += sizeof(receiver->ss_rekey->master); | 2824 | dpos += sizeof(receiver->ss_rekey->master); |
2888 | /* GNUNET_assert ( */ | ||
2889 | /* 0 == gcry_cipher_encrypt (rekey_out_cipher, &rekey_dgram[dpos], */ | ||
2890 | /* /\*sizeof(receiver->ss_rekey->cmac), */ | ||
2891 | /* &(receiver->ss_rekey->cmac), */ | ||
2892 | /* sizeof(receiver->ss_rekey->cmac))); */ | ||
2893 | /* dpos += sizeof(receiver->ss_rekey->cmac);*\/ */ | ||
2894 | /* sizeof(receiver->ss_rekey), */ | ||
2895 | /* receiver->ss_rekey, */ | ||
2896 | /* sizeof(receiver->ss_rekey))); */ | ||
2897 | /* dpos += sizeof(receiver->ss_rekey); */ | ||
2898 | do_pad (rekey_out_cipher, &rekey_dgram[dpos], sizeof(rekey_dgram) | 2825 | do_pad (rekey_out_cipher, &rekey_dgram[dpos], sizeof(rekey_dgram) |
2899 | - dpos); | 2826 | - dpos); |
2900 | GNUNET_assert (0 == gcry_cipher_gettag (rekey_out_cipher, | 2827 | GNUNET_assert (0 == gcry_cipher_gettag (rekey_out_cipher, |
@@ -2975,15 +2902,9 @@ mq_send_d (struct GNUNET_MQ_Handle *mq, | |||
2975 | GNUNET_h2s (&ss->master), | 2902 | GNUNET_h2s (&ss->master), |
2976 | ss->sequence_used, | 2903 | ss->sequence_used, |
2977 | ss->sequence_allowed); | 2904 | ss->sequence_allowed); |
2978 | // Uncomment this for alternativ 1 of backchannel functionality | ||
2979 | if (ss->sequence_used >= ss->sequence_allowed) | 2905 | if (ss->sequence_used >= ss->sequence_allowed) |
2980 | // Until here for alternativ 1 | ||
2981 | // Uncomment this for alternativ 2 of backchannel functionality | ||
2982 | // if (0 == ss->sequence_allowed) | ||
2983 | // Until here for alternativ 2 | ||
2984 | { | ||
2985 | continue; | 2906 | continue; |
2986 | } | 2907 | |
2987 | char dgram[sizeof(struct UDPBox) + receiver->d_mtu]; | 2908 | char dgram[sizeof(struct UDPBox) + receiver->d_mtu]; |
2988 | struct UDPBox *box; | 2909 | struct UDPBox *box; |
2989 | gcry_cipher_hd_t out_cipher; | 2910 | gcry_cipher_hd_t out_cipher; |
@@ -3148,17 +3069,6 @@ setup_receiver_mq (struct ReceiverAddress *receiver) | |||
3148 | { | 3069 | { |
3149 | size_t base_mtu; | 3070 | size_t base_mtu; |
3150 | 3071 | ||
3151 | /*if (NULL != receiver->kx_qh) | ||
3152 | { | ||
3153 | GNUNET_TRANSPORT_communicator_mq_del (receiver->kx_qh); | ||
3154 | receiver->kx_qh = NULL; | ||
3155 | } | ||
3156 | if (NULL != receiver->d_qh) | ||
3157 | { | ||
3158 | GNUNET_TRANSPORT_communicator_mq_del (receiver->d_qh); | ||
3159 | receiver->d_qh = NULL; | ||
3160 | }*/ | ||
3161 | // GNUNET_assert (NULL == receiver->mq); | ||
3162 | switch (receiver->address->sa_family) | 3072 | switch (receiver->address->sa_family) |
3163 | { | 3073 | { |
3164 | case AF_INET: | 3074 | case AF_INET: |
@@ -3694,7 +3604,8 @@ iface_proc (void *cls, | |||
3694 | * group in the normal IPv6 routing table and using the resulting | 3604 | * group in the normal IPv6 routing table and using the resulting |
3695 | * interface; we do this for each interface, so no need to use | 3605 | * interface; we do this for each interface, so no need to use |
3696 | * zero (anymore...). | 3606 | * zero (anymore...). |
3697 | */bi->mcreq.ipv6mr_interface = s6->sin6_scope_id; | 3607 | */ |
3608 | bi->mcreq.ipv6mr_interface = s6->sin6_scope_id; | ||
3698 | 3609 | ||
3699 | /* Join the multicast group */ | 3610 | /* Join the multicast group */ |
3700 | if (GNUNET_OK != GNUNET_NETWORK_socket_setsockopt (udp_sock, | 3611 | if (GNUNET_OK != GNUNET_NETWORK_socket_setsockopt (udp_sock, |
@@ -3735,14 +3646,18 @@ do_broadcast (void *cls) | |||
3735 | NULL); | 3646 | NULL); |
3736 | } | 3647 | } |
3737 | 3648 | ||
3649 | |||
3738 | static void | 3650 | static void |
3739 | try_connection_reversal (void *cls, | 3651 | try_connection_reversal (void *cls, |
3740 | const struct sockaddr *addr, | 3652 | const struct sockaddr *addr, |
3741 | socklen_t addrlen) | 3653 | socklen_t addrlen) |
3742 | { | 3654 | { |
3743 | /* FIXME: support reversal: #5529 */ | 3655 | /* FIXME: support reversal: #5529 */ |
3656 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
3657 | "No connection reversal implemented!"); | ||
3744 | } | 3658 | } |
3745 | 3659 | ||
3660 | |||
3746 | /** | 3661 | /** |
3747 | * Setup communicator and launch network interactions. | 3662 | * Setup communicator and launch network interactions. |
3748 | * | 3663 | * |