commit 85f966a7c8c66a7335e5b6d2c1b5c969f66a2ad0
parent 3f96f73488a38e9a7e9649d4ca6689a584cb1bcb
Author: finwo <finwo@pm.me>
Date: Sun, 13 Sep 2026 03:32:19 +0200
Add NL loop, unosd package stub, vfr filtering beginnings
Diffstat:
4 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/packages/unosd/files/unosd-check b/packages/unosd/files/unosd-check
@@ -0,0 +1,3 @@
+#!/bin/sh
+# runit check interface over the ready-file mechanism.
+[ -e /run/unosd.ready ] && exit 0 || exit 1
diff --git a/packages/unosd/files/unosd-log-run b/packages/unosd/files/unosd-log-run
@@ -0,0 +1,4 @@
+#!/bin/sh
+# svlogd companion: runit captures stdout/stderr, so unosd needs no --log file
+# when supervised.
+exec svlogd -tt /var/log/unosd
diff --git a/packages/unosd/files/unosd-run b/packages/unosd/files/unosd-run
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+# unosd runit service.
+#
+# Readiness contract: unosd publishes /run/unosd.ready after its initial
+# resync (see --ready-file). frr's run script blocks on `sv check unosd`
+# so zebra never starts before the swpN netdevs exist. The daemon itself
+# defaults to no ready-file; the supervised package opts in here.
+exec unosd --ready-file /run/unosd.ready
diff --git a/packages/unosd/template b/packages/unosd/template
@@ -0,0 +1,19 @@
+# Template file for 'unosd'
+pkgname=unosd
+version=0.1.0
+revision=1
+short_desc="UNOS control plane daemon - kernel netlink mirror into the dataplane"
+maintainer="finwo <finwo@pm.me>"
+license="GPL-2.0-only"
+homepage="https://unos.finwo.dev"
+depends="runit"
+
+do_install() {
+ # TODO(phase0): wire the src/unosd build into CI so the binary lands here.
+ # The service contract (run/check/log) is fixed now; the build recipe
+ # follows with the package pipeline.
+ # vinstall ${WRKSRC}/unosd 755 usr/bin unosd
+ vinstall ${FILESDIR}/unosd-run 755 etc/sv/unosd run
+ vinstall ${FILESDIR}/unosd-check 755 etc/sv/unosd check
+ vinstall ${FILESDIR}/unosd-log-run 755 etc/sv/unosd/log run
+}