示例#1
0
def create_interface(node: CoreNode, network: CoreNetworkBase,
                     interface_data: InterfaceData):
    """
    Create an interface for a node on a network using provided interface data.

    :param node: node to create interface for
    :param network: network to associate interface with
    :param interface_data: interface data
    :return: created interface
    """
    node.newnetif(
        network,
        addrlist=interface_data.get_addresses(),
        hwaddr=interface_data.mac,
        ifindex=interface_data.id,
        ifname=interface_data.name,
    )
    return node.netif(interface_data.id)
示例#2
0
def get_nem_id(node: CoreNode, netif_id: int, context: ServicerContext) -> int:
    """
    Get nem id for a given node and interface id.

    :param node: node to get nem id for
    :param netif_id: id of interface on node to get nem id for
    :param context: request context
    :return: nem id
    """
    netif = node.netif(netif_id)
    if not netif:
        message = f"{node.name} missing interface {netif_id}"
        context.abort(grpc.StatusCode.NOT_FOUND, message)
    net = netif.net
    if not isinstance(net, EmaneNet):
        message = f"{node.name} interface {netif_id} is not an EMANE network"
        context.abort(grpc.StatusCode.INVALID_ARGUMENT, message)
    return net.getnemid(netif)