diff --git a/buildroot b/buildroot index 226eec3c..6b5d6ae1 160000 --- a/buildroot +++ b/buildroot @@ -1 +1 @@ -Subproject commit 226eec3c5498a42d9714ff4c1d5d65ab9d682464 +Subproject commit 6b5d6ae1c3743769bbc12adfced8f9d8706125d1 diff --git a/package/netd/Config.in b/package/netd/Config.in index b7d05419..94bd4a92 100644 --- a/package/netd/Config.in +++ b/package/netd/Config.in @@ -39,13 +39,11 @@ config BR2_PACKAGE_NETD_FRR_CONF Provides full routing support (static routes, RIP, OSPF). -config BR2_PACKAGE_NETD_FRR +config BR2_PACKAGE_NETD_FRR_GRPC bool "FRR gRPC" depends on BR2_PACKAGE_FRR - select BR2_PACKAGE_PROTOBUF - select BR2_PACKAGE_GRPC + select BR2_PACKAGE_FRR_GRPC select BR2_PACKAGE_HOST_PROTOBUF - select BR2_PACKAGE_HOST_GRPC help Enable FRR integration via gRPC northbound API. Provides full routing support (static routes, RIP, OSPF). diff --git a/package/netd/netd.mk b/package/netd/netd.mk index 094decb9..60ab4535 100644 --- a/package/netd/netd.mk +++ b/package/netd/netd.mk @@ -24,7 +24,7 @@ NETD_CONF_OPTS += --with-frr-conf else ifeq ($(BR2_PACKAGE_NETD_FRR_VTYSH),y) NETD_DEPENDENCIES += frr NETD_CONF_OPTS += --with-frr-vtysh -else ifeq ($(BR2_PACKAGE_NETD_FRR),y) +else ifeq ($(BR2_PACKAGE_NETD_FRR_GRPC),y) NETD_DEPENDENCIES += frr grpc host-grpc protobuf NETD_CONF_ENV += \ PROTOC="$(HOST_DIR)/bin/protoc" \ diff --git a/package/skeleton-init-finit/skeleton-init-finit.mk b/package/skeleton-init-finit/skeleton-init-finit.mk index 3bb72c91..618b174c 100644 --- a/package/skeleton-init-finit/skeleton-init-finit.mk +++ b/package/skeleton-init-finit/skeleton-init-finit.mk @@ -101,6 +101,19 @@ define SKELETON_INIT_FINIT_SET_FRR endef endif SKELETON_INIT_FINIT_POST_INSTALL_TARGET_HOOKS += SKELETON_INIT_FINIT_SET_FRR + +ifeq ($(BR2_PACKAGE_FRR_GRPC),y) +define SKELETON_INIT_FINIT_SET_FRR_MGMTD_GRPC + cp $(SKELETON_INIT_FINIT_PKGDIR)/skeleton/etc/default/mgmtd $(TARGET_DIR)/etc/default/mgmtd + $(SED) 's/\(MGMTD_ARGS="[^"]*\)"/\1 -M grpc"/' $(TARGET_DIR)/etc/default/mgmtd +endef +else +define SKELETON_INIT_FINIT_SET_FRR_MGMTD_GRPC + cp $(SKELETON_INIT_FINIT_PKGDIR)/skeleton/etc/default/mgmtd $(TARGET_DIR)/etc/default/mgmtd +endef +endif +SKELETON_INIT_FINIT_POST_INSTALL_TARGET_HOOKS += SKELETON_INIT_FINIT_SET_FRR_MGMTD_GRPC + endif # BR2_PACKAGE_FRR ifeq ($(BR2_PACKAGE_INADYN),y) diff --git a/board/common/rootfs/etc/default/mgmtd b/package/skeleton-init-finit/skeleton/etc/default/mgmtd similarity index 83% rename from board/common/rootfs/etc/default/mgmtd rename to package/skeleton-init-finit/skeleton/etc/default/mgmtd index 3b1b4e1d..2d7209c8 100644 --- a/board/common/rootfs/etc/default/mgmtd +++ b/package/skeleton-init-finit/skeleton/etc/default/mgmtd @@ -1 +1 @@ -MGMTD_ARGS="-A 127.0.0.1 -u frr -g frr --log syslog --log-level err -M grpc" +MGMTD_ARGS="-A 127.0.0.1 -u frr -g frr --log syslog --log-level err" diff --git a/board/common/rootfs/etc/default/ospfd b/package/skeleton-init-finit/skeleton/etc/default/ospfd similarity index 100% rename from board/common/rootfs/etc/default/ospfd rename to package/skeleton-init-finit/skeleton/etc/default/ospfd diff --git a/board/common/rootfs/etc/default/zebra b/package/skeleton-init-finit/skeleton/etc/default/zebra similarity index 100% rename from board/common/rootfs/etc/default/zebra rename to package/skeleton-init-finit/skeleton/etc/default/zebra diff --git a/test/infamy/util.py b/test/infamy/util.py index 4a40e600..77bc3ede 100644 --- a/test/infamy/util.py +++ b/test/infamy/util.py @@ -38,13 +38,20 @@ def parallel(*fns): def until(fn, attempts=10, interval=1): + last_exc = None for attempt in range(attempts): - result = fn() + try: + result = fn() + except Exception as e: + last_exc = e + result = False if result: return result time.sleep(interval) + if last_exc: + raise last_exc raise Exception("Expected condition did not materialize") @@ -116,7 +123,7 @@ def curl(url, timeout=10, silent=False): try: with urllib.request.urlopen(url, timeout=timeout) as response: return response.read().decode('utf-8', errors='replace') - except (urllib.error.URLError, ConnectionResetError, UnicodeEncodeError) as e: + except (urllib.error.URLError, ConnectionResetError, UnicodeEncodeError, TimeoutError) as e: if not silent: print(f"[WARN] curl: failed to fetch {url}: {e}") - return "" \ No newline at end of file + return ""