* 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;
* @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);
/**
* 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;
* 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);
/**
const void *addr,
size_t addrlen);
+/**
+ * Function called to convert a string address to
+ * a binary address.
+ *
+ * @param cls closure ('struct Plugin*')
+ * @param addr string address
+ * @param addrlen length of the address
+ * @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,
+ const char *addr,
+ uint16_t addrlen,
+ void **buf,
+ size_t *added);
+
/**
* Each plugin is required to return a pointer to a struct of this
*/
GNUNET_TRANSPORT_AddressToString address_to_string;
+ /**
+ * Function that will be called to convert a string address
+ * to binary (numeric conversion only).
+ */
+ GNUNET_TRANSPORT_StringToAddress string_to_address;
+
/**
* Function that will be called tell the plugin to create a session
* object