summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormrb0nk500 <b0nk@b0nk.xyz>2022-08-02 22:24:04 -0300
committermrb0nk500 <b0nk@b0nk.xyz>2022-08-02 22:24:04 -0300
commitf06f10d8bf69a786908624ae056836e51de2bc7f (patch)
tree05082818cf30e57d1c7391141f1441cbdbf79cb3
parente999c611cafac0573fb538ad17d997c73a694198 (diff)
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.
-rw-r--r--network.c9
-rw-r--r--network.h1
2 files changed, 10 insertions, 0 deletions
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