Revert commit
e49aececceaa ("socket: don't set interface for sent
packets") to allow the interface to be selected for outgoing packets,
but don't set it in the callers yet.
{
message->length = PKL_ReplyLength((CMD_Reply *)message->data);
+ /* Don't require the response to use the same interface */
+ message->if_index = INVALID_IF_INDEX;
+
if (!SCK_SendMessage(sock_fd, message, 0))
return;
}
message.remote_addr.ip.port = remote_addr->port;
}
- message.if_index = local_addr->if_index;
message.local_addr.ip = local_addr->ip_addr;
+ /* Don't require the response to use the same interface */
+ message.if_index = INVALID_IF_INDEX;
+
#if !defined(HAVE_IN_PKTINFO) && defined(IP_SENDSRCADDR)
/* On FreeBSD a local IPv4 address cannot be specified on bound socket */
if (message.local_addr.ip.family == IPADDR_INET4 &&
return 0;
ipi->ipi_spec_dst.s_addr = htonl(message->local_addr.ip.addr.in4);
+ if (message->if_index != INVALID_IF_INDEX)
+ ipi->ipi_ifindex = message->if_index;
#elif defined(IP_SENDSRCADDR)
struct in_addr *addr;
memcpy(&ipi->ipi6_addr.s6_addr, &message->local_addr.ip.addr.in6,
sizeof(ipi->ipi6_addr.s6_addr));
+ if (message->if_index != INVALID_IF_INDEX)
+ ipi->ipi6_ifindex = message->if_index;
}
#endif
}