Skip to content
Draft

Yangerd #1536

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
aac1041
TEMP: WiP document
mattiaswal Mar 27, 2026
74d9d2c
TEMP: Update yanger spec
mattiaswal Mar 28, 2026
4df99fc
firewall: simplify
mattiaswal Mar 31, 2026
c9835df
test: system: Make tests more robust
mattiaswal Mar 31, 2026
b491820
test: firewall: Make tests more robust
mattiaswal Mar 31, 2026
21923bd
yangerd: Initial
mattiaswal Mar 31, 2026
43e0df1
move yanger
mattiaswal Mar 31, 2026
630898a
statd: Include new yangerd backend for operational
mattiaswal Mar 31, 2026
4aa7de0
update doc
mattiaswal Mar 31, 2026
8916376
Fix routing and ip addresses
mattiaswal Mar 31, 2026
6bd1946
yangerd: Continues
mattiaswal Mar 31, 2026
cc0e695
zapi: Fix deletion of routes
mattiaswal Apr 24, 2026
1ae74be
Fix interface and bridge race conditions
mattiaswal Apr 27, 2026
b41a46a
FRR does not send delete on OSPF route change
mattiaswal Apr 28, 2026
44d174f
Fix ntp and dns status
mattiaswal Apr 28, 2026
891723f
test: dhcp: server_subnets: Add longer timeout for polling
mattiaswal Apr 28, 2026
c046f01
test: case: ntp: Adapt tests for polled yangerd
mattiaswal Apr 28, 2026
ab6de50
Fix containers, reactive now.
mattiaswal Apr 29, 2026
937e7ca
test: containers: host_commands/test.py: Adapt to new yangerd
mattiaswal Apr 29, 2026
c3c5ec3
test: usb: adapt to new yangerd
mattiaswal Apr 29, 2026
b1b189d
yangerd: Send sighup to yangerd on config change
mattiaswal Apr 29, 2026
fc25177
yangerd: fix stp status
mattiaswal Apr 29, 2026
9d072b6
yangerd: Add wireguard support
mattiaswal Apr 29, 2026
e95c75d
test: wireguard_roadwarrior: Adapt to the new polled world in yangerd
mattiaswal Apr 29, 2026
82bc86e
test: iface_enable_disable: Simplify test
mattiaswal Apr 29, 2026
0c55bb3
yangerd: Do not start in runlevel S
mattiaswal Apr 30, 2026
d830e00
yangerd: Add backoff if ip batch work have crashed
mattiaswal Apr 30, 2026
db5c086
yangerd: Add WiFi implementation
mattiaswal May 2, 2026
309aa41
yanger: Remove code duplication and fix upgrade
mattiaswal May 20, 2026
28775bb
statd: Remove old code
mattiaswal May 20, 2026
fe68019
test: upgrade: Add adaptions needed for yangerd
mattiaswal May 22, 2026
b918c32
test: upgrade: Add adaptions needed for yangerd
mattiaswal May 22, 2026
642e7a6
test: syslog: property_filter: Adapt to changes required by yangerd
mattiaswal May 22, 2026
bfd21c3
yangerd: Add support for getting ARP neighbors
mattiaswal May 22, 2026
eaa737f
tests: Adapt to new yangerd
mattiaswal May 22, 2026
f4c2671
test: stp_basic: Stabilize test
mattiaswal Jun 5, 2026
c70e2ff
test: ntp_client: Adapt to new yangerd daemon
mattiaswal Jun 5, 2026
76ff3b4
test: veth_delete: Adapt to new yangerd
mattiaswal Jun 10, 2026
8955975
test: ospf_unnumbered_interface: Adapt to new yangerd
mattiaswal Jun 10, 2026
7135dfb
test: route_pref_ospf: Adapt to yangerd
mattiaswal Jun 10, 2026
2efb396
test: upgrade: Adapt to yangerd
mattiaswal Jun 10, 2026
1dc0e85
yangerd: Add missing files
mattiaswal Jun 10, 2026
3a0bdff
test: operational_all: Harden to catch more
mattiaswal Jun 11, 2026
0e77809
test: upgrade: add missing readme
mattiaswal Jun 11, 2026
bd97fcb
test: spec: Allow to generate test specification without logical topo…
mattiaswal Jun 11, 2026
7e3d92c
test: ospf_point_to_multipoint: Adapt to yanger
mattiaswal Jun 11, 2026
b7f4341
test: hostname: adapt to yanger
mattiaswal Jun 11, 2026
82a72ae
test: ntp_client: Update test spec
mattiaswal Jun 11, 2026
ff6dcfc
test: route_pref_ospf: Update test spec
mattiaswal Jun 11, 2026
9813889
test: ospf_default_route_advertise: Make test more robust
mattiaswal Jun 11, 2026
7cf2720
statd: Adapt to yanger keys on module:container path
mattiaswal Jun 12, 2026
c8bcc6d
yangerd: Return {} instead of 404 if no match
mattiaswal Jun 12, 2026
e87444a
yangerd: Fix ntp and lldp status
mattiaswal Jun 12, 2026
7ec1ef4
test: ntp: client_stratum_selection: Adapt to yangerd behaviour
mattiaswal Jun 12, 2026
7f69b56
test: rip_multihop: Adapt to yangerd changes
mattiaswal Jun 12, 2026
7c1fc48
test: firewall: ipv6-zone-migration: Adapt to yanger behaviour changes
mattiaswal Jun 12, 2026
811d66d
dhcp: server_subnets: Adapt to yanger behaviour changes
mattiaswal Jun 12, 2026
9639ebe
test: lldp_admin_status: Adapt to yangerd changes
mattiaswal Jun 12, 2026
22f0ba3
test: mdns_allow_deny: Adapt to yangerd behaviour changes
mattiaswal Jun 12, 2026
b3865ef
REMOVE THIS: TEMPORARY DISABLE PTP TESTS
mattiaswal Jun 12, 2026
6a2de27
yangerd: add missing files
mattiaswal Jun 12, 2026
10fec19
yangerd: Add arm 32bit support
mattiaswal Jun 12, 2026
d0df900
test: speed_duplex_coppar: Adapt to yangerd
mattiaswal Jun 12, 2026
3c64946
test: upgrade: Make more robust using yangerd
mattiaswal Jun 14, 2026
0bda754
test: dhcp: client_basic: Adapt to changes by yangerd
mattiaswal Jun 14, 2026
c59dbe3
yangerd: Fix bugs with containers and boot order in CI
mattiaswal Jun 14, 2026
5d2ad3e
test: operational_all: Try to adapt to yangerd
mattiaswal Jun 14, 2026
c26328e
test: operational_all: Poll for stuff to get removed from yangerd
mattiaswal Jun 15, 2026
e316833
multicast: stream MAC sender continuously like the IPv4 sender
mattiaswal Jun 15, 2026
e2f212c
yangerd: Change containers from polled to reactive
mattiaswal Jun 17, 2026
71d50ea
yangerd: Fix containers
mattiaswal Jun 18, 2026
4bd30ed
yangerd: containers: widen event debounce to avoid podman contention
mattiaswal Jun 20, 2026
f4e0a48
rauc: Enable streaming of upgrades
mattiaswal Jun 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions board/x86_64/linux_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,7 @@ CONFIG_FW_CFG_SYSFS_CMDLINE=y
CONFIG_BLK_DEV_NULL_BLK=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_NBD=y
CONFIG_VIRTIO_BLK=y
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
Expand Down
1 change: 1 addition & 0 deletions configs/aarch64_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ BR2_PACKAGE_CURIOS_HTTPD=y
BR2_PACKAGE_CURIOS_NFTABLES=y
BR2_PACKAGE_GENCERT=y
BR2_PACKAGE_STATD=y
BR2_PACKAGE_YANGERD=y
BR2_PACKAGE_FACTORY=y
BR2_PACKAGE_FINIT_PLUGIN_HOTPLUG=y
BR2_PACKAGE_FINIT_PLUGIN_HOOK_SCRIPTS=y
Expand Down
1 change: 1 addition & 0 deletions configs/aarch64_minimal_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ BR2_PACKAGE_NETD=y
BR2_PACKAGE_CONFD_TEST_MODE=y
BR2_PACKAGE_GENCERT=y
BR2_PACKAGE_STATD=y
BR2_PACKAGE_YANGERD=y
BR2_PACKAGE_FACTORY=y
BR2_PACKAGE_FINIT_PLUGIN_HOTPLUG=y
BR2_PACKAGE_FINIT_PLUGIN_HOOK_SCRIPTS=y
Expand Down
1 change: 1 addition & 0 deletions configs/arm_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ BR2_PACKAGE_NETD=y
BR2_PACKAGE_CONFD_TEST_MODE=y
BR2_PACKAGE_GENCERT=y
BR2_PACKAGE_STATD=y
BR2_PACKAGE_YANGERD=y
BR2_PACKAGE_FACTORY=y
BR2_PACKAGE_FINIT_PLUGIN_HOTPLUG=y
BR2_PACKAGE_FINIT_PLUGIN_HOOK_SCRIPTS=y
Expand Down
1 change: 1 addition & 0 deletions configs/arm_minimal_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ BR2_PACKAGE_NETD=y
BR2_PACKAGE_CONFD_TEST_MODE=y
BR2_PACKAGE_GENCERT=y
BR2_PACKAGE_STATD=y
BR2_PACKAGE_YANGERD=y
BR2_PACKAGE_FACTORY=y
BR2_PACKAGE_FINIT_PLUGIN_HOTPLUG=y
BR2_PACKAGE_FINIT_PLUGIN_HOOK_SCRIPTS=y
Expand Down
1 change: 1 addition & 0 deletions configs/riscv64_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ BR2_PACKAGE_CONFD=y
BR2_PACKAGE_NETD=y
BR2_PACKAGE_GENCERT=y
BR2_PACKAGE_STATD=y
BR2_PACKAGE_YANGERD=y
BR2_PACKAGE_FACTORY=y
BR2_PACKAGE_FINIT_PLUGIN_HOTPLUG=y
BR2_PACKAGE_FINIT_PLUGIN_HOOK_SCRIPTS=y
Expand Down
2 changes: 2 additions & 0 deletions configs/x86_64_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ BR2_PACKAGE_RAUC=y
BR2_PACKAGE_RAUC_DBUS=y
BR2_PACKAGE_RAUC_GPT=y
BR2_PACKAGE_RAUC_NETWORK=y
BR2_PACKAGE_RAUC_STREAMING=y
BR2_PACKAGE_RAUC_JSON=y
BR2_PACKAGE_SYSKLOGD=y
BR2_PACKAGE_SYSKLOGD_LOGGER=y
Expand Down Expand Up @@ -156,6 +157,7 @@ BR2_PACKAGE_CURIOS_HTTPD=y
BR2_PACKAGE_CURIOS_NFTABLES=y
BR2_PACKAGE_GENCERT=y
BR2_PACKAGE_STATD=y
BR2_PACKAGE_YANGERD=y
BR2_PACKAGE_FACTORY=y
BR2_PACKAGE_FINIT_PLUGIN_HOTPLUG=y
BR2_PACKAGE_FINIT_PLUGIN_HOOK_SCRIPTS=y
Expand Down
1 change: 1 addition & 0 deletions configs/x86_64_minimal_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ BR2_PACKAGE_NETD=y
BR2_PACKAGE_CONFD_TEST_MODE=y
BR2_PACKAGE_GENCERT=y
BR2_PACKAGE_STATD=y
BR2_PACKAGE_YANGERD=y
BR2_PACKAGE_FACTORY=y
BR2_PACKAGE_FINIT_PLUGIN_HOTPLUG=y
BR2_PACKAGE_FINIT_PLUGIN_HOOK_SCRIPTS=y
Expand Down
1 change: 1 addition & 0 deletions package/Config.in
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ source "$BR2_EXTERNAL_INFIX_PATH/package/curios-httpd/Config.in"
source "$BR2_EXTERNAL_INFIX_PATH/package/curios-nftables/Config.in"
source "$BR2_EXTERNAL_INFIX_PATH/package/gencert/Config.in"
source "$BR2_EXTERNAL_INFIX_PATH/package/statd/Config.in"
source "$BR2_EXTERNAL_INFIX_PATH/package/yangerd/Config.in"
source "$BR2_EXTERNAL_INFIX_PATH/package/factory/Config.in"
source "$BR2_EXTERNAL_INFIX_PATH/package/faux/Config.in"
source "$BR2_EXTERNAL_INFIX_PATH/package/finit/Config.in"
Expand Down
7 changes: 7 additions & 0 deletions package/yangerd/Config.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
config BR2_PACKAGE_YANGERD
bool "yangerd"
depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
help
Operational data daemon for YANG/NETCONF/RESTCONF.
Replaces Python yanger scripts with a persistent Go daemon
serving operational data over a Unix socket IPC protocol.
3 changes: 3 additions & 0 deletions package/yangerd/yangerd.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
service <> name:yangerd log:prio:daemon.notice,tag:yangerd \
env:-/etc/default/yangerd \
[2345] yangerd -- Operational data daemon
35 changes: 35 additions & 0 deletions package/yangerd/yangerd.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
################################################################################
#
# yangerd
#
################################################################################

YANGERD_VERSION = 1.0.0
YANGERD_SITE = $(BR2_EXTERNAL_INFIX_PATH)/src/yangerd
YANGERD_SITE_METHOD = local
YANGERD_GOMOD = github.com/kernelkit/infix/src/yangerd
YANGERD_LICENSE = BSD-2-Clause
YANGERD_LICENSE_FILES = LICENSE
YANGERD_REDISTRIBUTE = NO

YANGERD_BUILD_TARGETS = cmd/yangerd cmd/yangerctl
YANGERD_INSTALL_BINS = yangerd yangerctl

define YANGERD_INSTALL_EXTRA
$(INSTALL) -D -m 0644 $(YANGERD_PKGDIR)/yangerd.conf \
$(FINIT_D)/available/yangerd.conf
ln -sf ../available/yangerd.conf $(FINIT_D)/enabled/yangerd.conf
$(INSTALL) -d $(TARGET_DIR)/etc/default
echo '# yangerd build-time feature flags (generated by yangerd.mk)' \
> $(TARGET_DIR)/etc/default/yangerd
echo 'YANGERD_ENABLE_WIFI=$(if $(BR2_PACKAGE_IW),true,false)' \
>> $(TARGET_DIR)/etc/default/yangerd
echo 'YANGERD_ENABLE_CONTAINERS=$(if $(BR2_PACKAGE_PODMAN),true,false)' \
>> $(TARGET_DIR)/etc/default/yangerd
echo 'YANGERD_ENABLE_GPS=$(if $(BR2_PACKAGE_GPSD),true,false)' \
>> $(TARGET_DIR)/etc/default/yangerd
echo 'YANGERD_LOG_LEVEL=deug' >> $(TARGET_DIR)/etc/default/yangerd
endef
YANGERD_POST_INSTALL_TARGET_HOOKS += YANGERD_INSTALL_EXTRA

$(eval $(golang-package))
9 changes: 9 additions & 0 deletions src/confd/src/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -674,6 +674,15 @@ static int change_cb(sr_session_ctx_t *session, uint32_t sub_id, const char *mod
return SR_ERR_SYS;
}

/*
Send sighup to yangerd to trigger a poll of polled values.
This will make sure that there is no stale data.
*/
if (systemf("initctl -b reload yangerd")) {
EMERG("Failed reloading yangerd");
return SR_ERR_SYS;
}

AUDIT("The new configuration has been applied.");
}

Expand Down
2 changes: 1 addition & 1 deletion src/statd/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ DISTCLEANFILES = *~ *.d
ACLOCAL_AMFLAGS = -I m4

sbin_PROGRAMS = statd
statd_SOURCES = statd.c shared.c shared.h journal.c journal_retention.c journal.h avahi.c avahi.h
statd_SOURCES = statd.c shared.c shared.h journal.c journal_retention.c journal.h avahi.c avahi.h yangerd.c yangerd.h
statd_CPPFLAGS = -D_DEFAULT_SOURCE -D_GNU_SOURCE
statd_CFLAGS = -W -Wall -Wextra
statd_CFLAGS += $(jansson_CFLAGS) $(libyang_CFLAGS) $(sysrepo_CFLAGS)
Expand Down
Loading
Loading