From 7a63f69133d60e62b1c3689cd440cb9ae477b8be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20B=C3=BChler?= Date: Mon, 8 Feb 2010 09:38:18 +0100 Subject: [PATCH] Add li_sockaddr_dup --- include/lighttpd/utils.h | 1 + src/common/utils.c | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/include/lighttpd/utils.h b/include/lighttpd/utils.h index 68d5e9e..7d91111 100644 --- a/include/lighttpd/utils.h +++ b/include/lighttpd/utils.h @@ -70,6 +70,7 @@ LI_API liSocketAddress li_sockaddr_from_string(const GString *str, guint tcp_def LI_API liSocketAddress li_sockaddr_local_from_socket(gint fd); LI_API liSocketAddress li_sockaddr_remote_from_socket(gint fd); LI_API void li_sockaddr_clear(liSocketAddress *saddr); +LI_API liSocketAddress li_sockaddr_dup(liSocketAddress saddr); LI_API gboolean li_ipv4_in_ipv4_net(guint32 target, guint32 match, guint32 networkmask); LI_API gboolean li_ipv6_in_ipv6_net(const unsigned char *target, const guint8 *match, guint network); diff --git a/src/common/utils.c b/src/common/utils.c index 41583b2..cb69809 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -678,6 +678,14 @@ void li_sockaddr_clear(liSocketAddress *saddr) { saddr->len = 0; } +liSocketAddress li_sockaddr_dup(liSocketAddress saddr) { + liSocketAddress naddr = { 0, NULL }; + naddr.addr = (liSockAddr*) g_slice_alloc0(saddr.len); + naddr.len = saddr.len; + memcpy(naddr.addr, saddr.addr, saddr.len); + return naddr; +} + gboolean li_ipv4_in_ipv4_net(guint32 target, guint32 match, guint32 networkmask) { return (target & networkmask) == (match & networkmask); }