diff --git a/lib/mentat/module/netmngr.py b/lib/mentat/module/netmngr.py index 251c2e2ef465f1705dc19a38612d8984cf879fa3..04af416fd3b5dde031c7dcc2becb08d01fcc7fa0 100644 --- a/lib/mentat/module/netmngr.py +++ b/lib/mentat/module/netmngr.py @@ -650,14 +650,15 @@ class MentatNetmngrScript(mentat.script.fetcher.FetcherScript): :return: index of network :rtype: int """ - if isinstance(network, NetworkModel): - for index, net in enumerate(netlist): - if network.network == net['network'] and (('netname' in net and network.netname == net['netname']) or network.source == net['source']): - return index - else: - for index, net in enumerate(netlist): - if net.network == network['network'] and (('netname' in network and net.netname == network['netname']) or net.source == network['source']): - return index + network = network if isinstance(network, NetworkModel) else networkmodel_from_typeddict(network) + for index, net in enumerate(netlist): + net = net if isinstance(net, NetworkModel) else networkmodel_from_typeddict(net) + # Convert to ipranges object so ranges and CIDRs can be compared. + # e.g. 195.113.220.80-195.113.220.95 should be equal to 195.113.220.80/28 + iprange_net = mentat.datatype.internal.t_net(net.network) + iprange_network = mentat.datatype.internal.t_net(network.network) + if iprange_net == iprange_network and (net.netname == network.netname or net.source == network.source): + return index return -1 @staticmethod