controller link as operation
[oweals/gnunet.git] / src / include / gnunet_transport_plugin.h
index 194d4d214b789473e1891f1cfb89ccdd04a49f4d..fb0271a8ff055553a3aae7342254f7e2d50d4b21 100644 (file)
  * useful since sometimes (i.e. for inbound TCP connections) a
  * connection may not have an address that can be used for meaningful
  * distinction between sessions to the same peer.
+ *
+ * Each 'struct Session' MUST start with the 'struct GNUNET_PeerIdentity'
+ * of the peer the session is for (which will be used for some error
+ * checking by the ATS code).
  */
 struct Session;
 
@@ -136,7 +140,7 @@ typedef struct
  * @param addrlen length of the address
  * @return ATS Information containing the network type
  */
-typedef const struct GNUNET_ATS_Information
+typedef struct GNUNET_ATS_Information
 (*GNUNET_TRANSPORT_AddressToType) (void *cls,
                                    const struct sockaddr *addr,
                                    size_t addrlen);
@@ -218,7 +222,11 @@ struct GNUNET_TRANSPORT_PluginEnvironment
 
   /**
    * Function that should be called by the transport plugin
-   * whenever a message is received.
+   * whenever a message is received.  If this field is "NULL",
+   * the plugin should load in 'stub' mode and NOT fully
+   * initialize and instead only return an API with the 
+   * 'address_pretty_printer', 'address_to_string' and
+   * 'string_to_address' functions.
    */
   GNUNET_TRANSPORT_PluginReceiveCallback receive;
 
@@ -309,11 +317,12 @@ typedef void (*GNUNET_TRANSPORT_TransmitContinuation) (void *cls,
  *         and does NOT mean that the message was not transmitted (DV)
  */
 typedef ssize_t (*GNUNET_TRANSPORT_TransmitFunction) (void *cls,
-    struct Session *session,
-    const char *msgbuf, size_t msgbuf_size,
-    unsigned int priority,
-    struct GNUNET_TIME_Relative to,
-    GNUNET_TRANSPORT_TransmitContinuation cont, void *cont_cls);
+                                                     struct Session *session,
+                                                     const char *msgbuf, size_t msgbuf_size,
+                                                     unsigned int priority,
+                                                     struct GNUNET_TIME_Relative to,
+                                                     GNUNET_TRANSPORT_TransmitContinuation cont,
+                                                     void *cont_cls);
 
 
 /**
@@ -430,11 +439,9 @@ typedef const char *(*GNUNET_TRANSPORT_AddressToString) (void *cls,
  * @param cls closure ('struct Plugin*')
  * @param addr string address
  * @param addrlen length of the address
- * @param buf location to store a buffer pointer
- *        If the function returns GNUNET_SYSERR, its contents are undefined.
- * @param max size of the buffer
- * @param buf_len location to store buffer size.
+ * @param buf location to store the buffer
  *        If the function returns GNUNET_SYSERR, its contents are undefined.
+ * @param added length of created address
  * @return GNUNET_OK on success, GNUNET_SYSERR on failure
  */
 typedef int (*GNUNET_TRANSPORT_StringToAddress) (void *cls,