Skip to content
Draft

Yangerd #1536

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
51324f0
TEMP: WiP document
mattiaswal Mar 27, 2026
d04548a
TEMP: Update yanger spec
mattiaswal Mar 28, 2026
ba948b6
firewall: simplify
mattiaswal Mar 31, 2026
0f41606
test: system: Make tests more robust
mattiaswal Mar 31, 2026
82609b4
test: firewall: Make tests more robust
mattiaswal Mar 31, 2026
fface20
yangerd: Initial
mattiaswal Mar 31, 2026
a9d7352
move yanger
mattiaswal Mar 31, 2026
1e4883d
statd: Include new yangerd backend for operational
mattiaswal Mar 31, 2026
d486a22
update doc
mattiaswal Mar 31, 2026
d818f7f
Fix routing and ip addresses
mattiaswal Mar 31, 2026
abb3af5
yangerd: Continues
mattiaswal Mar 31, 2026
f06d1a1
zapi: Fix deletion of routes
mattiaswal Apr 24, 2026
a38b533
Fix interface and bridge race conditions
mattiaswal Apr 27, 2026
5f4a95a
FRR does not send delete on OSPF route change
mattiaswal Apr 28, 2026
36c165d
Fix ntp and dns status
mattiaswal Apr 28, 2026
6f0a078
test: dhcp: server_subnets: Add longer timeout for polling
mattiaswal Apr 28, 2026
e358442
test: case: ntp: Adapt tests for polled yangerd
mattiaswal Apr 28, 2026
f68a6ca
Fix containers, reactive now.
mattiaswal Apr 29, 2026
ca7174a
test: containers: host_commands/test.py: Adapt to new yangerd
mattiaswal Apr 29, 2026
2e0e719
test: usb: adapt to new yangerd
mattiaswal Apr 29, 2026
f2509ef
yangerd: Send sighup to yangerd on config change
mattiaswal Apr 29, 2026
4b7af8b
yangerd: fix stp status
mattiaswal Apr 29, 2026
ea02b08
yangerd: Add wireguard support
mattiaswal Apr 29, 2026
218a37c
test: wireguard_roadwarrior: Adapt to the new polled world in yangerd
mattiaswal Apr 29, 2026
c6c4634
test: iface_enable_disable: Simplify test
mattiaswal Apr 29, 2026
969d091
yangerd: Do not start in runlevel S
mattiaswal Apr 30, 2026
6015480
yangerd: Add backoff if ip batch work have crashed
mattiaswal Apr 30, 2026
6f4535d
yangerd: Add WiFi implementation
mattiaswal May 2, 2026
e5fb33b
yanger: Remove code duplication and fix upgrade
mattiaswal May 20, 2026
293d1db
statd: Remove old code
mattiaswal May 20, 2026
f328864
test: upgrade: Add adaptions needed for yangerd
mattiaswal May 22, 2026
a312984
test: upgrade: Add adaptions needed for yangerd
mattiaswal May 22, 2026
ebbc863
test: syslog: property_filter: Adapt to changes required by yangerd
mattiaswal May 22, 2026
0912ed5
yangerd: Add support for getting ARP neighbors
mattiaswal May 22, 2026
09bf6f7
tests: Adapt to new yangerd
mattiaswal May 22, 2026
452664b
test: stp_basic: Stabilize test
mattiaswal Jun 5, 2026
67f718c
test: ntp_client: Adapt to new yangerd daemon
mattiaswal Jun 5, 2026
ad11174
test: veth_delete: Adapt to new yangerd
mattiaswal Jun 10, 2026
4858dbe
test: ospf_unnumbered_interface: Adapt to new yangerd
mattiaswal Jun 10, 2026
ec59233
test: route_pref_ospf: Adapt to yangerd
mattiaswal Jun 10, 2026
5bcfbcb
test: upgrade: Adapt to yangerd
mattiaswal Jun 10, 2026
c4c66ad
yangerd: Add missing files
mattiaswal Jun 10, 2026
9cf8920
test: upgrade: add missing readme
mattiaswal Jun 11, 2026
eceee82
test: ospf_point_to_multipoint: Adapt to yanger
mattiaswal Jun 11, 2026
1f15df5
test: hostname: adapt to yanger
mattiaswal Jun 11, 2026
9f6d9e8
test: ntp_client: Update test spec
mattiaswal Jun 11, 2026
fa3c1a5
test: route_pref_ospf: Update test spec
mattiaswal Jun 11, 2026
c80bc40
test: ospf_default_route_advertise: Make test more robust
mattiaswal Jun 11, 2026
c2dde41
statd: Adapt to yanger keys on module:container path
mattiaswal Jun 12, 2026
320722f
yangerd: Return {} instead of 404 if no match
mattiaswal Jun 12, 2026
2e7b571
yangerd: Fix ntp and lldp status
mattiaswal Jun 12, 2026
2db63d3
test: ntp: client_stratum_selection: Adapt to yangerd behaviour
mattiaswal Jun 12, 2026
6138f95
test: rip_multihop: Adapt to yangerd changes
mattiaswal Jun 12, 2026
9ac133d
test: firewall: ipv6-zone-migration: Adapt to yanger behaviour changes
mattiaswal Jun 12, 2026
e3fcf2b
dhcp: server_subnets: Adapt to yanger behaviour changes
mattiaswal Jun 12, 2026
0ffcdf6
test: lldp_admin_status: Adapt to yangerd changes
mattiaswal Jun 12, 2026
bca662a
test: mdns_allow_deny: Adapt to yangerd behaviour changes
mattiaswal Jun 12, 2026
6dfa947
REMOVE THIS: TEMPORARY DISABLE PTP TESTS
mattiaswal Jun 12, 2026
7a7d3f2
yangerd: add missing files
mattiaswal Jun 12, 2026
eb1b881
yangerd: Add arm 32bit support
mattiaswal Jun 12, 2026
09a5c13
test: speed_duplex_coppar: Adapt to yangerd
mattiaswal Jun 12, 2026
2305dfb
test: upgrade: Make more robust using yangerd
mattiaswal Jun 14, 2026
4782717
test: dhcp: client_basic: Adapt to changes by yangerd
mattiaswal Jun 14, 2026
5d7785d
yangerd: Fix bugs with containers and boot order in CI
mattiaswal Jun 14, 2026
c973491
multicast: stream MAC sender continuously like the IPv4 sender
mattiaswal Jun 15, 2026
56b48f3
yangerd: Change containers from polled to reactive
mattiaswal Jun 17, 2026
7947b8e
yangerd: Fix containers
mattiaswal Jun 18, 2026
e771095
yangerd: containers: widen event debounce to avoid podman contention
mattiaswal Jun 20, 2026
79bb8b7
yangerd: firewall: Add support for IPsets
mattiaswal Aug 14, 2026
646aa70
test: virt: Increase RAM per virtual DUT
mattiaswal Aug 14, 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 @@ -150,6 +150,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 @@ -182,6 +182,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 @@ -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