From dc06225749c7ecaff14fe65b9ab401bb32bc72d7 Mon Sep 17 00:00:00 2001 From: Tommaso Pecorella Date: Sun, 3 Mar 2024 19:08:29 +0100 Subject: [PATCH] network: extend addressUtils::IsMulticast to handle more cases --- src/network/utils/address-utils.cc | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/network/utils/address-utils.cc b/src/network/utils/address-utils.cc index caea08da0..7cabfdf93 100644 --- a/src/network/utils/address-utils.cc +++ b/src/network/utils/address-utils.cc @@ -19,6 +19,7 @@ #include "address-utils.h" #include "inet-socket-address.h" +#include "inet6-socket-address.h" #include "ns3/log.h" @@ -146,7 +147,23 @@ IsMulticast(const Address& ad) Ipv4Address ipv4 = inetAddr.GetIpv4(); return ipv4.IsMulticast(); } - // IPv6 case can go here, in future + else if (Ipv4Address::IsMatchingType(ad)) + { + Ipv4Address ipv4 = Ipv4Address::ConvertFrom(ad); + return ipv4.IsMulticast(); + } + else if (Inet6SocketAddress::IsMatchingType(ad)) + { + Inet6SocketAddress inetAddr = Inet6SocketAddress::ConvertFrom(ad); + Ipv6Address ipv6 = inetAddr.GetIpv6(); + return ipv6.IsMulticast(); + } + else if (Ipv6Address::IsMatchingType(ad)) + { + Ipv6Address ipv6 = Ipv6Address::ConvertFrom(ad); + return ipv6.IsMulticast(); + } + return false; }