check
[oweals/gnunet.git] / src / include / gnunet_connection_lib.h
index 8bca5baa6f9bc577d403dab837dd77e1aec3b1ca..8d2dbb6119f6b556c4248cfe70a5fb938d8f6c5f 100644 (file)
@@ -52,16 +52,35 @@ extern "C"
 struct GNUNET_CONNECTION_Handle;
 
 
+/**
+ * Credentials for UNIX domain sockets.
+ */
+struct GNUNET_CONNECTION_Credentials
+{
+  /**
+   * UID of the other end of the connection.
+   */
+  uid_t uid;
+
+  /**
+   * GID of the other end of the connection.
+   */
+  gid_t gid;
+};
+
+
 /**
  * Function to call for access control checks.
  *
  * @param cls closure
+ * @param ucred credentials, if available, otherwise NULL
  * @param addr address
  * @param addrlen length of address
  * @return GNUNET_YES to allow, GNUNET_NO to deny, GNUNET_SYSERR
  *   for unknown address family (will be denied).
  */
 typedef int (*GNUNET_CONNECTION_AccessCheck) (void *cls,
+                                             const struct GNUNET_CONNECTION_Credentials *ucred,
                                            const struct sockaddr * addr,
                                            socklen_t addrlen);
 
@@ -99,42 +118,30 @@ GNUNET_CONNECTION_persist_(struct GNUNET_CONNECTION_Handle *sock);
  * socket should henceforth be no longer used directly.
  * GNUNET_socket_destroy will close it.
  *
- * @param sched scheduler to use
  * @param osSocket existing socket to box
- * @param maxbuf maximum write buffer size for the socket (use
- *        0 for sockets that need no write buffers, such as listen sockets)
  * @return the boxed socket handle
  */
 struct GNUNET_CONNECTION_Handle
   *GNUNET_CONNECTION_create_from_existing (struct
-                                                   GNUNET_SCHEDULER_Handle
-                                                   *sched,
-                                                   struct
                                                    GNUNET_NETWORK_Handle
-                                                   *osSocket, size_t maxbuf);
+                                                   *osSocket);
 
 
 /**
  * Create a socket handle by accepting on a listen socket.  This
  * function may block if the listen socket has no connection ready.
  *
- * @param sched scheduler to use
  * @param access function to use to check if access is allowed
  * @param access_cls closure for access
  * @param lsock listen socket
- * @param maxbuf maximum write buffer size for the socket (use
- *        0 for sockets that need no write buffers, such as listen sockets)
  * @return the socket handle, NULL on error (for example, access refused)
  */
 struct GNUNET_CONNECTION_Handle
-  *GNUNET_CONNECTION_create_from_accept (struct
-                                                 GNUNET_SCHEDULER_Handle
-                                                 *sched,
-                                                 GNUNET_CONNECTION_AccessCheck
+  *GNUNET_CONNECTION_create_from_accept (GNUNET_CONNECTION_AccessCheck
                                                  access, void *access_cls,
                                                  struct
                                                  GNUNET_NETWORK_Handle
-                                                 *lsock, size_t maxbuf);
+                                                 *lsock);
 
 
 /**
@@ -142,20 +149,15 @@ struct GNUNET_CONNECTION_Handle
  * This function returns immediately, even if the connection has not
  * yet been established.  This function only creates TCP connections.
  *
- * @param sched scheduler to use
  * @param cfg configuration to use
  * @param hostname name of the host to connect to
  * @param port port to connect to
- * @param maxbuf maximum write buffer size for the socket (use
- *        0 for sockets that need no write buffers, such as listen sockets)
  * @return the socket handle
  */
 struct GNUNET_CONNECTION_Handle
-  *GNUNET_CONNECTION_create_from_connect (struct GNUNET_SCHEDULER_Handle *sched,
-                                         const struct GNUNET_CONFIGURATION_Handle *cfg,
+  *GNUNET_CONNECTION_create_from_connect (const struct GNUNET_CONFIGURATION_Handle *cfg,
                                          const char *hostname,
-                                         uint16_t port,
-                                         size_t maxbuf);
+                                         uint16_t port);
 
 
 /**
@@ -163,19 +165,14 @@ struct GNUNET_CONNECTION_Handle
  * This function returns immediately, even if the connection has not
  * yet been established.  This function only creates UNIX connections.
  *
- * @param sched scheduler to use
  * @param cfg configuration to use
- * @param unixpath path to connect to
- * @param maxbuf maximum write buffer size for the socket (use
- *        0 for sockets that need no write buffers, such as listen sockets)
+ * @param unixpath path to connect to)
  * @return the socket handle, NULL on systems without UNIX support
  */
 struct GNUNET_CONNECTION_Handle *
-GNUNET_CONNECTION_create_from_connect_to_unixpath (struct GNUNET_SCHEDULER_Handle *sched,
-                                                  const struct
+GNUNET_CONNECTION_create_from_connect_to_unixpath (const struct
                                                   GNUNET_CONFIGURATION_Handle *cfg,
-                                                  const char *unixpath,
-                                                  size_t maxbuf);
+                                                  const char *unixpath);
 
 
 
@@ -185,22 +182,16 @@ GNUNET_CONNECTION_create_from_connect_to_unixpath (struct GNUNET_SCHEDULER_Handl
  * This function returns immediately, even if the connection has not
  * yet been established.  This function only creates TCP connections.
  *
- * @param sched scheduler to use
  * @param af_family address family to use
  * @param serv_addr server address
  * @param addrlen length of server address
- * @param maxbuf maximum write buffer size for the socket (use
- *        0 for sockets that need no write buffers, such as listen sockets)
  * @return the socket handle
  */
 struct GNUNET_CONNECTION_Handle
-  *GNUNET_CONNECTION_create_from_sockaddr (struct
-                                                   GNUNET_SCHEDULER_Handle
-                                                   *sched, int af_family,
+  *GNUNET_CONNECTION_create_from_sockaddr (int af_family,
                                                    const struct sockaddr
                                                    *serv_addr,
-                                                   socklen_t addrlen,
-                                                   size_t maxbuf);
+                                                   socklen_t addrlen);
 
 /**
  * Check if socket is valid (no fatal errors have happened so far).
@@ -306,7 +297,7 @@ struct GNUNET_CONNECTION_TransmitHandle;
  * are free in the transmission buffer.  May call the notify
  * method immediately if enough space is available.  Note that
  * this function will abort if "size" is greater than
- * "maxbuf" (as specified when the socket handle was created).
+ * GNUNET_SERVER_MAX_MESSAGE_SIZE.
  *
  * Note that "notify" will be called either when enough
  * buffer space is available OR when the socket is destroyed.
@@ -332,13 +323,13 @@ struct GNUNET_CONNECTION_TransmitHandle;
  */
 struct GNUNET_CONNECTION_TransmitHandle
   *GNUNET_CONNECTION_notify_transmit_ready (struct
-                                                    GNUNET_CONNECTION_Handle
-                                                    *sock, size_t size,
-                                                    struct
-                                                    GNUNET_TIME_Relative
-                                                    timeout,
-                                                    GNUNET_CONNECTION_TransmitReadyNotify
-                                                    notify, void *notify_cls);
+                                            GNUNET_CONNECTION_Handle
+                                            *sock, size_t size,
+                                            struct
+                                            GNUNET_TIME_Relative
+                                            timeout,
+                                            GNUNET_CONNECTION_TransmitReadyNotify
+                                            notify, void *notify_cls);
 
 
 /**