[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r15900 - in gnunet/src: include peerinfo-tool transport
From: |
gnunet |
Subject: |
[GNUnet-SVN] r15900 - in gnunet/src: include peerinfo-tool transport |
Date: |
Fri, 8 Jul 2011 18:47:04 +0200 |
Author: nevans
Date: 2011-07-08 18:47:03 +0200 (Fri, 08 Jul 2011)
New Revision: 15900
Modified:
gnunet/src/include/gnunet_dht_service.h
gnunet/src/include/gnunet_protocols.h
gnunet/src/include/gnunet_transport_service.h
gnunet/src/peerinfo-tool/Makefile.am
gnunet/src/transport/Makefile.am
gnunet/src/transport/gnunet-service-transport.c
gnunet/src/transport/transport.h
gnunet/src/transport/transport_api_address_lookup.c
Log:
connected peer lookup
Modified: gnunet/src/include/gnunet_dht_service.h
===================================================================
--- gnunet/src/include/gnunet_dht_service.h 2011-07-08 16:16:02 UTC (rev
15899)
+++ gnunet/src/include/gnunet_dht_service.h 2011-07-08 16:47:03 UTC (rev
15900)
@@ -41,7 +41,7 @@
/**
- * FIXME: document.
+ * Default republication frequency for stored data in the DHT.
*/
#define GNUNET_DHT_DEFAULT_REPUBLISH_FREQUENCY
GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MINUTES, 60)
Modified: gnunet/src/include/gnunet_protocols.h
===================================================================
--- gnunet/src/include/gnunet_protocols.h 2011-07-08 16:16:02 UTC (rev
15899)
+++ gnunet/src/include/gnunet_protocols.h 2011-07-08 16:47:03 UTC (rev
15900)
@@ -102,7 +102,6 @@
*/
#define GNUNET_MESSAGE_TYPE_FRAGMENT 18
-
/**
* Message from the core saying that the transport
* server should start giving it messages. This
@@ -299,6 +298,11 @@
#define GNUNET_MESSAGE_TYPE_TRANSPORT_UDP_NAT_PROBE_KEEPALIVE 58
/**
+ * Request to look up addresses of peers.
+ */
+#define GNUNET_MESSAGE_TYPE_TRANSPORT_PEER_ADDRESS_LOOKUP 59
+
+/**
* Welcome message between TCP transports.
*/
#define GNUNET_MESSAGE_TYPE_TRANSPORT_TCP_WELCOME 60
@@ -912,6 +916,10 @@
+/*******************************************************************************
+ * CHAT message types START
+
******************************************************************************/
+
/**
* Message sent from client to join a chat room.
*/
@@ -977,8 +985,30 @@
*/
#define GNUNET_MESSAGE_TYPE_CHAT_P2P_CONFIRMATION_RECEIPT 311
+/*******************************************************************************
+ * CHAT message types END
+
******************************************************************************/
+/*******************************************************************************
+ * NSE (network size estimation) message types START
+
******************************************************************************/
+
/**
+ * client->service message indicating start
+ */
+#define GNUNET_MESSAGE_TYPE_NSE_START 321
+
+/**
+ * P2P message sent from nearest peer
+ */
+#define GNUNET_MESSAGE_TYPE_NSE_P2P_FLOOD 322
+
+/**
+ * service->client message indicating
+ */
+#define GNUNET_MESSAGE_TYPE_NSE_ESTIMATE 323
+
+/**
* Type used to match 'all' message types.
*/
#define GNUNET_MESSAGE_TYPE_ALL 65535
Modified: gnunet/src/include/gnunet_transport_service.h
===================================================================
--- gnunet/src/include/gnunet_transport_service.h 2011-07-08 16:16:02 UTC
(rev 15899)
+++ gnunet/src/include/gnunet_transport_service.h 2011-07-08 16:47:03 UTC
(rev 15900)
@@ -645,8 +645,24 @@
GNUNET_TRANSPORT_AddressLookUpCallback aluc,
void *aluc_cls);
+/**
+ * Return all the known addresses for a peer.
+ *
+ * @param cfg configuration to use
+ * @param peer peer identity to look up the addresses of
+ * @param timeout how long is the lookup allowed to take at most
+ * @param peer_address_callback function to call with the results
+ * @param peer_address_callback_cls closure for peer_address_callback
+ */
+void
+GNUNET_TRANSPORT_peer_address_lookup (const struct GNUNET_CONFIGURATION_Handle
*cfg,
+ const struct GNUNET_PeerIdentity *peer,
+ struct GNUNET_TIME_Relative timeout,
+ GNUNET_TRANSPORT_AddressLookUpCallback
peer_address_callback,
+ void *peer_address_callback_cls);
+
/**
* Handle for blacklisting peers.
*/
Modified: gnunet/src/peerinfo-tool/Makefile.am
===================================================================
--- gnunet/src/peerinfo-tool/Makefile.am 2011-07-08 16:16:02 UTC (rev
15899)
+++ gnunet/src/peerinfo-tool/Makefile.am 2011-07-08 16:47:03 UTC (rev
15900)
@@ -10,8 +10,17 @@
endif
bin_PROGRAMS = \
- gnunet-peerinfo
+ gnunet-peerinfo \
+ gnunet-list-connections
+gnunet_list_connections_SOURCES = \
+ gnunet-list-connections.c
+gnunet_list_connections_LDADD = \
+ $(top_builddir)/src/core/libgnunetcore.la \
+ $(top_builddir)/src/transport/libgnunettransport.la \
+ $(top_builddir)/src/hello/libgnunethello.la \
+ $(top_builddir)/src/util/libgnunetutil.la
+
gnunet_peerinfo_SOURCES = \
gnunet-peerinfo.c
gnunet_peerinfo_LDADD = \
Modified: gnunet/src/transport/Makefile.am
===================================================================
--- gnunet/src/transport/Makefile.am 2011-07-08 16:16:02 UTC (rev 15899)
+++ gnunet/src/transport/Makefile.am 2011-07-08 16:47:03 UTC (rev 15900)
@@ -59,7 +59,8 @@
libgnunettransportnew_la_SOURCES = \
transport_api_new.c transport.h \
transport_api_blacklist.c \
- transport_api_address_lookup.c
+ transport_api_address_lookup.c \
+ transport_api_peer_address_lookup.c
libgnunettransportnew_la_LIBADD = \
$(top_builddir)/src/hello/libgnunethello.la \
$(top_builddir)/src/util/libgnunetutil.la \
@@ -71,7 +72,8 @@
libgnunettransport_la_SOURCES = \
transport_api.c transport.h \
transport_api_blacklist.c \
- transport_api_address_lookup.c
+ transport_api_address_lookup.c \
+ transport_api_peer_address_lookup.c
libgnunettransport_la_LIBADD = \
$(top_builddir)/src/hello/libgnunethello.la \
$(top_builddir)/src/util/libgnunetutil.la \
Modified: gnunet/src/transport/gnunet-service-transport.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport.c 2011-07-08 16:16:02 UTC
(rev 15899)
+++ gnunet/src/transport/gnunet-service-transport.c 2011-07-08 16:47:03 UTC
(rev 15900)
@@ -287,7 +287,6 @@
*/
struct TransportPlugin
{
-
/**
* This is a linked list.
*/
@@ -1671,7 +1670,7 @@
force_address = GNUNET_YES;
if (mq->specific_address == NULL)
{
- /* TODO: ADD ATS */
+ /* TODO: ADD ATS */
mq->specific_address = get_preferred_ats_address(n);
GNUNET_STATISTICS_update (stats,
gettext_noop ("# transport selected peer
address freely"),
@@ -5824,7 +5823,93 @@
&transmit_address_to_client, tc);
}
+/**
+ * Handle AddressLookup-message.
+ *
+ * @param cls closure (always NULL)
+ * @param client identification of the client
+ * @param message the actual message
+ */
+static void
+handle_peer_address_lookup (void *cls,
+ struct GNUNET_SERVER_Client *client,
+ const struct GNUNET_MessageHeader *message)
+{
+ const struct PeerAddressLookupMessage *peer_address_lookup;
+ struct NeighbourList *neighbor_iterator;
+ struct ReadyList *ready_iterator;
+ struct ForeignAddressList *foreign_address_iterator;
+ struct TransportPlugin *transport_plugin;
+ uint16_t size;
+ struct GNUNET_SERVER_TransmitContext *tc;
+ struct GNUNET_TIME_Absolute timeout;
+ struct GNUNET_TIME_Relative rtimeout;
+ char *addr_buf;
+
+ size = ntohs (message->size);
+ if (size < sizeof (struct PeerAddressLookupMessage))
+ {
+ GNUNET_break_op (0);
+ GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+ return;
+ }
+ peer_address_lookup = (const struct PeerAddressLookupMessage *) message;
+
+ timeout = GNUNET_TIME_absolute_ntoh (peer_address_lookup->timeout);
+ rtimeout = GNUNET_TIME_absolute_get_remaining (timeout);
+
+ neighbor_iterator = neighbours;
+ while (neighbor_iterator != NULL)
+ {
+ if (0 == memcmp(&neighbor_iterator->id, &peer_address_lookup->peer,
sizeof(struct GNUNET_PeerIdentity)))
+ break;
+ neighbor_iterator = neighbor_iterator->next;
+ }
+
+ /* Found no neighbor matching this peer id (shouldn't be possible, but...) */
+ if (neighbor_iterator == NULL)
+ {
+ GNUNET_break(0);
+ tc = GNUNET_SERVER_transmit_context_create (client);
+ GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0,
+
GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_REPLY);
+ GNUNET_SERVER_transmit_context_run (tc, rtimeout);
+ return;
+ }
+
+ ready_iterator = neighbor_iterator->plugins;
+ GNUNET_SERVER_disable_receive_done_warning (client);
+ tc = GNUNET_SERVER_transmit_context_create (client);
+ while(ready_iterator != NULL)
+ {
+ foreign_address_iterator = ready_iterator->addresses;
+ while (foreign_address_iterator != NULL)
+ {
+ transport_plugin = foreign_address_iterator->ready_list->plugin;
+ if (foreign_address_iterator->addr != NULL)
+ {
+ GNUNET_asprintf (&addr_buf, "%s --- %s",
+ a2s (transport_plugin->short_name,
+ foreign_address_iterator->addr,
+ foreign_address_iterator->addrlen),
+ (foreign_address_iterator->connected
+ == GNUNET_YES) ? "CONNECTED"
+ : "DISCONNECTED");
+ transmit_address_to_client(tc, addr_buf);
+ GNUNET_free(addr_buf);
+ }
+
+ foreign_address_iterator = foreign_address_iterator->next;
+ }
+ ready_iterator = ready_iterator->next;
+ }
+ GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0,
+
GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_REPLY);
+ GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL);
+}
+
+
/**
* Setup the environment for this plugin.
*/
@@ -6265,6 +6350,9 @@
{&handle_address_lookup, NULL,
GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_LOOKUP,
0},
+ {&handle_peer_address_lookup, NULL,
+ GNUNET_MESSAGE_TYPE_TRANSPORT_PEER_ADDRESS_LOOKUP,
+ 0},
{&handle_blacklist_init, NULL,
GNUNET_MESSAGE_TYPE_TRANSPORT_BLACKLIST_INIT, sizeof (struct
GNUNET_MessageHeader)},
{&handle_blacklist_reply, NULL,
Modified: gnunet/src/transport/transport.h
===================================================================
--- gnunet/src/transport/transport.h 2011-07-08 16:16:02 UTC (rev 15899)
+++ gnunet/src/transport/transport.h 2011-07-08 16:47:03 UTC (rev 15900)
@@ -312,8 +312,28 @@
followed by the 0-terminated name of the transport */
};
+/**
+ * Message from the library to the transport service
+ * asking for human readable addresses known for a peer.
+ */
+struct PeerAddressLookupMessage
+{
+ /**
+ * Type will be GNUNET_MESSAGE_TYPE_TRANSPORT_PEER_ADDRESS_LOOKUP
+ */
+ struct GNUNET_MessageHeader header;
+ /**
+ * timeout to give up.
+ */
+ struct GNUNET_TIME_AbsoluteNBO timeout;
+ /**
+ * The identity of the peer to look up.
+ */
+ struct GNUNET_PeerIdentity peer;
+};
+
/**
* Change in blacklisting (either request or notification,
* depending on which direction it is going).
Modified: gnunet/src/transport/transport_api_address_lookup.c
===================================================================
--- gnunet/src/transport/transport_api_address_lookup.c 2011-07-08 16:16:02 UTC
(rev 15899)
+++ gnunet/src/transport/transport_api_address_lookup.c 2011-07-08 16:47:03 UTC
(rev 15900)
@@ -119,7 +119,7 @@
* @param aluc_cls closure for aluc
*/
void
-GNUNET_TRANSPORT_address_lookup (const struct GNUNET_CONFIGURATION_Handle
*cfg,
+GNUNET_TRANSPORT_address_lookup (const struct GNUNET_CONFIGURATION_Handle *cfg,
const char *address,
size_t addressLen,
int numeric,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r15900 - in gnunet/src: include peerinfo-tool transport,
gnunet <=