check
[oweals/gnunet.git] / src / include / gnunet_connection_lib.h
index d5942236b57c8c29a6a1223a3df07c58a2b08fa7..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,15 +118,11 @@ 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
  * @return the boxed socket handle
  */
 struct GNUNET_CONNECTION_Handle
   *GNUNET_CONNECTION_create_from_existing (struct
-                                                   GNUNET_SCHEDULER_Handle
-                                                   *sched,
-                                                   struct
                                                    GNUNET_NETWORK_Handle
                                                    *osSocket);
 
@@ -116,17 +131,13 @@ struct GNUNET_CONNECTION_Handle
  * 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
  * @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
@@ -138,15 +149,13 @@ 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
  * @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);
 
@@ -156,14 +165,12 @@ 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)
  * @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);
 
@@ -175,16 +182,13 @@ 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
  * @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);