Commit Graph
791 Commits
Author SHA1 Message Date
Mattias Walström 110c8d3fad test: lldp_admin_status: Adapt to yangerd changes 2026-06-17 11:54:25 +02:00
Mattias Walström 5e30cc842a dhcp: server_subnets: Adapt to yanger behaviour changes 2026-06-17 11:54:25 +02:00
Mattias Walström 5821d7907b test: firewall: ipv6-zone-migration: Adapt to yanger behaviour changes 2026-06-17 11:54:25 +02:00
Mattias Walström 8792eda219 test: rip_multihop: Adapt to yangerd changes 2026-06-17 11:54:25 +02:00
Mattias Walström 928f3eada9 test: ntp: client_stratum_selection: Adapt to yangerd behaviour 2026-06-17 11:54:25 +02:00
Mattias Walström 2327f88da8 test: ospf_default_route_advertise: Make test more robust
FRR can sometimes be pretty slow to actually install the route in
the kernel. Increase the timeout of must_reach.
2026-06-17 11:54:25 +02:00
Mattias Walström 7ecab6fe0c test: route_pref_ospf: Update test spec 2026-06-17 11:54:25 +02:00
Mattias Walström 1abfd00278 test: ntp_client: Update test spec 2026-06-17 11:54:25 +02:00
Mattias Walström 3edcc3cd59 test: hostname: adapt to yanger 2026-06-17 11:54:25 +02:00
Mattias Walström 5d513a693e test: ospf_point_to_multipoint: Adapt to yanger 2026-06-17 11:54:25 +02:00
Mattias Walström 6362ec5d98 test: spec: Allow to generate test specification without logical topology 2026-06-17 11:54:25 +02:00
Mattias Walström 5d8ee91d8c test: upgrade: add missing readme 2026-06-17 11:54:25 +02:00
Mattias Walström e5f1913ccc test: operational_all: Harden to catch more
- Test so the value in operational actually is correct
- Move test to last in suite to see that there are no stray
  data in operational (yangerd)
2026-06-17 11:54:25 +02:00
Mattias Walström a859f95dcd test: upgrade: Adapt to yangerd 2026-06-17 11:54:25 +02:00
Mattias Walström 4d2c9d8c35 test: route_pref_ospf: Adapt to yangerd 2026-06-17 11:54:25 +02:00
Mattias Walström 4fcc7d1247 test: ospf_unnumbered_interface: Adapt to new yangerd 2026-06-17 11:54:25 +02:00
Mattias Walström 4918a2d6a8 test: veth_delete: Adapt to new yangerd
Operational is now not instantly availible, is some lag.
2026-06-17 11:54:25 +02:00
Mattias Walström 199970fdac test: ntp_client: Adapt to new yangerd daemon 2026-06-17 11:54:25 +02:00
Mattias Walström 79c40e9bbb test: stp_basic: Stabilize test
With the new yangerd it failed 100% of the times, but it could fail
before as well, but that whould be very rare. Wait until operational
has been updated.
2026-06-17 11:54:25 +02:00
Mattias Walström 0fcf28d98d tests: Adapt to new yangerd 2026-06-17 11:54:25 +02:00
Mattias Walström 1995b6b34c test: syslog: property_filter: Adapt to changes required by yangerd
The test got an unexpected input in one of its logs:

'May 22 11:18:32 test-00-03-00 yangerd[3677]: SIGHUP: triggering immediate re-poll'
limit the string grepping for to be more exact.
2026-06-17 11:54:25 +02:00
Mattias Walström 0800bc5e94 test: upgrade: Add adaptions needed for yangerd 2026-06-17 11:54:25 +02:00
Mattias Walström 5a99a4d022 test: upgrade: Add adaptions needed for yangerd
Specially the change:
`
-            oper = target.get_dict("/system-state/software")
+            oper = target.get_dict("/ietf-system:system-state/software")
`
i feel is strange, since only the backend for sysrepo has changed, but the
new syntax is actually correct, unsure why it has worked before.
2026-06-17 11:54:25 +02:00
Mattias Walström 2567014452 test: iface_enable_disable: Simplify test 2026-06-17 11:54:25 +02:00
Mattias Walström 1a88164834 test: wireguard_roadwarrior: Adapt to the new polled world in yangerd 2026-06-17 11:54:25 +02:00
Mattias Walström de8d074cb9 yangerd: fix stp status 2026-06-17 11:54:25 +02:00
Mattias Walström 5884a7f6fb test: usb: adapt to new yangerd 2026-06-17 11:54:25 +02:00
Mattias Walström 6c12b30383 test: containers: host_commands/test.py: Adapt to new yangerd
Slightly slower to detect changes
2026-06-17 11:54:25 +02:00
Mattias Walström 7a28d5b509 test: case: ntp: Adapt tests for polled yangerd 2026-06-17 11:54:25 +02:00
Mattias Walström 389695c826 test: dhcp: server_subnets: Add longer timeout for polling
This since NTP status is polled in yangerd.
2026-06-17 11:54:25 +02:00
Mattias Walström 262d2b1796 test: firewall: Make tests more robust 2026-06-17 11:54:24 +02:00
Mattias Walström 59402fa83f test: system: Make tests more robust 2026-06-17 11:54:24 +02:00
Mattias Walström fd4c82735a firewall: simplify 2026-06-17 11:54:24 +02:00
Ejub ŠabićandGitHub 0c6d96f8a9 Merge pull request #1537 from saba8814/fix/flaky-dhcp-option-121-test
fix: flaky dhcp option 121 test
2026-06-16 11:50:03 +02:00
Ejub Sabic 473cda35bb fix: flaky dhcp option 121 test
This commit increases attempts on checks in this particular test from default 10 to 60.
This has been introduced to match worst case scenario where after 3 retries(5s) each dhcp waits 30 seconds before next 3 retries.
Commits yields to much more stable test behaviour.

Resolves: #1515

Signed-off-by: Ejub Sabic <ejub1946@outlook.com>
2026-06-16 08:39:40 +02:00
Joachim WibergandGitHub 227f1290fd Merge pull request #1457 from kernelkit/web 2026-06-15 22:58:44 +02:00
Joachim Wiberg f5c549f669 test: Add test for login flow in WebUI
Verify:

 - Unauthenticated GET /  -> 303 to /login
 - Bad-password rejection -> no session is created
 - Session cookie is flagged HttpOnly
 - Authenticated GET /interfaces -> 200
   - with htmx-config meta tag check
 - State-changing POST without CSRF token -> 403
 - POST with X-CSRF-Token header -> succeeds
 - After logout the session no longer grants access

The cookie-preserving WebUI helper class also folds in the IPv6
link-local zone-id workaround (re-encode %25 back to %) that
infamy.restconf already uses.

Signed-off-by: Mattias Walström <lazzer@gmail.com>
2026-06-15 21:02:16 +02:00
Mattias WalströmandGitHub ff96401ce2 Merge pull request #1530 from saba8814/test/xpath-coverage-heatmap
Added support for xpath coverage report generation
2026-06-15 16:50:38 +02:00
Ejub Sabic 9853e08145 test: Added xpath coverage report generation (make test)
This commit introduces xpath coverage test report. It plugs into transport layer of test system and generates .md report.
Commit also introduces "make xpath-coverage-report" used to generate pdf out of md.

Resolves: #581
Signed-off-by: Ejub Sabic <ejub1946@outlook.com>
2026-06-15 12:26:51 +02:00
Joachim Wiberg f8f73b89cb statd: extend mount-points + advertised pmds per interface
- Include /run and /tmp in mount-points, likely more interesting than /.
- Include advertised link modes in operational to compare with supported

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-14 18:28:22 +02:00
Richard Alpe 76c314a23a test: render PDF report via 9pm report.py
The test-report target fed a pre-baked report.adoc to asciidoctor-pdf.
Let 9pm's report.py, the author of result.json, both generate and
render the report instead.  It is invoked with Infix's own theme, fonts
and logo so the output is unchanged; downstream projects need only
override LOGO to rebrand it.

Signed-off-by: Richard Alpe <richard@bit42.se>
2026-06-12 15:38:24 +02:00
Richard Alpe 187c19639f Bump 9pm submodule
Signed-off-by: Richard Alpe <richard@bit42.se>
2026-06-12 15:38:22 +02:00
Ejub Sabic a2f57bdd4d doc: add missing test doc for container basic test
Signed-off-by: Ejub Sabic <ejub1946@outlook.com>
2026-06-09 08:58:18 +02:00
Joachim Wiberg 5286c16480 test: infamy: add optional argument to rpc/actions
For example setting DUT date-time using ietf-system RPC.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-04 13:35:02 +00:00
Mattias Walström 8e5d49665b test: Remove function put_config_dict and convert tests to use put_config_dicts
This fix #1237
2026-06-02 16:59:28 +02:00
Joachim Wiberg 65eb4c072a cli: tighten 'show interface' detail-view alignment
The Ethernet packet/RMON counters at the bottom of 'show interface
<name>' were appended with a wider label column than the operational
data above them, breaking visual alignment.  Group them under an
"Ethernet Statistics" section heading (Decore.title), same convention
as 'Available Networks' in the wifi scan view.

Narrow the operational-data label column from 20 to 19 chars so the
title bar exactly matches the heading text — a tighter and more
deliberately aligned look.  All labels in pr_iface fit within 19
chars except 'lacp system priority' (20); rename it to 'lacp sys
priority' for consistency with the other 'lacp ...' labels (lacp
aggregate id, lacp partner mac, ...) so the new field width works
universally.

Refresh CLI snapshots and doc samples to match.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-05-27 20:53:30 +02:00
Joachim Wiberg 7fa141178f cli: layered show interface, IEEE 802.3.2-2025 ethernet model
Import ieee802-ethernet-interface@2025-09-10.yang, from IEEE 802.3.2-2025,
and companion ieee802-ethernet-phy-type.yang, replacing the 2019 revision.
Operational interface speed moves to ietf-interfaces:speed, RFC 8343,
eth:speed is now obsolete.  Bump infix-interfaces.yang revision to track
the upgrade.

The CLI 'show interface' command renders interfaces as bottom-up layered
protocol rows.  Ethernet interfaces a new IEEE link-mode row (1000baseT,
10GbaseLR, ...) is added with 'duplex: full|half' in the DATA column.
Without link the ethernet row is the first row.  Tunnels and wifi follow
the same layering: gre/vxlan rows carry remote:/vni: tokens with optional
ethernet sub-row for the L2-bearing variants; wifi rows carry 'station' or
'access-point' ssid:, signal:, stations: tokens.

admin@bpi-76-8f-c2:/> show interface
⚑ INTERFACE   PROTOCOL      STATE       DATA
⇅ lo          loopback      UP
              ipv4                      127.0.0.1/8 (static)
              ipv6                      ::1/128 (static)
⇅ br0         bridge        DOWN
  │           ethernet                  32:2e:3f:76:8f:c2
  │           ipv4                      192.168.0.1/24 (static)
⇅ ├ lan0      bridge        LOWER-DOWN
⇅ ├ lan1      bridge        LOWER-DOWN
⇅ ├ lan2      bridge        LOWER-DOWN
⇅ └ lan3      bridge        LOWER-DOWN
⇅ gre0        gre           UP          remote: 198.51.100.7
              ipv4                      10.255.0.1/30 (static)
⇅ sfp1        ethernet      DOWN        ca:59:f0:77:80:5b
⇅ wan         1000baseT     UP          duplex: full
              ethernet                  32:2e:3f:76:8f:c2
              ipv4                      192.168.0.235/24 (dhcp)
              ipv6                      fe80::302e:3fff:fe76:8fc2/64 (link-layer)
⇅ wan.10      vlan          UP          vid: 10
  │           ipv4                      10.0.10.1/24 (static)
  └ wan
⇅ wan.10.20   vlan          UP          vid: 20
  │           ipv4                      10.0.10.20/28 (static)
  └ wan.10
⇅ wifi0       wifi          UP          station ssid: corp-net signal: good
              ethernet                  dc:a6:32:00:11:22
              ipv4                      192.168.7.42/24 (dhcp)

yanger populates phy-type and pmd-type from a static ETHTOOL link-mode
identity table keyed on (port, speed, duplex).  Both leaves are populated
for unambiguous media (copper, DAC, copper-T); for generic fiber where
the (port, speed, duplex) tuple can map to multiple PMDs (SR vs LR vs
ER, etc.) only the phy-type family identity is emitted — guessing the
PMD would be misleading.  cli_pretty prefers pmd-type (specific) and
falls back to phy-type (family) for display.

yanger also emits ietf-interfaces:speed and fixes a long-standing
'auto-negotation' typo (yanger had never matched ethtool's correctly-
spelled JSON field, so operational auto-negotiation always read
'unknown').

Filling the WG's gap on fixed-speed config
------------------------------------------

IEEE Std 802.3.2-2025 obsoleted the eth:speed leaf without providing a
config-true replacement; the standards-correct way to express what
older Infix configurations called 'fixed speed' is to restrict the set
of PMDs auto-negotiation may advertise.  Augment auto-negotiation with
two leaf-lists:

  auto-negotiation/advertised-pmd-types  config-true,  leaf-list of pmd-type
  ethernet/supported-pmd-types           config-false, leaf-list of pmd-type

Pinning a port to a single mode is now expressed as a single-entry
advertised-pmd-types list.  The kernel-supported set is exposed as
operational state for diagnosis — SFP/SFP+ cages report the inserted
module's capabilities, narrowing the list to a single PMD when the
optic only supports one mode (as suggested by @wkz in PR review).
When the supported list collapses to a single entry, yanger uses it
to refine the operational pmd-type leaf — more accurate than the
(port, speed, duplex) lookup for fiber.

confd C apply path (src/confd/src/ieee802-ethernet-interface.c)
translates each advertised pmd-type identity to the corresponding
ETHTOOL_LINK_MODE_*_BIT_*, ORs them into a mask, and emits
'ethtool --change <if> autoneg on advertise 0x<mask>'.  An empty
list keeps the historical default of advertising every supported
mode.  The (legacy) 'auto-negotiation/enable = false' + speed/duplex
branch is removed — it has no model representation any more.

cli_pretty's detail view gains 'advertised' and 'supported' rows
listing the PMDs in each set.  A new _pr_label_list() helper unifies
multi-row rendering across these new rows and the pre-existing
ipv4/ipv6 address rows.

The detailed interface view also gains a 'link mode' row carrying the
pmd-type / phy-type-derived label.

Migration of existing startup configurations
--------------------------------------------

Bump confd version 1.8 → 1.9 to trigger the migration on upgrade.
share/migrate/1.9/10-ethernet-advertise.sh translates old configs of
the form

  ethernet { auto-negotiation { enable false; } speed S; duplex D; }

into

  ethernet { auto-negotiation { advertised-pmd-types [PMD]; } duplex D; }

mapping (S, D) → PMD via a static lookup covering the copper-T speeds
the deprecated speed leaf historically supported (10/100/1000/2.5G/
5G/10G).  Interfaces that don't disable auto-negotiation, or that
lack a speed leaf, are passed through untouched.

Closes #530
Closes #805

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-05-27 20:53:29 +02:00
Richard Alpe bcc2df7e20 statd: yanger: stop overwriting infix-containers 'command' leaf
The 'command' leaf is config, with a strict pattern that doesn't allow
'&', quotes or pipes.  Yanger was populating it from podman's full,
untruncated container command -- so any container whose entrypoint
uses shell metacharacters (e.g. sh -c "... && ...") failed YANG
validation.

The symptom: every operational read of /infix-containers:containers
returns SR_ERR_INTERNAL, which in turn fails the whole get-data on
the operational datastore.  This breaks case/misc/operational_all and
any RESTCONF/NETCONF read that touches containers.

This was introduced in 59028c4 ("Fix #1466: 'show container' shows no
output"), which added the operational, pattern-less 'cmdline' leaf
but left the old 'command' assignment in place.  Drop it -- 'cmdline'
already carries the full command line, and 'command' belongs to
running config.

Note: the failure can look intermittent across test runs because
podman storage is persistent.  It only triggers once a container with
a bad-pattern command ends up in 'podman ps -a', including stale or
exited leftovers from earlier runs.

Signed-off-by: Richard Alpe <richard@bit42.se>
2026-05-19 19:49:29 +02:00
Richard Alpe 5e6183eb4f Bump 9pm submodule
Signed-off-by: Richard Alpe <richard@bit42.se>
2026-05-12 11:49:45 +02:00
Joachim Wiberg 6aed1f7df4 confd: add support for static ARP and neighbor cache
Add support for static ARP (IPv4) and neighbor cache (IPv6) entries per
interface.  Static entries are installed as permanent kernel neighbor
table entries that are never evicted by normal ARP/NDP aging.

Fixes #819

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-04-30 11:08:00 +02:00