Skip to content

Yangerd - #1536

Draft
mattiaswal wants to merge 73 commits into
mainfrom
yangerd
Draft

Yangerd#1536
mattiaswal wants to merge 73 commits into
mainfrom
yangerd

Conversation

@mattiaswal

Copy link
Copy Markdown
Contributor

Description

Checklist

Tick relevant boxes, this PR is-a or has-a:

  • Bugfix
    • Regression tests
    • ChangeLog updates (for next release)
  • Feature
    • YANG model change => revision updated?
    • Regression tests added?
    • ChangeLog updates (for next release)
    • Documentation added?
  • Test changes
    • Checked in changed Readme.adoc (make test-spec)
    • Added new test to group Readme.adoc and yaml file
  • Code style update (formatting, renaming)
  • Refactoring (please detail in commit messages)
  • Build related changes
  • Documentation content changes
    • ChangeLog updated (for major changes)
  • Other (please describe):

@mattiaswal mattiaswal added the ci:main Build default defconfig, not minimal label Jun 12, 2026
@mattiaswal
mattiaswal force-pushed the yangerd branch 3 times, most recently from 3ec2747 to 71d50ea Compare June 19, 2026 09:38
@mattiaswal
mattiaswal force-pushed the yangerd branch 2 times, most recently from baea038 to 646aa70 Compare August 14, 2026 08:03
RAUC downloads the upgrade bundle to /tmp (tmpfs) before installing.
With a ~175 MB bundle, a 384 MB DUT runs out of memory mid-upgrade and
the OOM killer takes out random daemons.  Bump to 512 MB.

Signed-off-by: Mattias Walström <lazzer@gmail.com>
Talk chronyd's native monitoring protocol over its Unix command
socket instead of forking chronyc four times per poll and parsing CSV.
Typed replies via github.com/facebook/time/ntp/chrony.  The Unix
socket, not UDP, is required for serverstats (PERMIT_AUTH in chronyd).

Also fixes three bugs in the CSV parsing:

 - packet-sent/packet-sent-fail actually reported chrony's
   authenticated and interleaved packet counters; chronyd does not
   count sent packets, so drop them
 - clock-refid truncated the sync source address to four characters
   ("192."); now the full IPv4 address, the numeric refid for IPv6
   (as a JSON number, the uint32 union member libyang accepts), or
   the pseudo-IP for non-printable refids like the local reference
 - a stopped chronyd could leave a phantom {"port": ...} subtree
   from the ss listening-port probe

Signed-off-by: Mattias Walström <lazzer@gmail.com>
Replace the yanger pmc-based collector with a native monitor talking
the PTP management protocol on each ptp4l instance's Unix socket.
Reactive rather than polled: SUBSCRIBE_EVENTS_NP makes ptp4l push port
state changes, per-sync-cycle time status, and parent data set changes;
the near-static data sets refresh on a slow timer that also renews the
subscription.  Queries are served from the cached tree, no forking pmc.

Management requests carry the instance's transportSpecific nibble;
without it ptp4l silently drops them on gPTP (802.1AS) instances.

Signed-off-by: Mattias Walström <lazzer@gmail.com>
Dynamic entries were baked into the generated ipset XML to survive the
firewalld reload triggered by configuration changes.  But the reload is
asynchronous to the add/remove action handlers: an entry removed while
a reload was in flight came back when the reload restored the XML, and
could then never be removed again -- the shadow file no longer listed
it, so the remove action rejected it, and firewalld refused re-adding.

Generate the XML with static entries only and have the firewalld reload
hook re-apply dynamic entries from the shadow files once the reload has
completed.  The shadow files are updated synchronously by the action
handlers, so a remove racing the reload stays removed and an add racing
it is re-applied.

Never seen on main only because operational reads via yanger were slow
enough to keep clients out of the reload window; with yangerd the
firewall/address-set regression test hit it every run.

Signed-off-by: Mattias Walström <lazzer@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:main Build default defconfig, not minimal

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant