-more cleanup and input validation fixes
[oweals/gnunet.git] / src / include / gnunet_transport_service.h
index 7a3ccbf7b35690d5758ab110339efb77b8750ee7..564b8da248c00810532205749b5bd398324a5b36 100644 (file)
@@ -1,10 +1,10 @@
 /*
      This file is part of GNUnet.
 /*
      This file is part of GNUnet.
-     (C) 2009 Christian Grothoff (and other contributing authors)
+     (C) 2009, 2010, 2011 Christian Grothoff (and other contributing authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
-     by the Free Software Foundation; either version 2, or (at your
+     by the Free Software Foundation; either version 3, or (at your
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
@@ -35,26 +35,23 @@ extern "C"
 #endif
 #endif
 
 #endif
 #endif
 
-#include "gnunet_configuration_lib.h"
-#include "gnunet_crypto_lib.h"
-#include "gnunet_connection_lib.h"
-#include "gnunet_scheduler_lib.h"
-#include "gnunet_time_lib.h"
+#include "gnunet_util_lib.h"
+#include "gnunet_ats_service.h"
 
 /**
  * Version number of the transport API.
  */
 #define GNUNET_TRANSPORT_VERSION 0x00000000
 
 
 /**
  * Version number of the transport API.
  */
 #define GNUNET_TRANSPORT_VERSION 0x00000000
 
+
 /**
  * Function called by the transport for each received message.
  *
  * @param cls closure
  * @param peer (claimed) identity of the other peer
  * @param message the message
 /**
  * Function called by the transport for each received message.
  *
  * @param cls closure
  * @param peer (claimed) identity of the other peer
  * @param message the message
- * @param latency estimated latency for communicating with the
- *             given peer (round-trip)
- * @param distance in overlay hops, as given by transport plugin
+ * @param ats performance data
+ * @param ats_count number of entries in ats
  */
 typedef void (*GNUNET_TRANSPORT_ReceiveCallback) (void *cls,
                                                   const struct
  */
 typedef void (*GNUNET_TRANSPORT_ReceiveCallback) (void *cls,
                                                   const struct
@@ -62,9 +59,9 @@ typedef void (*GNUNET_TRANSPORT_ReceiveCallback) (void *cls,
                                                   const struct
                                                   GNUNET_MessageHeader *
                                                   message,
                                                   const struct
                                                   GNUNET_MessageHeader *
                                                   message,
-                                                 struct GNUNET_TIME_Relative
-                                                  latency,
-                                                 uint32_t distance);
+                                                  const struct
+                                                  GNUNET_ATS_Information * ats,
+                                                  uint32_t ats_count);
 
 
 /**
 
 
 /**
@@ -79,15 +76,15 @@ struct GNUNET_TRANSPORT_Handle;
  *
  * @param cls closure
  * @param peer the peer that connected
  *
  * @param cls closure
  * @param peer the peer that connected
- * @param latency estimated latency for communicating with the
- *             given peer (round-trip)
- * @param distance in overlay hops, as given by transport plugin
+ * @param ats performance data
+ * @param ats_count number of entries in ats (excluding 0-termination)
  */
  */
-typedef void
-  (*GNUNET_TRANSPORT_NotifyConnect) (void *cls,
-                                     const struct GNUNET_PeerIdentity * peer,
-                                     struct GNUNET_TIME_Relative latency,
-                                    uint32_t distance);
+typedef void (*GNUNET_TRANSPORT_NotifyConnect) (void *cls,
+                                                const struct GNUNET_PeerIdentity
+                                                * peer,
+                                                const struct
+                                                GNUNET_ATS_Information * ats,
+                                                uint32_t ats_count);
 
 /**
  * Function called to notify transport users that another
 
 /**
  * Function called to notify transport users that another
@@ -96,47 +93,60 @@ typedef void
  * @param cls closure
  * @param peer the peer that disconnected
  */
  * @param cls closure
  * @param peer the peer that disconnected
  */
-typedef void
-  (*GNUNET_TRANSPORT_NotifyDisconnect) (void *cls,
-                                        const struct GNUNET_PeerIdentity *
-                                        peer);
+typedef void (*GNUNET_TRANSPORT_NotifyDisconnect) (void *cls,
+                                                   const struct
+                                                   GNUNET_PeerIdentity * peer);
+
+
+/**
+ * Function to call with a textual representation of an address.
+ * This function will be called several times with different possible
+ * textual representations, and a last time with NULL to signal the end
+ * of the iteration.
+ *
+ * @param cls closure
+ * @param address NULL on error or end of iteration,
+ *        otherwise 0-terminated printable UTF-8 string
+ */
+typedef void (*GNUNET_TRANSPORT_AddressToStringCallback) (void *cls,
+                                                          const char *address);
 
 
 /**
 
 
 /**
- * Function to call with a human-readable format of an address
+ * Function to call with a binary format of an address
  *
  * @param cls closure
  *
  * @param cls closure
- * @param address NULL on error, otherwise 0-terminated printable UTF-8 string
+ * @param peer peer this update is about (never NULL)
+ * @param address address, NULL for disconnect notification in monitor mode
  */
  */
-typedef void
-(*GNUNET_TRANSPORT_AddressLookUpCallback) (void *cls,
-                                          const char *address);
+typedef void (*GNUNET_TRANSPORT_PeerIterateCallback) (void *cls,
+                                                      const struct
+                                                      GNUNET_PeerIdentity *
+                                                      peer,
+                                                      const struct
+                                                      GNUNET_HELLO_Address *
+                                                      address);
 
 
 /**
  * Connect to the transport service.  Note that the connection may
  * complete (or fail) asynchronously.
  *
 
 
 /**
  * Connect to the transport service.  Note that the connection may
  * complete (or fail) asynchronously.
  *
- * @param sched scheduler to use
  * @param cfg configuration to use
  * @param cfg configuration to use
+ * @param self our own identity (API should check that it matches
+ *             the identity found by transport), or NULL (no check)
  * @param cls closure for the callbacks
  * @param rec receive function to call
  * @param nc function to call on connect events
  * @param nd function to call on disconnect events
  * @return NULL on error
  */
  * @param cls closure for the callbacks
  * @param rec receive function to call
  * @param nc function to call on connect events
  * @param nd function to call on disconnect events
  * @return NULL on error
  */
-struct GNUNET_TRANSPORT_Handle *GNUNET_TRANSPORT_connect (struct
-                                                          GNUNET_SCHEDULER_Handle
-                                                          *sched,
-                                                          const struct
-                                                          GNUNET_CONFIGURATION_Handle
-                                                          *cfg, void *cls,
-                                                          GNUNET_TRANSPORT_ReceiveCallback
-                                                          rec,
-                                                          GNUNET_TRANSPORT_NotifyConnect
-                                                          nc,
-                                                          GNUNET_TRANSPORT_NotifyDisconnect
-                                                          nd);
+struct GNUNET_TRANSPORT_Handle *
+GNUNET_TRANSPORT_connect (const struct GNUNET_CONFIGURATION_Handle *cfg,
+                          const struct GNUNET_PeerIdentity *self, void *cls,
+                          GNUNET_TRANSPORT_ReceiveCallback rec,
+                          GNUNET_TRANSPORT_NotifyConnect nc,
+                          GNUNET_TRANSPORT_NotifyDisconnect nd);
 
 
 /**
 
 
 /**
@@ -144,30 +154,20 @@ struct GNUNET_TRANSPORT_Handle *GNUNET_TRANSPORT_connect (struct
  *
  * @param handle handle returned from connect
  */
  *
  * @param handle handle returned from connect
  */
-void GNUNET_TRANSPORT_disconnect (struct GNUNET_TRANSPORT_Handle *handle);
+void
+GNUNET_TRANSPORT_disconnect (struct GNUNET_TRANSPORT_Handle *handle);
 
 
 /**
 
 
 /**
- * Set the share of incoming/outgoing bandwidth for the given
- * peer to the specified amount.
+ * Ask the transport service to establish a connection to
+ * the given peer.
  *
  * @param handle connection to transport service
  *
  * @param handle connection to transport service
- * @param target who's bandwidth quota is being changed
- * @param quota_in incoming bandwidth quota in bytes per ms
- * @param quota_out outgoing bandwidth quota in bytes per ms
- * @param timeout how long to wait until signaling failure if
- *        we can not communicate the quota change
- * @param cont continuation to call when done, will be called
- *        either with reason "TIMEOUT" or with reason "PREREQ_DONE"
- * @param cont_cls closure for continuation
+ * @param target who we should try to connect to
  */
 void
  */
 void
-GNUNET_TRANSPORT_set_quota (struct GNUNET_TRANSPORT_Handle *handle,
-                            const struct GNUNET_PeerIdentity *target,
-                            uint32_t quota_in,
-                            uint32_t quota_out,
-                            struct GNUNET_TIME_Relative timeout,
-                            GNUNET_SCHEDULER_Task cont, void *cont_cls);
+GNUNET_TRANSPORT_try_connect (struct GNUNET_TRANSPORT_Handle *handle,
+                              const struct GNUNET_PeerIdentity *target);
 
 
 /**
 
 
 /**
@@ -178,14 +178,14 @@ struct GNUNET_TRANSPORT_TransmitHandle;
 
 /**
  * Check if we could queue a message of the given size for
 
 /**
  * Check if we could queue a message of the given size for
- * transmission.  The transport service will take both its
- * internal buffers and bandwidth limits imposed by the
- * other peer into consideration when answering this query.
+ * transmission.  The transport service will take both its internal
+ * buffers and bandwidth limits imposed by the other peer into
+ * consideration when answering this query.
  *
  * @param handle connection to transport service
  * @param target who should receive the message
  * @param size how big is the message we want to transmit?
  *
  * @param handle connection to transport service
  * @param target who should receive the message
  * @param size how big is the message we want to transmit?
- * @param priority how important is the message?
+ * @param priority how important is the message? @deprecated - remove?
  * @param timeout after how long should we give up (and call
  *        notify with buf NULL and size 0)?
  * @param notify function to call when we are ready to
  * @param timeout after how long should we give up (and call
  *        notify with buf NULL and size 0)?
  * @param notify function to call when we are ready to
@@ -195,27 +195,24 @@ struct GNUNET_TRANSPORT_TransmitHandle;
  *         non-NULL if the notify callback was queued (can be used to cancel
  *         using GNUNET_TRANSPORT_notify_transmit_ready_cancel)
  */
  *         non-NULL if the notify callback was queued (can be used to cancel
  *         using GNUNET_TRANSPORT_notify_transmit_ready_cancel)
  */
-struct GNUNET_TRANSPORT_TransmitHandle
-  *GNUNET_TRANSPORT_notify_transmit_ready (struct GNUNET_TRANSPORT_Handle
-                                           *handle,
-                                           const struct GNUNET_PeerIdentity
-                                           *target, size_t size,
-                                          uint32_t priority,
-                                           struct GNUNET_TIME_Relative
-                                           timeout,
-                                           GNUNET_CONNECTION_TransmitReadyNotify
-                                           notify, void *notify_cls);
+struct GNUNET_TRANSPORT_TransmitHandle *
+GNUNET_TRANSPORT_notify_transmit_ready (struct GNUNET_TRANSPORT_Handle *handle,
+                                        const struct GNUNET_PeerIdentity
+                                        *target, size_t size, uint32_t priority,
+                                        struct GNUNET_TIME_Relative timeout,
+                                        GNUNET_CONNECTION_TransmitReadyNotify
+                                        notify, void *notify_cls);
 
 
 /**
  * Cancel the specified transmission-ready notification.
  *
 
 
 /**
  * Cancel the specified transmission-ready notification.
  *
- * @param h handle of the transmission notification request to cancel
+ * @param th handle of the transmission notification request to cancel
  */
 void
 GNUNET_TRANSPORT_notify_transmit_ready_cancel (struct
                                                GNUNET_TRANSPORT_TransmitHandle
  */
 void
 GNUNET_TRANSPORT_notify_transmit_ready_cancel (struct
                                                GNUNET_TRANSPORT_TransmitHandle
-                                               *h);
+                                               *th);
 
 
 
 
 
 
@@ -226,8 +223,16 @@ GNUNET_TRANSPORT_notify_transmit_ready_cancel (struct
  * @param cls closure
  * @param hello our updated HELLO
  */
  * @param cls closure
  * @param hello our updated HELLO
  */
-typedef void (*GNUNET_TRANSPORT_HelloUpdateCallback)(void *cls,
-                                                    const struct GNUNET_MessageHeader *hello);
+typedef void (*GNUNET_TRANSPORT_HelloUpdateCallback) (void *cls,
+                                                      const struct
+                                                      GNUNET_MessageHeader *
+                                                      hello);
+
+
+/**
+ * Handle to cancel a 'GNUNET_TRANSPORT_get_hello' operation.
+ */
+struct GNUNET_TRANSPORT_GetHelloHandle;
 
 
 /**
 
 
 /**
@@ -236,8 +241,9 @@ typedef void (*GNUNET_TRANSPORT_HelloUpdateCallback)(void *cls,
  * @param handle connection to transport service
  * @param rec function to call with the HELLO
  * @param rec_cls closure for rec
  * @param handle connection to transport service
  * @param rec function to call with the HELLO
  * @param rec_cls closure for rec
+ * @return handle to cancel the operation
  */
  */
-void
+struct GNUNET_TRANSPORT_GetHelloHandle *
 GNUNET_TRANSPORT_get_hello (struct GNUNET_TRANSPORT_Handle *handle,
                             GNUNET_TRANSPORT_HelloUpdateCallback rec,
                             void *rec_cls);
 GNUNET_TRANSPORT_get_hello (struct GNUNET_TRANSPORT_Handle *handle,
                             GNUNET_TRANSPORT_HelloUpdateCallback rec,
                             void *rec_cls);
@@ -246,151 +252,152 @@ GNUNET_TRANSPORT_get_hello (struct GNUNET_TRANSPORT_Handle *handle,
 /**
  * Stop receiving updates about changes to our HELLO message.
  *
 /**
  * Stop receiving updates about changes to our HELLO message.
  *
- * @param handle connection to transport service
- * @param rec function previously registered to be called with the HELLOs
- * @param rec_cls closure for rec
+ * @param ghh handle returned from 'GNUNET_TRANSPORT_get_hello')
  */
 void
  */
 void
-GNUNET_TRANSPORT_get_hello_cancel (struct GNUNET_TRANSPORT_Handle *handle,
-                                  GNUNET_TRANSPORT_HelloUpdateCallback rec,
-                                  void *rec_cls);
+GNUNET_TRANSPORT_get_hello_cancel (struct GNUNET_TRANSPORT_GetHelloHandle *ghh);
 
 
 /**
  * Offer the transport service the HELLO of another peer.  Note that
  * the transport service may just ignore this message if the HELLO is
 
 
 /**
  * Offer the transport service the HELLO of another peer.  Note that
  * the transport service may just ignore this message if the HELLO is
- * malformed or useless due to our local configuration.  If the HELLO
- * is working, we should add it to PEERINFO.
+ * malformed or useless due to our local configuration.
  *
  * @param handle connection to transport service
  * @param hello the hello message
  *
  * @param handle connection to transport service
  * @param hello the hello message
+ * @param cont continuation to call when HELLO has been sent
+ * @param cls closure for continuation
  */
 void
 GNUNET_TRANSPORT_offer_hello (struct GNUNET_TRANSPORT_Handle *handle,
  */
 void
 GNUNET_TRANSPORT_offer_hello (struct GNUNET_TRANSPORT_Handle *handle,
-                              const struct GNUNET_MessageHeader *hello);
+                              const struct GNUNET_MessageHeader *hello,
+                              GNUNET_SCHEDULER_Task cont, void *cls);
+
+
+/**
+ * Handle to cancel a pending address lookup.
+ */
+struct GNUNET_TRANSPORT_AddressToStringContext;
 
 
 /**
  * Convert a binary address into a human readable address.
  *
 
 
 /**
  * Convert a binary address into a human readable address.
  *
- * @param sched scheduler to use
  * @param cfg configuration to use
  * @param address address to convert (binary format)
  * @param cfg configuration to use
  * @param address address to convert (binary format)
- * @param addressLen number of bytes in address
- * @param numeric should (IP) addresses be displayed in numeric form 
+ * @param numeric should (IP) addresses be displayed in numeric form
  *                (otherwise do reverse DNS lookup)
  *                (otherwise do reverse DNS lookup)
- * @param nameTrans name of the transport to which the address belongs
  * @param timeout how long is the lookup allowed to take at most
  * @param aluc function to call with the results
  * @param aluc_cls closure for aluc
  * @param timeout how long is the lookup allowed to take at most
  * @param aluc function to call with the results
  * @param aluc_cls closure for aluc
+ * @return handle to cancel the operation, NULL on error
  */
  */
-void
-GNUNET_TRANSPORT_address_lookup (struct GNUNET_SCHEDULER_Handle *sched,
-                                 const struct GNUNET_CONFIGURATION_Handle *cfg,
-                                 const char * address,
-                                 size_t addressLen,
-                                int numeric,
-                                 const char * nameTrans,
-                                struct GNUNET_TIME_Relative timeout,
-                                GNUNET_TRANSPORT_AddressLookUpCallback aluc,
-                                void *aluc_cls);
-
+struct GNUNET_TRANSPORT_AddressToStringContext *
+GNUNET_TRANSPORT_address_to_string (const struct GNUNET_CONFIGURATION_Handle
+                                    *cfg,
+                                    const struct GNUNET_HELLO_Address *address,
+                                    int numeric,
+                                    struct GNUNET_TIME_Relative timeout,
+                                    GNUNET_TRANSPORT_AddressToStringCallback
+                                    aluc, void *aluc_cls);
 
 
 /**
 
 
 /**
- * Handle for blacklisting requests.
+ * Cancel request for address conversion.
+ *
+ * @param alc handle for the request to cancel
  */
  */
-struct GNUNET_TRANSPORT_BlacklistRequest;
+void
+GNUNET_TRANSPORT_address_to_string_cancel (struct
+                                           GNUNET_TRANSPORT_AddressToStringContext
+                                           *alc);
 
 
 /**
 
 
 /**
- * Blacklist a peer for a given period of time.  All connections
- * (inbound and outbound) to a peer that is blacklisted will be
- * dropped (as soon as we learn who the connection is for).  A second
- * call to this function for the same peer overrides previous
- * blacklisting requests.
+ * Return all the known addresses for a specific peer or all peers.
+ * Returns continuously all address if one_shot is set to GNUNET_NO
+ *
+ * CHANGE: Returns the address(es) that we are currently using for this
+ * peer.  Upon completion, the 'AddressLookUpCallback' is called one more
+ * time with 'NULL' for the address and the peer.  After this, the operation must no
+ * longer be explicitly cancelled.
  *
  *
- * @param sched scheduler to use
  * @param cfg configuration to use
  * @param cfg configuration to use
- * @param peer identity of peer to blacklist
- * @param duration how long to blacklist, use GNUNET_TIME_UNIT_ZERO to
- *        re-enable connections
- * @param timeout when should this operation (trying to establish the
- *        blacklisting time out)
- * @param cont continuation to call once the request has been processed
- * @param cont_cls closure for cont
- * @return NULL on error, otherwise handle for cancellation
+ * @param peer peer identity to look up the addresses of, CHANGE: allow NULL for all (connected) peers
+ * @param one_shot GNUNET_YES to return the current state and then end (with NULL+NULL),
+ *                 GNUNET_NO to monitor the set of addresses used (continuously, must be explicitly canceled, NOT implemented yet!)
+ * @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
  */
  */
-struct GNUNET_TRANSPORT_BlacklistRequest *
-GNUNET_TRANSPORT_blacklist (struct GNUNET_SCHEDULER_Handle *sched,
-                           const struct GNUNET_CONFIGURATION_Handle *cfg,
-                           const struct GNUNET_PeerIdentity *peer,
-                           struct GNUNET_TIME_Relative duration,
-                           struct GNUNET_TIME_Relative timeout,
-                           GNUNET_SCHEDULER_Task cont,
-                           void *cont_cls);
+struct GNUNET_TRANSPORT_PeerIterateContext *
+GNUNET_TRANSPORT_peer_get_active_addresses (const struct
+                                            GNUNET_CONFIGURATION_Handle *cfg,
+                                            const struct GNUNET_PeerIdentity
+                                            *peer, int one_shot,
+                                            struct GNUNET_TIME_Relative timeout,
+                                            GNUNET_TRANSPORT_PeerIterateCallback
+                                            peer_address_callback,
+                                            void *peer_address_callback_cls);
 
 
 /**
 
 
 /**
- * Abort transmitting the blacklist request.  Note that this function
- * is NOT for removing a peer from the blacklist (for that, call 
- * GNUNET_TRANSPORT_blacklist with a duration of zero).  This function
- * is only for aborting the transmission of a blacklist request
- * (i.e. because of shutdown).
+ * Cancel request for peer lookup.
  *
  *
- * @param br handle of the request that is to be cancelled
+ * @param alc handle for the request to cancel
  */
 void
  */
 void
-GNUNET_TRANSPORT_blacklist_cancel (struct GNUNET_TRANSPORT_BlacklistRequest * br);
+GNUNET_TRANSPORT_peer_get_active_addresses_cancel (struct
+                                                   GNUNET_TRANSPORT_PeerIterateContext
+                                                   *alc);
 
 
 /**
 
 
 /**
- * Handle for blacklist notifications.
+ * Handle for blacklisting peers.
  */
  */
-struct GNUNET_TRANSPORT_BlacklistNotification;
+struct GNUNET_TRANSPORT_Blacklist;
 
 
 /**
 
 
 /**
- * Signature of function called whenever the blacklist status of
- * a peer changes.  This includes changes to the duration of the
- * blacklist status as well as the expiration of an existing
- * blacklist status.
+ * Function that decides if a connection is acceptable or not.
  *
  * @param cls closure
  *
  * @param cls closure
- * @param peer identity of peer with the change
- * @param until GNUNET_TIME_UNIT_ZERO_ABS if the peer is no
- *              longer blacklisted, otherwise the time at
- *              which the current blacklisting will expire
+ * @param pid peer to approve or disapproave
+ * @return GNUNET_OK if the connection is allowed, GNUNET_SYSERR if not
  */
  */
-typedef void (*GNUNET_TRANSPORT_BlacklistCallback)(void *cls,
-                                                  const struct GNUNET_PeerIdentity *peer,
-                                                  struct GNUNET_TIME_Absolute until);
+typedef int (*GNUNET_TRANSPORT_BlacklistCallback) (void *cls,
+                                                   const struct
+                                                   GNUNET_PeerIdentity * pid);
 
 
 /**
 
 
 /**
- * Call a function whenever a peer's blacklisting status changes.
+ * Install a blacklist callback.  The service will be queried for all
+ * existing connections as well as any fresh connections to check if
+ * they are permitted.  If the blacklisting callback is unregistered,
+ * all hosts that were denied in the past will automatically be
+ * whitelisted again.  Cancelling the blacklist handle is also the
+ * only way to re-enable connections from peers that were previously
+ * blacklisted.
  *
  *
- * @param sched scheduler to use
  * @param cfg configuration to use
  * @param cfg configuration to use
- * @param bc function to call on status changes
- * @param bc_cls closure for bc
+ * @param cb callback to invoke to check if connections are allowed
+ * @param cb_cls closure for cb
  * @return NULL on error, otherwise handle for cancellation
  */
  * @return NULL on error, otherwise handle for cancellation
  */
-struct GNUNET_TRANSPORT_BlacklistNotification *
-GNUNET_TRANSPORT_blacklist_notify (struct GNUNET_SCHEDULER_Handle *sched,
-                                  const struct GNUNET_CONFIGURATION_Handle *cfg,
-                                  GNUNET_TRANSPORT_BlacklistCallback bc,
-                                  void *bc_cls);
+struct GNUNET_TRANSPORT_Blacklist *
+GNUNET_TRANSPORT_blacklist (const struct GNUNET_CONFIGURATION_Handle *cfg,
+                            GNUNET_TRANSPORT_BlacklistCallback cb,
+                            void *cb_cls);
 
 
 /**
 
 
 /**
- * Stop calling the notification callback associated with
- * the given blacklist notification.
+ * Abort the blacklist.  Note that this function is the only way for
+ * removing a peer from the blacklist.
  *
  *
- * @param bn handle of the request that is to be cancelled
+ * @param br handle of the request that is to be cancelled
  */
 void
  */
 void
-GNUNET_TRANSPORT_blacklist_notify_cancel (struct GNUNET_TRANSPORT_BlacklistNotification * bn);
+GNUNET_TRANSPORT_blacklist_cancel (struct GNUNET_TRANSPORT_Blacklist *br);