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:
parent
0462c1b084
commit
0725199d6d
93 changed files with 1955 additions and 2156 deletions
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue