gnunet-svn
[Top][All Lists]
Advanced

[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,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]