Skip to content
Draft

Yangerd #1536

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
4c13696
TEMP: WiP document
mattiaswal Mar 27, 2026
ec87d50
TEMP: Update yanger spec
mattiaswal Mar 28, 2026
fd4c827
firewall: simplify
mattiaswal Mar 31, 2026
59402fa
test: system: Make tests more robust
mattiaswal Mar 31, 2026
262d2b1
test: firewall: Make tests more robust
mattiaswal Mar 31, 2026
e0af891
yangerd: Initial
mattiaswal Mar 31, 2026
0d63840
move yanger
mattiaswal Mar 31, 2026
6d0d047
statd: Include new yangerd backend for operational
mattiaswal Mar 31, 2026
7956ca0
update doc
mattiaswal Mar 31, 2026
299146d
Fix routing and ip addresses
mattiaswal Mar 31, 2026
6e415bb
yangerd: Continues
mattiaswal Mar 31, 2026
0c7293f
zapi: Fix deletion of routes
mattiaswal Apr 24, 2026
02d52f5
Fix interface and bridge race conditions
mattiaswal Apr 27, 2026
ae3d50a
FRR does not send delete on OSPF route change
mattiaswal Apr 28, 2026
3372966
Fix ntp and dns status
mattiaswal Apr 28, 2026
389695c
test: dhcp: server_subnets: Add longer timeout for polling
mattiaswal Apr 28, 2026
7a28d5b
test: case: ntp: Adapt tests for polled yangerd
mattiaswal Apr 28, 2026
52cea0a
Fix containers, reactive now.
mattiaswal Apr 29, 2026
6c12b30
test: containers: host_commands/test.py: Adapt to new yangerd
mattiaswal Apr 29, 2026
5884a7f
test: usb: adapt to new yangerd
mattiaswal Apr 29, 2026
4dad023
yangerd: Send sighup to yangerd on config change
mattiaswal Apr 29, 2026
de8d074
yangerd: fix stp status
mattiaswal Apr 29, 2026
3c87338
yangerd: Add wireguard support
mattiaswal Apr 29, 2026
1a88164
test: wireguard_roadwarrior: Adapt to the new polled world in yangerd
mattiaswal Apr 29, 2026
2567014
test: iface_enable_disable: Simplify test
mattiaswal Apr 29, 2026
a638601
yangerd: Do not start in runlevel S
mattiaswal Apr 30, 2026
417cdf4
yangerd: Add backoff if ip batch work have crashed
mattiaswal Apr 30, 2026
a4dca08
yangerd: Add WiFi implementation
mattiaswal May 2, 2026
330601a
yanger: Remove code duplication and fix upgrade
mattiaswal May 20, 2026
85cb5d4
statd: Remove old code
mattiaswal May 20, 2026
5a99a4d
test: upgrade: Add adaptions needed for yangerd
mattiaswal May 22, 2026
0800bc5
test: upgrade: Add adaptions needed for yangerd
mattiaswal May 22, 2026
1995b6b
test: syslog: property_filter: Adapt to changes required by yangerd
mattiaswal May 22, 2026
8abe24e
yangerd: Add support for getting ARP neighbors
mattiaswal May 22, 2026
0fcf28d
tests: Adapt to new yangerd
mattiaswal May 22, 2026
79c40e9
test: stp_basic: Stabilize test
mattiaswal Jun 5, 2026
199970f
test: ntp_client: Adapt to new yangerd daemon
mattiaswal Jun 5, 2026
4918a2d
test: veth_delete: Adapt to new yangerd
mattiaswal Jun 10, 2026
4fcc7d1
test: ospf_unnumbered_interface: Adapt to new yangerd
mattiaswal Jun 10, 2026
4d2c9d8
test: route_pref_ospf: Adapt to yangerd
mattiaswal Jun 10, 2026
a859f95
test: upgrade: Adapt to yangerd
mattiaswal Jun 10, 2026
4160a98
yangerd: Add missing files
mattiaswal Jun 10, 2026
e5f1913
test: operational_all: Harden to catch more
mattiaswal Jun 11, 2026
5d8ee91
test: upgrade: add missing readme
mattiaswal Jun 11, 2026
6362ec5
test: spec: Allow to generate test specification without logical topo…
mattiaswal Jun 11, 2026
5d513a6
test: ospf_point_to_multipoint: Adapt to yanger
mattiaswal Jun 11, 2026
3edcc3c
test: hostname: adapt to yanger
mattiaswal Jun 11, 2026
1abfd00
test: ntp_client: Update test spec
mattiaswal Jun 11, 2026
7ecab6f
test: route_pref_ospf: Update test spec
mattiaswal Jun 11, 2026
2327f88
test: ospf_default_route_advertise: Make test more robust
mattiaswal Jun 11, 2026
0e1031e
statd: Adapt to yanger keys on module:container path
mattiaswal Jun 12, 2026
e74f3b1
yangerd: Return {} instead of 404 if no match
mattiaswal Jun 12, 2026
c442119
yangerd: Fix ntp and lldp status
mattiaswal Jun 12, 2026
928f3ea
test: ntp: client_stratum_selection: Adapt to yangerd behaviour
mattiaswal Jun 12, 2026
8792eda
test: rip_multihop: Adapt to yangerd changes
mattiaswal Jun 12, 2026
5821d79
test: firewall: ipv6-zone-migration: Adapt to yanger behaviour changes
mattiaswal Jun 12, 2026
5e30cc8
dhcp: server_subnets: Adapt to yanger behaviour changes
mattiaswal Jun 12, 2026
110c8d3
test: lldp_admin_status: Adapt to yangerd changes
mattiaswal Jun 12, 2026
5c88cbf
test: mdns_allow_deny: Adapt to yangerd behaviour changes
mattiaswal Jun 12, 2026
be6a02e
REMOVE THIS: TEMPORARY DISABLE PTP TESTS
mattiaswal Jun 12, 2026
efe3c04
yangerd: add missing files
mattiaswal Jun 12, 2026
9a45ad7
yangerd: Add arm 32bit support
mattiaswal Jun 12, 2026
010b18d
test: speed_duplex_coppar: Adapt to yangerd
mattiaswal Jun 12, 2026
79cdab3
test: upgrade: Make more robust using yangerd
mattiaswal Jun 14, 2026
4ff23a6
test: dhcp: client_basic: Adapt to changes by yangerd
mattiaswal Jun 14, 2026
cc54b1d
yangerd: Fix bugs with containers and boot order in CI
mattiaswal Jun 14, 2026
12d7262
test: operational_all: Try to adapt to yangerd
mattiaswal Jun 14, 2026
6db2479
test: operational_all: Poll for stuff to get removed from yangerd
mattiaswal Jun 15, 2026
5531dc5
multicast: stream MAC sender continuously like the IPv4 sender
mattiaswal Jun 15, 2026
1055b23
yangerd: Change containers from polled to reactive
mattiaswal Jun 17, 2026
3ec2747
yangerd: Fix containers
mattiaswal Jun 18, 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 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
1 change: 1 addition & 0 deletions configs/x86_64_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,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 @@ -670,6 +670,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