diff options
author | mrb0nk500 <b0nk@b0nk.xyz> | 2022-08-02 22:24:04 -0300 |
---|---|---|
committer | mrb0nk500 <b0nk@b0nk.xyz> | 2022-08-02 22:24:04 -0300 |
commit | f06f10d8bf69a786908624ae056836e51de2bc7f (patch) | |
tree | 05082818cf30e57d1c7391141f1441cbdbf79cb3 | |
parent | e999c611cafac0573fb538ad17d997c73a694198 (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.c | 9 | ||||
-rw-r--r-- | network.h | 1 |
2 files changed, 10 insertions, 0 deletions
@@ -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. */ @@ -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 |