summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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