summaryrefslogtreecommitdiffstats
path: root/src/send.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/send.c')
-rw-r--r--src/send.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/send.c b/src/send.c
index 8707e31..3a990d2 100644
--- a/src/send.c
+++ b/src/send.c
@@ -70,6 +70,7 @@ static void send_type(fastd_context_t *ctx, const fastd_socket_t *sock, const fa
struct msghdr msg = {};
char cbuf[1024] = {};
+ fastd_peer_address_t remote_addr6;
switch (remote_addr->sa.sa_family) {
case AF_INET:
@@ -86,6 +87,14 @@ static void send_type(fastd_context_t *ctx, const fastd_socket_t *sock, const fa
exit_bug(ctx, "unsupported address family");
}
+ if (sock->bound_addr->sa.sa_family == AF_INET6) {
+ remote_addr6 = *remote_addr;
+ fastd_peer_address_widen(&remote_addr6);
+
+ msg.msg_name = (void*)&remote_addr6.in6;
+ msg.msg_namelen = sizeof(struct sockaddr_in6);
+ }
+
struct iovec iov[2] = {
{ .iov_base = &packet_type, .iov_len = 1 },
{ .iov_base = buffer.data, .iov_len = buffer.len }