+ /* --- @accept@ --- *
+ *
+ * Arguments: @int fd@ = listening file descriptor
+ * @addr_opts *ao@ = data block to get configuration from
+ * @const char *desc@ = description of the listener
+ *
+ * Returns: Pointer to a reference counted file descriptor.
+ *
+ * Use: Accepts, verifies and logs an incoming connection.
+ */
+
+ reffd *(*accept)(int /*fd*/, addr_opts */*ao*/, const char */*desc*/);
+
+ /* --- @inittargopts@ --- *
+ *
+ * Arguments: ---
+ *
+ * Returns: A pointer to a protocol-specific data block for a connecter
+ *
+ * Use: Creates a data block for a target. This is attached to the
+ * target data structure. Options can then be requested, and
+ * are added to the block when necessary.
+ */
+
+ addr_opts *(*inittargopts)(void);
+
+ /* --- @freetargopts@ --- *
+ *
+ * Arguments: @addr_opts *ao@ = data block to remove
+ *
+ * Returns: ---
+ *
+ * Use: Throws away all the configuration data for an address type.
+ */
+
+ void (*freetargopts)(addr_opts */*ao*/);
+
+ /* --- @connect@ --- *
+ *
+ * Arguments: @addr *a@ = destination address
+ * @addr_opts *ao@ = target address options
+ * @conn *c@ = connection structure
+ * @endpt *e@ = endpoint structure
+ *
+ * Returns: Zero if OK, @-1@ on some error.
+ *
+ * Use: Requests that a connection be made, or at least set in
+ * motion. An address may do one of these things:
+ *
+ * * Return @-1@.
+ *
+ * * Call @starget_connected@ with @-1@ or a connected file
+ * descriptor and the pointer @e@.
+ *
+ * * Call @conn_init@ or @conn_fd@, giving @starget_connected@
+ * and @e@ as the function to call.
+ */
+
+ int (*connect)(addr */*a*/, addr_opts */*ao*/, conn */*c*/, endpt */*e*/);
+