#
# Author: Alina Quereilhac <alina.quereilhac@inria.fr>
-import ipaddr
import networkx
import math
import random
+from six import next, PY2, PY3
+if PY2:
+ import ipaddr
+else:
+ import ipaddress
+
+
class TopologyType:
LINEAR = "linear"
LADDER = "ladder"
return self.topology.node[nid].get(name)
def node_annotations(self, nid):
- return self.topology.node[nid].keys()
+ retcod = self.topology.node[nid].keys()
+ if PY3: retcod = list(retcod)
+ return retcod
def del_node_annotation(self, nid, name):
del self.topology.node[nid][name]
return self.topology.edge[nid1][nid2].get(name)
def edge_annotations(self, nid1, nid2):
- return self.topology.edge[nid1][nid2].keys()
+ retcod = self.topology.edge[nid1][nid2].keys()
+ if PY3: retcod = list(retcod)
+ return retcod
def del_edge_annotation(self, nid1, nid2, name):
del self.topology.edge[nid1][nid2][name]
# Assign IP addresses to host
netblock = "%s/%d" % (network, prefix)
if version == 4:
- net = ipaddr.IPv4Network(netblock)
+ net = ipaddr.IPv4Network(netblock) if PY2 else ipaddress.ip_network(netblock)
new_prefix = 30
elif version == 6:
- net = ipaddr.IPv6Network(netblock)
+ net = ipaddr.IPv6Network(netblock) if PY2 else ipaddress.ip_network(netblock)
new_prefix = 30
else:
raise RuntimeError("Invalid IP version %d" % version)
#### Compute subnets for each link
# get a subnet of base_add with prefix /30
- subnet = sub_itr.next()
+ subnet = next(sub_itr)
mask = subnet.netmask.exploded
network = subnet.network.exploded
prefixlen = subnet.prefixlen
# get host addresses in that subnet
i = subnet.iterhosts()
- addr1 = i.next()
- addr2 = i.next()
+ addr1 = next(i)
+ addr2 = next(i)
ip1 = addr1.exploded
ip2 = addr2.exploded