1
0
Fork 0

simultaneous rx/tx on both IPv4 and IPv6

This commit is contained in:
Kevin Matz 2021-09-02 13:43:35 -04:00
parent 2d83dd3e5c
commit 6ade2e1ef6
2 changed files with 9 additions and 1 deletions

View File

@ -38,6 +38,8 @@ void QSacnNode::subscribe(const uint16_t num)
}
for (QNetworkInterface &iface : QNetworkInterface::allInterfaces())
joinMulticastGroup(IPv4MulticastAddress(num), iface);
for (QNetworkInterface &iface : QNetworkInterface::allInterfaces())
joinMulticastGroup(IPv6MulticastAddress(num), iface);
}
@ -49,6 +51,8 @@ void QSacnNode::unsubscribe(const uint16_t num)
{
for (QNetworkInterface &iface : QNetworkInterface::allInterfaces())
leaveMulticastGroup(IPv4MulticastAddress(num), iface);
for (QNetworkInterface &iface : QNetworkInterface::allInterfaces())
leaveMulticastGroup(IPv6MulticastAddress(num), iface);
if (Receiver::universe(num)) {
qDebug() << "Unsubscribing from universe " << QString::number(num);
@ -114,7 +118,8 @@ void QSacnNode::rlpSend(const ACN::PDU::Stream stream,
addr = QHostAddress(ip.address.ipv4.value);
break;
case ACN::SDT::SDT_ADDR_IPV6:
return;
addr = QHostAddress(ip.address.ipv6.bytes);
break;
default:
return;
}

View File

@ -243,6 +243,9 @@ void Receiver::dataFrameHandler(ACN::PDU::Message<DATA::Pdu> frame) {
/// numbers, but some sources may not. By tolerating out-of-spec sources
/// transmitting 0s instead of a sequence number, the receiver may operate
/// in a mode where it cannnot detect missing or out-of-sequence packets.
/// This also prevents the rejection of messages recieved on both IPv4 and
/// IPv6, which violates the reciever requiement in \cite sACN 9.1 Association
/// of Multicast Addresses and Universe requirement.
auto a = universe->provenance()->sequence_number;
auto b = source->sequence_number;
if (!(a == 0 && b == 0))