Commit Graph
1005 Commits
Author SHA1 Message Date
Joachim Wiberg d28fff67f2 confd: work around limited client-id handling in udhcpc
Fixes #899

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:56:40 +01:00
Joachim Wiberg 3c1e9f3199 confd: reduce dhcp-server to minimal scope
- dnsmasq:
   - allow listening to all interfaces again to serve DHCP leases
   - disable most of the default DHCP options, keep broadcast and
     netmask because when dnsmasq can infer these they are better
     than breaking networking for clients -- note, they can still
     be overridden from global/subnet/host scope -- and for relay
     setups they need to be supplied anyway
 - confd:
   - drop per-interface dnsmasq, although practical for many use-cases,
     having a per-subnet focused server means improved integration with
     future stand-alone dhcp relay setup
   - implement suggested, simplified, yang model

Fixes #703

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:56:28 +01:00
Joachim Wiberg 5ee78e28ad confd: add support for setting fqdn hostnames
The hostname leaf in ietf-system.yang defines it as an fqdn.  This patch
adds support for splitting the host and domain parts to set them in
Linux according to hosts(5).

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:55:35 +01:00
Joachim Wiberg bcfd3d4a5b confd: dhcp-client hostname option fixes
A DHCP client should be able to request a DHCP server assigned hostname,
*and* advertise its current hostname (as a client-id).  This change lets
the client do either, instead of always assuming the latter.

Alt 1)
     option id:hostname                        => request hostname

Alt 2)
     option id:hostname, value:<STRING | auto> => advertise hostname

This also fixes a bug where the hostname sent to the server could be the
old hostname.  The fix picks up any new hostname directly from sysrepo.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:55:35 +01:00
Joachim Wiberg f86f184783 confd: rename dhcp-client option name -> id
For consistency with the new dhcp-server model, which has an option
value 'name', options are now referred to as id's or identifiers.

This means bumping the confd syntax version 1.3 -> 1.4 and adding a
migration script for existing dhcp-client configuration files.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:55:35 +01:00
Stefan SchlosserandJoachim Wiberg 60f459687c Add support for DHCP server/relay
This patch introduces a new yang yang model for DHCP server and relay,
using dnsmasq to provide the functionality on a per-interface basis.

Available DHCP options will be queried by confd on startup and can
then be configured in a flexible manner.

The DHCP option 82 feature has been realized by patching dnsmasq
(see patches/dnsmasq/2.90/0000-relay-agent-info.patch).

Signed-off-by: Stefan Schlosser <sgs@grmmbl.org>
2025-01-31 13:55:35 +01:00
Joachim Wiberg 455c384164 confd: initial yang model for dhcp server
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:55:35 +01:00
Joachim Wiberg 1fef35f77c confd: silence lldpcli errors in log when lldpd is disabled
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:55:35 +01:00
Joachim Wiberg 8bc389987c confd: skip password node in operational data if locked/empty pwd
Skip the password node in operational data for entries that have locked
or empty password, otherwise the YANG validation (regexp) will fail.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:55:35 +01:00
Joachim Wiberg ee56ebc205 libsrx: replace sr_get_item() with sr_get_node()
The sr_get_item() function logs an error: "No data found for ..." in
case the referenced XPatjh does not exist, causing unnecessarily scary
log message about missing genkey elements in /ietf-keystore:keystore/

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:55:35 +01:00
Joachim Wiberg b010ad04bf cli: fix "show ntp" command when ntp is not enabled
Instead of 'show ntp' =>

    Error, top level "ietf-system:system-state" missing

Try something nicer:

    NTP client not enabled.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:55:35 +01:00
Joachim Wiberg 4a37369750 yanger: add HOST.read_multiline() methods + missing file encoding
Similar to the run_multiline() method, sometimes files contain more than
one line and a common read_multiline() quickly becomes useful.  This is
currently only used by ietf-system for reading /etc/resolv.conf.head.

Also, fix pylint warning for missing encoding to all open() calls.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:55:35 +01:00
Joachim Wiberg 7af75c0786 yanger: fix, no such argument 'file' to LOG.warning()
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:55:35 +01:00
Mattias Walström a64c9695cc Fix issue with storing authorized SSH key to startup
The problem was that the sysrepo callback was never called,
except on update (not availible on startup)

This fix #777
2025-01-30 15:32:59 +01:00
Jon-Olov Vatn 267c8e0103 Fix #787 Add doc on Mgmt via Console (and SSH and Web)
- Updating SSH information
- Adding Web services information (general, RESTCONF and Web Console)
- Adding Console information
  Generic info, and some updates w.r.t specific boards (baudrate, etc)
2025-01-29 12:27:48 +01:00
Tobias WaldekranzandGitHub be0edc00cc Merge pull request #913 from kernelkit/fix-bug-in-test-mode
Fix error when running 251+ reconfigurations (in test-mode)
2025-01-27 20:34:17 +01:00
Mattias Walström 2a3fcbacd0 Fix error when running 251+ reconfigurations (in test-mode)
The context was aquired but never released, this caused a lockup
in sysrepo.

This fix #861
2025-01-27 15:12:11 +01:00
Mattias Walström 5c9cf276df infix-services: ssh: add must expression on listen
Both address and port is required.
2025-01-27 14:14:24 +01:00
Mattias Walström 76203b392a infix-system.yang: Add proper documentation about SSH listen command 2025-01-27 14:14:24 +01:00
Tobias Waldekranz 986a28c891 confd: Avoid managing a finit user condition to start/stop mstpd
By declaring the service as manually configured, we can control it
from dagger (confd) without the indirection via a condition.

This has the benefit of mstpd being in the "stopped", rather than the
somewhat confusing "waiting", state when not running.

Fixes #890
2025-01-24 14:52:25 +01:00
Tobias Waldekranz f9dacaa0ff klish-plugin-infix: Add show bridge stp 2025-01-24 14:52:25 +01:00
Tobias Waldekranz 8f6a75806f yang: Add STP hello-time
This was an oversight in the original model, but was noticed in
review.
2025-01-24 14:52:25 +01:00
Tobias Waldekranz 05cb07c0ec cli_pretty: Add per-port status to show bridge stp 2025-01-24 14:52:25 +01:00
Tobias Waldekranz d6ace7cc73 cli_pretty: Add bridge-wide status to show bridge stp 2025-01-24 14:52:25 +01:00
Tobias Waldekranz 9ef6d2d038 yang: Remove old STP port state from operational 2025-01-24 14:52:25 +01:00
Tobias Waldekranz c1e6f0c53b yanger: Provide per-port STP state 2025-01-24 14:52:25 +01:00
Tobias Waldekranz 0e82c108bc yanger: Provide bridge-wide STP state 2025-01-24 14:52:25 +01:00
Tobias Waldekranz 9427b6a655 yanger: Generalize converting time deltas to YANG dates
Make sure that we have one way of getting from Python's native
datetime to a YANG compatible format.
2025-01-24 14:52:25 +01:00
Tobias Waldekranz 6a09e2c797 yang: Define operational data model for per-port STP state 2025-01-24 14:52:25 +01:00
Tobias Waldekranz 3b0b38360c yang: Define operational data model for bridge-wide STP state 2025-01-24 14:52:25 +01:00
Mattias Walström 3f8fae2f16 cli-pretty: show-interfaces: Refactor protocol type
now will *only* ethernet interfaces be protocol ethernet,
gretap will be protocol gretap and so on.
2025-01-24 10:56:58 +01:00
Mattias Walström 70bcebc451 yanger: Add oprational information about vxlan interfaces 2025-01-24 10:56:58 +01:00
Mattias Walström 10add98d90 yanger: Fix bug when collecting data 2025-01-24 10:56:58 +01:00
Ahmed KaricandGitHub 370920e931 Merge pull request #882 from kernelkit/lldp-tx-interval
confd: Enable config for lldp tx interval
2025-01-23 14:45:48 +01:00
Ahmed Karic ee441e172d confd: LLDP upgrade to support per-port admin-status
This update enhances the LLDP configuration by enabling per-port
administration through the `admin-status` parameter. Users can now
individually enable or disable LLDP operation on specific ports.

Fixes #578
2025-01-23 13:16:40 +01:00
Tobias WaldekranzandGitHub 5e90bde8b9 Merge pull request #903 from kernelkit/yanger-missing-container-iface-fix
yanger: Handle the case when a container interface can not be found
2025-01-22 21:55:05 +01:00
Mattias Walström 4598585d4a confd: Fix memory leaks in ietf-keystore and ietf-syslog 2025-01-22 15:05:48 +01:00
Tobias Waldekranz c2959cf41e yanger: Handle the case when a container interface can not be found
Due to #902 (which has not been root caused at this time), podman may
indicate the existance of an interface that yanger is not able to
locate in any namespace. Therefore, make sure that we verify that the
interface was actually found before trying to create the operational
data for it.
2025-01-22 14:11:37 +01:00
Tobias WaldekranzandGitHub a640460baf Merge pull request #895 from kernelkit/yanger
Yanger Interfaces Refactor
2025-01-22 10:27:44 +01:00
Tobias Waldekranz 5d6180a395 yanger: Improve option names and validation after review
Break up the --test parameter into either:

--capture: Write system command output to a local directory for later
           consumption by...
--replay:  Which can replay a previous capture

Rename --wrap-commands => --cmd-prefix
2025-01-22 09:44:52 +01:00
Ahmed Karic 28c0cee4e3 confd: Enable configuring LLDP tx interval
This change introduces the configuration of the tx-interval parameter
for the LLDP service, allowing control over the frequency of LLDP hello
messages. This improvement eliminates the need to toggle the interface
down and up to force the emission of LLDP packets in the test
environment.
2025-01-21 22:44:59 +01:00
Mattias Walström 72b3058774 confd: Fix memory leaks in ietf-system.c 2025-01-21 10:12:20 +01:00
Tobias Waldekranz 78b7b34799 yanger: Break up ietf-interfaces implementation into modules 2025-01-20 10:56:56 +01:00
Tobias Waldekranz e397012394 yanger: Add support for connecting to remote hosts
Allow all host commands to be run with a prefix (e.g. `ssh
user@remotehost sudo`), such that yanger can be tested against the
current state of a remote system.

If a command wrapper _and_ a test directory is specified, the output
of all commands and files are recorded for use by a future test
execution.

Example:

1. Launch a `make run` instance and setup some config for which we
   want to test yanger and cli-pretty

2. Capture the output of all commands needed to produce the data for
   some YANG model:
   `yanger -t /tmp/ifs -w "ixll -A ssh qtap1 sudo" ietf-interfaces`

3. Kill the instance (we do not need it any more)

4. Test cli-pretty using the captured state:
   `yanger -t /tmp/ifs ietf-interfaces | cli-pretty show-interfaces
`
2025-01-20 10:56:56 +01:00
Tobias Waldekranz be1b7cdf45 confd: Enable remote SSH access via IPv6 in {factory,failure}-config
The default was set to only accept connections from localhost when
connecting via IPv6. This was not caught in testing since the
test-config accepts connections from all hosts (::).

Accept connections from all hosts in all builtin configs. Inherit
test-config's service definition from factory-config, since we want
testing to be done as close as possible to what are users are running.
2025-01-17 14:33:41 +01:00
Tobias Waldekranz 41f3fe15a6 confd: Drop unsupported default-priority bridge port option 2025-01-17 14:33:41 +01:00
Mattias Walström 4782cee201 Add support for simple VXLAN tunnels
This is just a first step to add VXLAN tunnels, much more remains.
Implemented right now is as GRE, local, remote and a VNI.

Also refactor gre_basic and gre_bridged to generic tunnel tests,
the same test now tests VXLAN as well.
2025-01-14 14:31:21 +01:00
Tobias Waldekranz 547a9cd632 yanger: Remove dead code remaining after modularization 2025-01-10 10:12:22 +01:00
Tobias Waldekranz 2ec226640e yanger: Move ietf-{interfaces,routing} implementations to separate modules
Should this have been two commits: yes.

Should we spend time on splitting them after the fact because yours
truly dropped the ball: no.
2025-01-10 10:12:22 +01:00
Tobias Waldekranz a0e4e813dd yanger: Move ietf-ospf implementation to separate module 2025-01-10 09:57:40 +01:00