simultaneous rx/tx on both IPv4 and IPv6
This commit is contained in:
parent
2d83dd3e5c
commit
6ade2e1ef6
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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))
|
||||
|
|
Loading…
Reference in New Issue