From aec65492ac2e2ec2c4efe02017728e06fa6e3ab2 Mon Sep 17 00:00:00 2001 From: Tommaso Pecorella Date: Fri, 29 May 2020 13:13:20 +0000 Subject: [PATCH] internet: remove code duplication --- src/internet/model/ipv6-l3-protocol.cc | 45 ++++++-------------------- 1 file changed, 10 insertions(+), 35 deletions(-) diff --git a/src/internet/model/ipv6-l3-protocol.cc b/src/internet/model/ipv6-l3-protocol.cc index 66f51b6c0..10b66a704 100644 --- a/src/internet/model/ipv6-l3-protocol.cc +++ b/src/internet/model/ipv6-l3-protocol.cc @@ -312,24 +312,7 @@ void Ipv6L3Protocol::AddAutoconfiguredAddress (uint32_t interface, Ipv6Address n if (flags & (1 << 6)) /* auto flag */ { - // In case of new MacAddress types, remember to change Ipv6L3Protocol::RemoveAutoconfiguredAddress as well - if (Mac64Address::IsMatchingType (addr)) - { - address = Ipv6InterfaceAddress (Ipv6Address::MakeAutoconfiguredAddress (Mac64Address::ConvertFrom (addr), network)); - } - else if (Mac48Address::IsMatchingType (addr)) - { - address = Ipv6InterfaceAddress (Ipv6Address::MakeAutoconfiguredAddress (Mac48Address::ConvertFrom (addr), network)); - } - else if (Mac16Address::IsMatchingType (addr)) - { - address = Ipv6InterfaceAddress (Ipv6Address::MakeAutoconfiguredAddress (Mac16Address::ConvertFrom (addr), network)); - } - else - { - NS_FATAL_ERROR ("Unknown method to make autoconfigured address for this kind of device."); - return; - } + address = Ipv6Address::MakeAutoconfiguredAddress (addr, network); /* see if we have already the prefix */ for (Ipv6AutoconfiguredPrefixListI it = m_prefixes.begin (); it != m_prefixes.end (); ++it) @@ -369,29 +352,21 @@ void Ipv6L3Protocol::RemoveAutoconfiguredAddress (uint32_t interface, Ipv6Addres Address addr = iface->GetDevice ()->GetAddress (); uint32_t max = iface->GetNAddresses (); uint32_t i = 0; - Ipv6Address toFound; + + Ipv6Address addressToFind = Ipv6Address::MakeAutoconfiguredAddress (addr, network); - if (Mac64Address::IsMatchingType (addr)) + for (i = 0; i < max; i++) { - toFound = Ipv6Address::MakeAutoconfiguredAddress (Mac64Address::ConvertFrom (addr), network); - } - else if (Mac48Address::IsMatchingType (addr)) - { - toFound = Ipv6Address::MakeAutoconfiguredAddress (Mac48Address::ConvertFrom (addr), network); - } - else if (Mac16Address::IsMatchingType (addr)) - { - toFound = Ipv6Address::MakeAutoconfiguredAddress (Mac16Address::ConvertFrom (addr), network); - } - else - { - NS_FATAL_ERROR ("Unknown method to make autoconfigured address for this kind of device."); - return; + if (iface->GetAddress (i).GetAddress () == addressToFind) + { + RemoveAddress (interface, i); + break; + } } for (i = 0; i < max; i++) { - if (iface->GetAddress (i).GetAddress () == toFound) + if (iface->GetAddress (i).GetAddress () == addressToFind) { RemoveAddress (interface, i); break;