From 348e99087c5b8cfa00e43e662f6e73f293d898f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Vavru=C5=A1a?= <marek.vavrusa@nic.cz> Date: Tue, 13 May 2014 14:13:35 +0200 Subject: [PATCH] net: new function to determine connected socket --- src/knot/server/net.c | 7 +++++++ src/knot/server/net.h | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/knot/server/net.c b/src/knot/server/net.c index e0a010dea..5e2c8d633 100644 --- a/src/knot/server/net.c +++ b/src/knot/server/net.c @@ -143,3 +143,10 @@ int net_connected_socket(int type, const struct sockaddr_storage *dst_addr, return socket; } + +int net_is_connected(int fd) +{ + struct sockaddr_in6 ss; + socklen_t len = sizeof(ss); + return getpeername(fd, &ss, &len) == 0; +} diff --git a/src/knot/server/net.h b/src/knot/server/net.h index 892b03129..858ce6ec8 100644 --- a/src/knot/server/net.h +++ b/src/knot/server/net.h @@ -65,6 +65,16 @@ int net_bound_socket(int type, const struct sockaddr_storage *ss); int net_connected_socket(int type, const struct sockaddr_storage *dst_addr, const struct sockaddr_storage *src_addr, unsigned flags); +/*! + * \brief Return true if the socket is connected. + * + * @note This could be used to identify connected TCP from UDP sockets. + * + * \param fd Socket. + * + * \return true if connected + */ +int net_is_connected(int fd); #endif // _KNOTD_NET_H_ -- GitLab