From 314eee33f6900a0fa185d0622eb4a3b9dd69142d Mon Sep 17 00:00:00 2001 From: Gabriel Somlo Date: Tue, 15 Mar 2022 14:09:15 -0400 Subject: [PATCH 001/140] frrboot: add fedora sbin path to default Add the Fedora default location for FRR binaries (/usr/libexec/frr/*.) to CORE's frrboot default "sbin" search path Signed-off-by: Gabriel Somlo --- daemon/core/configservices/frrservices/services.py | 2 +- daemon/core/services/frr.py | 2 +- daemon/data/core.conf | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/daemon/core/configservices/frrservices/services.py b/daemon/core/configservices/frrservices/services.py index dd2d1f9d..5e6c9948 100644 --- a/daemon/core/configservices/frrservices/services.py +++ b/daemon/core/configservices/frrservices/services.py @@ -89,7 +89,7 @@ class FRRZebra(ConfigService): "frr_bin_search", default="/usr/local/bin /usr/bin /usr/lib/frr" ).strip('"') frr_sbin_search = self.node.session.options.get( - "frr_sbin_search", default="/usr/local/sbin /usr/sbin /usr/lib/frr" + "frr_sbin_search", default="/usr/local/sbin /usr/sbin /usr/lib/frr /usr/libexec/frr" ).strip('"') services = [] diff --git a/daemon/core/services/frr.py b/daemon/core/services/frr.py index 87145d37..c8ad1048 100644 --- a/daemon/core/services/frr.py +++ b/daemon/core/services/frr.py @@ -142,7 +142,7 @@ class FRRZebra(CoreService): "frr_bin_search", '"/usr/local/bin /usr/bin /usr/lib/frr"' ) frr_sbin_search = node.session.options.get( - "frr_sbin_search", '"/usr/local/sbin /usr/sbin /usr/lib/frr"' + "frr_sbin_search", '"/usr/local/sbin /usr/sbin /usr/lib/frr /usr/libexec/frr"' ) cfg = """\ #!/bin/sh diff --git a/daemon/data/core.conf b/daemon/data/core.conf index 874ba567..1923250d 100644 --- a/daemon/data/core.conf +++ b/daemon/data/core.conf @@ -5,7 +5,7 @@ grpcport = 50051 quagga_bin_search = "/usr/local/bin /usr/bin /usr/lib/quagga" quagga_sbin_search = "/usr/local/sbin /usr/sbin /usr/lib/quagga" frr_bin_search = "/usr/local/bin /usr/bin /usr/lib/frr" -frr_sbin_search = "/usr/local/sbin /usr/sbin /usr/lib/frr" +frr_sbin_search = "/usr/local/sbin /usr/sbin /usr/lib/frr /usr/libexec/frr" # uncomment the following line to load custom services from the specified dir # this may be a comma-separated list, and directory names should be unique From e4abefe23b46c4b4bbb5488f05a8d787c203ff14 Mon Sep 17 00:00:00 2001 From: Blake Harnden <32446120+bharnden@users.noreply.github.com> Date: Wed, 3 Aug 2022 17:21:31 -0700 Subject: [PATCH 002/140] grpc: added nem id and port to interface data returned from GetNode --- daemon/core/api/grpc/grpcutils.py | 10 +++++++++- daemon/core/api/grpc/server.py | 6 +++--- daemon/core/api/grpc/wrappers.py | 4 ++++ daemon/proto/core/api/grpc/core.proto | 2 ++ 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/daemon/core/api/grpc/grpcutils.py b/daemon/core/api/grpc/grpcutils.py index 7f63079c..d26c0bd9 100644 --- a/daemon/core/api/grpc/grpcutils.py +++ b/daemon/core/api/grpc/grpcutils.py @@ -658,10 +658,11 @@ def get_service_configuration(service: CoreService) -> NodeServiceData: ) -def iface_to_proto(iface: CoreInterface) -> core_pb2.Interface: +def iface_to_proto(session: Session, iface: CoreInterface) -> core_pb2.Interface: """ Convenience for converting a core interface to the protobuf representation. + :param session: session interface belongs to :param iface: interface to convert :return: interface proto """ @@ -672,6 +673,11 @@ def iface_to_proto(iface: CoreInterface) -> core_pb2.Interface: ip6 = str(ip6_net.ip) if ip6_net else None ip6_mask = ip6_net.prefixlen if ip6_net else None mac = str(iface.mac) if iface.mac else None + nem_id = None + nem_port = None + if isinstance(iface.net, EmaneNet): + nem_id = session.emane.get_nem_id(iface) + nem_port = session.emane.get_nem_port(iface) return core_pb2.Interface( id=iface.id, name=iface.name, @@ -682,6 +688,8 @@ def iface_to_proto(iface: CoreInterface) -> core_pb2.Interface: ip4_mask=ip4_mask, ip6=ip6, ip6_mask=ip6_mask, + nem_id=nem_id, + nem_port=nem_port, ) diff --git a/daemon/core/api/grpc/server.py b/daemon/core/api/grpc/server.py index 532dd91c..5967df1a 100644 --- a/daemon/core/api/grpc/server.py +++ b/daemon/core/api/grpc/server.py @@ -585,7 +585,7 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer): ifaces = [] for iface_id in node.ifaces: iface = node.ifaces[iface_id] - iface_proto = grpcutils.iface_to_proto(iface) + iface_proto = grpcutils.iface_to_proto(session, iface) ifaces.append(iface_proto) emane_configs = grpcutils.get_emane_model_configs_dict(session) node_emane_configs = emane_configs.get(node.id, []) @@ -756,9 +756,9 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer): iface1_proto = None iface2_proto = None if node1_iface: - iface1_proto = grpcutils.iface_to_proto(node1_iface) + iface1_proto = grpcutils.iface_to_proto(session, node1_iface) if node2_iface: - iface2_proto = grpcutils.iface_to_proto(node2_iface) + iface2_proto = grpcutils.iface_to_proto(session, node2_iface) return core_pb2.AddLinkResponse( result=True, iface1=iface1_proto, iface2=iface2_proto ) diff --git a/daemon/core/api/grpc/wrappers.py b/daemon/core/api/grpc/wrappers.py index a49b9932..11402cd9 100644 --- a/daemon/core/api/grpc/wrappers.py +++ b/daemon/core/api/grpc/wrappers.py @@ -481,6 +481,8 @@ class Interface: mtu: int = None node_id: int = None net2_id: int = None + nem_id: int = None + nem_port: int = None @classmethod def from_proto(cls, proto: core_pb2.Interface) -> "Interface": @@ -497,6 +499,8 @@ class Interface: mtu=proto.mtu, node_id=proto.node_id, net2_id=proto.net2_id, + nem_id=proto.nem_id, + nem_port=proto.nem_port, ) def to_proto(self) -> core_pb2.Interface: diff --git a/daemon/proto/core/api/grpc/core.proto b/daemon/proto/core/api/grpc/core.proto index 4969e9c9..d2f024da 100644 --- a/daemon/proto/core/api/grpc/core.proto +++ b/daemon/proto/core/api/grpc/core.proto @@ -668,6 +668,8 @@ message Interface { int32 mtu = 10; int32 node_id = 11; int32 net2_id = 12; + int32 nem_id = 13; + int32 nem_port = 14; } message SessionLocation { From 382ff6d49bf7af68a52de240f46ce10a5330a050 Mon Sep 17 00:00:00 2001 From: Blake Harnden <32446120+bharnden@users.noreply.github.com> Date: Tue, 30 Aug 2022 12:25:34 -0700 Subject: [PATCH 003/140] docs: updated install doc to provide a better example for installing emane python bindings into a virtual environment --- docs/install.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/install.md b/docs/install.md index fcc8484e..cc463b88 100644 --- a/docs/install.md +++ b/docs/install.md @@ -281,15 +281,17 @@ python3