chiark / gitweb /
lib/client.[ch]: Add functions for reading the connection endpoint addresses.
authorMark Wooding <mdw@distorted.org.uk>
Tue, 5 May 2020 17:18:36 +0000 (18:18 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Tue, 5 May 2020 22:18:28 +0000 (23:18 +0100)
Nothing uses these yet.

lib/client.c
lib/client.h

index 0fab347818ac37fadfad6eec55f575190f2b2025..fdf0abe1e22e55a63b0bd8b97ccefa00091f217d 100644 (file)
@@ -119,6 +119,24 @@ int disorder_client_af(disorder_client *c) {
   return c->family;
 }
 
+/** @brief Determine the local socket address of this client */
+int disorder_client_sockname(disorder_client *c,
+                            struct sockaddr *sa, socklen_t *len_inout) {
+  int rc;
+  if((rc = getsockname(c->sio.sd, sa, len_inout)))
+    disorder_error(errno, "failed to read client socket name");
+  return rc;
+}
+
+/** @brief Determine the remote peer address for this client */
+int disorder_client_peername(disorder_client *c,
+                            struct sockaddr *sa, socklen_t *len_inout) {
+  int rc;
+  if((rc = getpeername(c->sio.sd, sa, len_inout)))
+    disorder_error(errno, "failed to read client socket name");
+  return rc;
+}
+
 /** @brief Read a response line
  * @param c Client
  * @param rp Where to store response, or NULL (UTF-8)
index c443f7e8365523ccc01c448f470db9dbc84ac72b..5d44622a4b46500c481c3f6f9dd8827f0f3fafa3 100644 (file)
@@ -41,6 +41,10 @@ struct sink;
 disorder_client *disorder_new(int verbose);
 void disorder_force_unpriv(disorder_client *c);
 int disorder_client_af(disorder_client *c);
+int disorder_client_sockname(disorder_client *c,
+                            struct sockaddr *sa, socklen_t *len_inout);
+int disorder_client_peername(disorder_client *c,
+                            struct sockaddr *sa, socklen_t *len_inout);
 int disorder_connect(disorder_client *c);
 int disorder_connect_user(disorder_client *c,
                          const char *username,