From f06f10d8bf69a786908624ae056836e51de2bc7f Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Tue, 2 Aug 2022 22:24:04 -0300 Subject: network: Add `get_sock_addr()` Much like with `create_socket()`, this just makes it easier to get the sockaddr from a socket descriptor, without having to duplicate everything over, and over again. --- network.c | 9 +++++++++ network.h | 1 + 2 files changed, 10 insertions(+) diff --git a/network.c b/network.c index 9b9557e..6e334df 100644 --- a/network.c +++ b/network.c @@ -19,6 +19,15 @@ const char *addr_to_str(struct sockaddr *sa, socklen_t len) { return str; } +struct sockaddr *get_sock_addr(int socket) { + struct sockaddr *sa; + socklen_t sock_len = sizeof(struct sockaddr); + getsockname(socket, NULL, &sock_len); + sa = calloc(1, sock_len); + getsockname(socket, sa, &sock_len); + return sa; +} + int create_socket(struct sockaddr *sa, size_t sock_len) { const int one = 1; /* Create a new listen socket. */ diff --git a/network.h b/network.h index b953a1d..2279264 100644 --- a/network.h +++ b/network.h @@ -32,6 +32,7 @@ struct packet { }; extern const char *addr_to_str(struct sockaddr *sa, socklen_t len); +extern struct sockaddr *get_sock_addr(int socket); extern int create_socket(struct sockaddr *sa, size_t sock_len); #endif -- cgit v1.2.3-13-gbd6f