GNUnet  0.11.x
gnunet-service-messenger_basement.c
Go to the documentation of this file.
1 /*
2  This file is part of GNUnet.
3  Copyright (C) 2020 GNUnet e.V.
4 
5  GNUnet is free software: you can redistribute it and/or modify it
6  under the terms of the GNU Affero General Public License as published
7  by the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  GNUnet is distributed in the hope that it will be useful, but
11  WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Affero General Public License for more details.
14 
15  You should have received a copy of the GNU Affero General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>.
17 
18  SPDX-License-Identifier: AGPL3.0-or-later
19  */
27 
28 size_t
30 {
31  const struct GNUNET_MESSENGER_ListTunnel *element;
32  size_t count = 0;
33 
34  for (element = tunnels->head; element; element = element->next)
35  count++;
36 
37  return count;
38 }
39 
40 int
41 should_connect_tunnel_to (size_t count, size_t src, size_t dst)
42 {
43  if ((src + 1) % count == dst % count)
44  return GNUNET_YES;
45 
46  return GNUNET_NO;
47 }
48 
49 int
50 required_connection_between (size_t count, size_t src, size_t dst)
51 {
52  if (GNUNET_YES == should_connect_tunnel_to (count, src, dst))
53  return GNUNET_YES;
54  if (GNUNET_YES == should_connect_tunnel_to (count, dst, src))
55  return GNUNET_YES;
56 
57  return GNUNET_NO;
58 }
struct GNUNET_MESSENGER_ListTunnel * head
struct GNUNET_MESSENGER_ListTunnel * next
int required_connection_between(size_t count, size_t src, size_t dst)
Returns GNUNET_YES or GNUNET_NO to determine if the peers of index src and index dst should be connec...
GNUnet MESSENGER service.
size_t count_of_tunnels(const struct GNUNET_MESSENGER_ListTunnels *tunnels)
Returns the count of peers in a list (typically from the basement of a room).
int should_connect_tunnel_to(size_t count, size_t src, size_t dst)
Returns GNUNET_YES or GNUNET_NO to determine if the peer at index src should or should not connect ou...