summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGravatar Karl Ramm <kcr@1ts.org>2009-12-18 15:33:18 +0000
committerGravatar Karl Ramm <kcr@1ts.org>2009-12-18 15:33:18 +0000
commitbdebdf31d76e65ee7a45ffaea219510fc7b9a3a7 (patch)
treefeb9f50d68d1f8119b05c7b5a5539294e31d9a93 /lib
parent88e556d598741de725a73b757c072dc473e3e9c0 (diff)
roleplay accordingly with sin_len and sin6_len values on BSD systems
Diffstat (limited to 'lib')
-rw-r--r--lib/ZParseNot.c9
-rw-r--r--lib/Zinternal.c9
2 files changed, 18 insertions, 0 deletions
diff --git a/lib/ZParseNot.c b/lib/ZParseNot.c
index e98bad6..d610049 100644
--- a/lib/ZParseNot.c
+++ b/lib/ZParseNot.c
@@ -262,9 +262,15 @@ ZParseNotice(char *buffer,
if (len == sizeof(notice->z_sender_sockaddr.ip6.sin6_addr)) {
notice->z_sender_sockaddr.ip6.sin6_family = AF_INET6;
memcpy(&notice->z_sender_sockaddr.ip6.sin6_addr, addrbuf, len);
+#ifdef HAVE_SOCKADDR_IN6_SIN6_LEN
+ notice->z_sender_sockaddr.ip6.sin6_len = sizeof(notice->z_sender_sockaddr.ip6);
+#endif
} else if (len == sizeof(notice->z_sender_sockaddr.ip4.sin_addr)) {
notice->z_sender_sockaddr.ip4.sin_family = AF_INET;
memcpy(&notice->z_sender_sockaddr.ip4.sin_addr, addrbuf, len);
+#ifdef HAVE_SOCKADDR_IN_SIN_LEN
+ notice->z_sender_sockaddr.ip4.sin_len = sizeof(notice->z_sender_sockaddr.ip4);
+#endif
} else
BAD_PACKET("address claims to be neither IPv4 or IPv6");
@@ -275,6 +281,9 @@ ZParseNotice(char *buffer,
sizeof notice->z_sender_sockaddr);
notice->z_sender_sockaddr.ip4.sin_family = AF_INET;
notice->z_sender_sockaddr.ip4.sin_addr = notice->z_uid.zuid_addr;
+#ifdef HAVE_SOCKADDR_IN_SIN_LEN
+ notice->z_sender_sockaddr.ip4.sin_len = sizeof(notice->z_sender_sockaddr.ip4);
+#endif
}
if (numfields && ptr < end) {
diff --git a/lib/Zinternal.c b/lib/Zinternal.c
index d121026..7c9bb4a 100644
--- a/lib/Zinternal.c
+++ b/lib/Zinternal.c
@@ -688,6 +688,9 @@ Z_FormatHeader(ZNotice_t *notice,
notice->z_sender_sockaddr.ip4.sin_family = AF_INET; /*XXX*/
notice->z_sender_sockaddr.ip4.sin_port = notice->z_port;
(void) memcpy(&notice->z_sender_sockaddr.ip4.sin_addr, &__My_addr, sizeof(__My_addr));
+#ifdef HAVE_SOCKADDR_IN_SIN_LEN
+ notice->z_sender_sockaddr.ip4.sin_len = sizeof(notice->z_sender_sockaddr.ip4);
+#endif
}
notice->z_multiuid = notice->z_uid;
@@ -740,6 +743,9 @@ Z_NewFormatHeader(ZNotice_t *notice,
notice->z_sender_sockaddr.ip4.sin_family = AF_INET; /*XXX*/
notice->z_sender_sockaddr.ip4.sin_port = notice->z_port;
(void) memcpy(&notice->z_sender_sockaddr.ip4.sin_addr, &__My_addr, sizeof(__My_addr));
+#ifdef HAVE_SOCKADDR_IN_SIN_LEN
+ notice->z_sender_sockaddr.ip4.sin_len = sizeof(notice->z_sender_sockaddr.ip4);
+#endif
notice->z_multiuid = notice->z_uid;
@@ -1251,6 +1257,9 @@ Z_SendFragmentedNotice(ZNotice_t *notice,
notice->z_sender_sockaddr.ip4.sin_family = AF_INET; /*XXX*/
notice->z_sender_sockaddr.ip4.sin_port = notice->z_port;
(void) memcpy(&notice->z_sender_sockaddr.ip4.sin_addr, &__My_addr, sizeof(__My_addr));
+#ifdef HAVE_SOCKADDR_IN_SIN_LEN
+ notice->z_sender_sockaddr.ip4.sin_len = sizeof(notice->z_sender_sockaddr.ip4);
+#endif
}
message_len = min(notice->z_message_len-offset, fragsize);
partnotice.z_message = notice->z_message+offset;