initial sweeping changes to call all usages of various interface related variables and functions (netif, interface, if, ifc, etc) to use a consistent name iface

This commit is contained in:
Blake Harnden 2020-06-16 09:30:16 -07:00
parent 0462c1b084
commit 0725199d6d
93 changed files with 1955 additions and 2156 deletions

View file

@ -58,16 +58,16 @@ def add_attribute(element: etree.Element, name: str, value: Any) -> None:
element.set(name, str(value))
def create_interface_data(interface_element: etree.Element) -> InterfaceData:
interface_id = int(interface_element.get("id"))
name = interface_element.get("name")
mac = interface_element.get("mac")
ip4 = interface_element.get("ip4")
ip4_mask = get_int(interface_element, "ip4_mask")
ip6 = interface_element.get("ip6")
ip6_mask = get_int(interface_element, "ip6_mask")
def create_iface_data(iface_element: etree.Element) -> InterfaceData:
iface_id = int(iface_element.get("id"))
name = iface_element.get("name")
mac = iface_element.get("mac")
ip4 = iface_element.get("ip4")
ip4_mask = get_int(iface_element, "ip4_mask")
ip6 = iface_element.get("ip6")
ip6_mask = get_int(iface_element, "ip6_mask")
return InterfaceData(
id=interface_id,
id=iface_id,
name=name,
mac=mac,
ip4=ip4,
@ -482,7 +482,7 @@ class CoreXmlWriter:
# add link data
for link_data in links:
# skip basic range links
if link_data.interface1_id is None and link_data.interface2_id is None:
if link_data.iface1_id is None and link_data.iface2_id is None:
continue
link_element = self.create_link_element(link_data)
@ -495,37 +495,37 @@ class CoreXmlWriter:
device = DeviceElement(self.session, node)
self.devices.append(device.element)
def create_interface_element(
def create_iface_element(
self,
element_name: str,
node_id: int,
interface_id: int,
iface_id: int,
mac: str,
ip4: str,
ip4_mask: int,
ip6: str,
ip6_mask: int,
) -> etree.Element:
interface = etree.Element(element_name)
iface = etree.Element(element_name)
node = self.session.get_node(node_id, NodeBase)
interface_name = None
iface_name = None
if isinstance(node, CoreNodeBase):
node_interface = node.netif(interface_id)
interface_name = node_interface.name
node_iface = node.get_iface(iface_id)
iface_name = node_iface.name
# check if emane interface
if isinstance(node_interface.net, EmaneNet):
nem = node_interface.net.getnemid(node_interface)
add_attribute(interface, "nem", nem)
if isinstance(node_iface.net, EmaneNet):
nem = node_iface.net.getnemid(node_iface)
add_attribute(iface, "nem", nem)
add_attribute(interface, "id", interface_id)
add_attribute(interface, "name", interface_name)
add_attribute(interface, "mac", mac)
add_attribute(interface, "ip4", ip4)
add_attribute(interface, "ip4_mask", ip4_mask)
add_attribute(interface, "ip6", ip6)
add_attribute(interface, "ip6_mask", ip6_mask)
return interface
add_attribute(iface, "id", iface_id)
add_attribute(iface, "name", iface_name)
add_attribute(iface, "mac", mac)
add_attribute(iface, "ip4", ip4)
add_attribute(iface, "ip4_mask", ip4_mask)
add_attribute(iface, "ip6", ip6)
add_attribute(iface, "ip6_mask", ip6_mask)
return iface
def create_link_element(self, link_data: LinkData) -> etree.Element:
link_element = etree.Element("link")
@ -533,32 +533,32 @@ class CoreXmlWriter:
add_attribute(link_element, "node2", link_data.node2_id)
# check for interface one
if link_data.interface1_id is not None:
interface1 = self.create_interface_element(
if link_data.iface1_id is not None:
iface1 = self.create_iface_element(
"interface1",
link_data.node1_id,
link_data.interface1_id,
link_data.interface1_mac,
link_data.interface1_ip4,
link_data.interface1_ip4_mask,
link_data.interface1_ip6,
link_data.interface1_ip6_mask,
link_data.iface1_id,
link_data.iface1_mac,
link_data.iface1_ip4,
link_data.iface1_ip4_mask,
link_data.iface1_ip6,
link_data.iface1_ip6_mask,
)
link_element.append(interface1)
link_element.append(iface1)
# check for interface two
if link_data.interface2_id is not None:
interface2 = self.create_interface_element(
if link_data.iface2_id is not None:
iface2 = self.create_iface_element(
"interface2",
link_data.node2_id,
link_data.interface2_id,
link_data.interface2_mac,
link_data.interface2_ip4,
link_data.interface2_ip4_mask,
link_data.interface2_ip6,
link_data.interface2_ip6_mask,
link_data.iface2_id,
link_data.iface2_mac,
link_data.iface2_ip4,
link_data.iface2_ip4_mask,
link_data.iface2_ip6,
link_data.iface2_ip6_mask,
)
link_element.append(interface2)
link_element.append(iface2)
# check for options, don't write for emane/wlan links
node1 = self.session.get_node(link_data.node1_id, NodeBase)
@ -940,19 +940,19 @@ class CoreXmlReader:
node2_id = get_int(link_element, "node_two")
node_set = frozenset((node1_id, node2_id))
interface1_element = link_element.find("interface1")
if interface1_element is None:
interface1_element = link_element.find("interface_one")
interface1_data = None
if interface1_element is not None:
interface1_data = create_interface_data(interface1_element)
iface1_element = link_element.find("interface1")
if iface1_element is None:
iface1_element = link_element.find("interface_one")
iface1_data = None
if iface1_element is not None:
iface1_data = create_iface_data(iface1_element)
interface2_element = link_element.find("interface2")
if interface2_element is None:
interface2_element = link_element.find("interface_two")
interface2_data = None
if interface2_element is not None:
interface2_data = create_interface_data(interface2_element)
iface2_element = link_element.find("interface2")
if iface2_element is None:
iface2_element = link_element.find("interface_two")
iface2_data = None
if iface2_element is not None:
iface2_data = create_iface_data(iface2_element)
options_element = link_element.find("options")
options = LinkOptions()
@ -978,12 +978,12 @@ class CoreXmlReader:
if options.unidirectional == 1 and node_set in node_sets:
logging.info("updating link node1(%s) node2(%s)", node1_id, node2_id)
self.session.update_link(
node1_id, node2_id, interface1_data.id, interface2_data.id, options
node1_id, node2_id, iface1_data.id, iface2_data.id, options
)
else:
logging.info("adding link node1(%s) node2(%s)", node1_id, node2_id)
self.session.add_link(
node1_id, node2_id, interface1_data, interface2_data, options
node1_id, node2_id, iface1_data, iface2_data, options
)
node_sets.add(node_set)

View file

@ -24,25 +24,25 @@ def add_address(
parent_element: etree.Element,
address_type: str,
address: str,
interface_name: str = None,
iface_name: str = None,
) -> None:
address_element = etree.SubElement(parent_element, "address", type=address_type)
address_element.text = address
if interface_name is not None:
address_element.set("iface", interface_name)
if iface_name is not None:
address_element.set("iface", iface_name)
def add_mapping(parent_element: etree.Element, maptype: str, mapref: str) -> None:
etree.SubElement(parent_element, "mapping", type=maptype, ref=mapref)
def add_emane_interface(
def add_emane_iface(
host_element: etree.Element,
netif: CoreInterface,
iface: CoreInterface,
platform_name: str = "p1",
transport_name: str = "t1",
) -> etree.Element:
nem_id = netif.net.nemidmap[netif]
nem_id = iface.net.nemidmap[iface]
host_id = host_element.get("id")
# platform data
@ -89,10 +89,10 @@ def get_ipv4_addresses(hostname: str) -> List[Tuple[str, str]]:
split = line.split()
if not split:
continue
interface_name = split[1]
iface_name = split[1]
address = split[3]
if not address.startswith("127."):
addresses.append((interface_name, address))
addresses.append((iface_name, address))
return addresses
else:
# TODO: handle other hosts
@ -112,11 +112,11 @@ class CoreXmlDeployment:
device = self.scenario.find(f"devices/device[@name='{name}']")
return device
def find_interface(self, device: NodeBase, name: str) -> etree.Element:
interface = self.scenario.find(
def find_iface(self, device: NodeBase, name: str) -> etree.Element:
iface = self.scenario.find(
f"devices/device[@name='{device.name}']/interfaces/interface[@name='{name}']"
)
return interface
return iface
def add_deployment(self) -> None:
physical_host = self.add_physical_host(socket.gethostname())
@ -136,8 +136,8 @@ class CoreXmlDeployment:
add_type(host_element, "physical")
# add ipv4 addresses
for interface_name, address in get_ipv4_addresses("localhost"):
add_address(host_element, "IPv4", address, interface_name)
for iface_name, address in get_ipv4_addresses("localhost"):
add_address(host_element, "IPv4", address, iface_name)
return host_element
@ -155,15 +155,15 @@ class CoreXmlDeployment:
# add host type
add_type(host_element, "virtual")
for netif in node.netifs():
for iface in node.get_ifaces():
emane_element = None
if isinstance(netif.net, EmaneNet):
emane_element = add_emane_interface(host_element, netif)
if isinstance(iface.net, EmaneNet):
emane_element = add_emane_iface(host_element, iface)
parent_element = host_element
if emane_element is not None:
parent_element = emane_element
for address in netif.addrlist:
for address in iface.addrlist:
address_type = get_address_type(address)
add_address(parent_element, address_type, address, netif.name)
add_address(parent_element, address_type, address, iface.name)

View file

@ -158,19 +158,19 @@ def build_node_platform_xml(
logging.warning("warning: EMANE network %s has no associated model", node.name)
return nem_id
for netif in node.netifs():
for iface in node.get_ifaces():
logging.debug(
"building platform xml for interface(%s) nem_id(%s)", netif.name, nem_id
"building platform xml for interface(%s) nem_id(%s)", iface.name, nem_id
)
# build nem xml
nem_definition = nem_file_name(node.model, netif)
nem_definition = nem_file_name(node.model, iface)
nem_element = etree.Element(
"nem", id=str(nem_id), name=netif.localname, definition=nem_definition
"nem", id=str(nem_id), name=iface.localname, definition=nem_definition
)
# check if this is an external transport, get default config if an interface
# specific one does not exist
config = emane_manager.getifcconfig(node.model.id, netif, node.model.name)
config = emane_manager.get_iface_config(node.model.id, iface, node.model.name)
if is_external(config):
nem_element.set("transport", "external")
@ -180,9 +180,9 @@ def build_node_platform_xml(
add_param(nem_element, transport_endpoint, config[transport_endpoint])
else:
# build transport xml
transport_type = netif.transport_type
transport_type = iface.transport_type
if not transport_type:
logging.info("warning: %s interface type unsupported!", netif.name)
logging.info("warning: %s interface type unsupported!", iface.name)
transport_type = TransportType.RAW
transport_file = transport_file_name(node.id, transport_type)
transport_element = etree.SubElement(
@ -190,14 +190,14 @@ def build_node_platform_xml(
)
# add transport parameter
add_param(transport_element, "device", netif.name)
add_param(transport_element, "device", iface.name)
# add nem entry
nem_entries[netif] = nem_element
nem_entries[iface] = nem_element
# merging code
key = netif.node.id
if netif.transport_type == TransportType.RAW:
key = iface.node.id
if iface.transport_type == TransportType.RAW:
key = "host"
otadev = control_net.brname
eventdev = control_net.brname
@ -229,10 +229,10 @@ def build_node_platform_xml(
platform_element.append(nem_element)
node.setnemid(netif, nem_id)
node.setnemid(iface, nem_id)
macstr = _hwaddr_prefix + ":00:00:"
macstr += f"{(nem_id >> 8) & 0xFF:02X}:{nem_id & 0xFF:02X}"
netif.sethwaddr(macstr)
iface.sethwaddr(macstr)
# increment nem id
nem_id += 1
@ -280,19 +280,19 @@ def build_xml_files(emane_manager: "EmaneManager", node: EmaneNet) -> None:
vtype = TransportType.VIRTUAL
rtype = TransportType.RAW
for netif in node.netifs():
for iface in node.get_ifaces():
# check for interface specific emane configuration and write xml files
config = emane_manager.getifcconfig(node.model.id, netif, node.model.name)
config = emane_manager.get_iface_config(node.model.id, iface, node.model.name)
if config:
node.model.build_xml_files(config, netif)
node.model.build_xml_files(config, iface)
# check transport type needed for interface
if netif.transport_type == TransportType.VIRTUAL:
if iface.transport_type == TransportType.VIRTUAL:
need_virtual = True
vtype = netif.transport_type
vtype = iface.transport_type
else:
need_raw = True
rtype = netif.transport_type
rtype = iface.transport_type
if need_virtual:
build_transport_xml(emane_manager, node, vtype)
@ -494,70 +494,70 @@ def transport_file_name(node_id: int, transport_type: TransportType) -> str:
return f"n{node_id}trans{transport_type.value}.xml"
def _basename(emane_model: "EmaneModel", interface: CoreInterface = None) -> str:
def _basename(emane_model: "EmaneModel", iface: CoreInterface = None) -> str:
"""
Create name that is leveraged for configuration file creation.
:param emane_model: emane model to create name for
:param interface: interface for this model
:param iface: interface for this model
:return: basename used for file creation
"""
name = f"n{emane_model.id}"
if interface:
node_id = interface.node.id
if emane_model.session.emane.getifcconfig(node_id, interface, emane_model.name):
name = interface.localname.replace(".", "_")
if iface:
node_id = iface.node.id
if emane_model.session.emane.get_iface_config(node_id, iface, emane_model.name):
name = iface.localname.replace(".", "_")
return f"{name}{emane_model.name}"
def nem_file_name(emane_model: "EmaneModel", interface: CoreInterface = None) -> str:
def nem_file_name(emane_model: "EmaneModel", iface: CoreInterface = None) -> str:
"""
Return the string name for the NEM XML file, e.g. "n3rfpipenem.xml"
:param emane_model: emane model to create file
:param interface: interface for this model
:param iface: interface for this model
:return: nem xml filename
"""
basename = _basename(emane_model, interface)
basename = _basename(emane_model, iface)
append = ""
if interface and interface.transport_type == TransportType.RAW:
if iface and iface.transport_type == TransportType.RAW:
append = "_raw"
return f"{basename}nem{append}.xml"
def shim_file_name(emane_model: "EmaneModel", interface: CoreInterface = None) -> str:
def shim_file_name(emane_model: "EmaneModel", iface: CoreInterface = None) -> str:
"""
Return the string name for the SHIM XML file, e.g. "commeffectshim.xml"
:param emane_model: emane model to create file
:param interface: interface for this model
:param iface: interface for this model
:return: shim xml filename
"""
name = _basename(emane_model, interface)
name = _basename(emane_model, iface)
return f"{name}shim.xml"
def mac_file_name(emane_model: "EmaneModel", interface: CoreInterface = None) -> str:
def mac_file_name(emane_model: "EmaneModel", iface: CoreInterface = None) -> str:
"""
Return the string name for the MAC XML file, e.g. "n3rfpipemac.xml"
:param emane_model: emane model to create file
:param interface: interface for this model
:param iface: interface for this model
:return: mac xml filename
"""
name = _basename(emane_model, interface)
name = _basename(emane_model, iface)
return f"{name}mac.xml"
def phy_file_name(emane_model: "EmaneModel", interface: CoreInterface = None) -> str:
def phy_file_name(emane_model: "EmaneModel", iface: CoreInterface = None) -> str:
"""
Return the string name for the PHY XML file, e.g. "n3rfpipephy.xml"
:param emane_model: emane model to create file
:param interface: interface for this model
:param iface: interface for this model
:return: phy xml filename
"""
name = _basename(emane_model, interface)
name = _basename(emane_model, iface)
return f"{name}phy.xml"