Commit Graph
3974 Commits
Author SHA1 Message Date
Joachim WibergandTobias Waldekranz 3dbb1759eb klish-plugin-infix: need CAP_NET_ADMIN for some data
When reading lag status, like LACP actor system prio, port key,
etc., we need CAP_NET_ADMIN.  See net/bonding/bond_netlink.c

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-02-12 23:21:08 +01:00
Joachim WibergandTobias Waldekranz d7895d5c9c confd: handle dup calls to dagger_add_dep()
Some callbacks may run twice, e.g., lag_gen_ports().  Check if the link
already exists, and is the same, then we can exit silently.  However, in
case the link exists and does *not* point to the same target, we log an
error with current target for the post mortem.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-02-12 23:21:08 +01:00
Joachim WibergandTobias Waldekranz 78499757b0 confd,statd: add support for link aggregates
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-02-12 23:21:08 +01:00
Joachim WibergandTobias Waldekranz ec2e161649 confd: add link aggregate model, lacp and static
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-02-12 23:21:08 +01:00
Joachim WibergandTobias Waldekranz 18d8c439bd confd: drop unused yang import
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-02-12 23:21:08 +01:00
Joachim WibergandTobias Waldekranz 1ca11f1fe7 statd: yanger: ignore 'podman' errors when built without containers
- Avoid unnecessary error messages in syslog when build w/o containers
 - Simplify log messages slightly

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-02-12 23:21:08 +01:00
Joachim WibergandTobias Waldekranz b70d0015a6 confd: silence any error from dagger 'ls *.tar.gz'
Do not log error if no tarballs exist.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-02-12 23:21:08 +01:00
Joachim WibergandTobias Waldekranz 6a417f2f23 package/confd: drop unnecessary conditional
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-02-12 23:21:08 +01:00
Joachim WibergandTobias Waldekranz f212f0cc16 board/common: ensure virtio ports have an initial speed/duplex
The speed/duplex of a virtio interface is not eenforced in any way.  The
driver initializes them to unknown/unkown:

https://github.com/torvalds/linux/blob/dccbe2047a5b0859de24bf463dae9eeea8e01c1e/drivers/net/virtio_net.c#L5375-L5381

It is however possible to set them since there are kernel subsystems
that rely on them, e.g., miimon in the bond driver, which in turn is
required for use with the 802.3ad (lacp) mode.

If we do not initialize speed/duplex the miimon will complain in the log
on virtual test systems every second:

Dec 13 22:34:08 laggy kernel: lag0: (slave e1): failed to get link speed/duplex

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-02-12 23:21:08 +01:00
Joachim WibergandTobias Waldekranz 01d07b4942 utils: rename sysrepo-load-modules.sh -> srload
Simplify name, follow new srop tool naming convention.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-02-12 23:21:08 +01:00
Joachim WibergandTobias Waldekranz 039cb5db74 utils: fix linter warnings, simplify, and improve log messages on update
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-02-12 23:21:08 +01:00
Joachim WibergandTobias Waldekranz 65bce0378e .github: install libite from git
Latest libite-dev in Ubuntu does not have the latest libite features
needed by confd et al.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-02-12 23:21:08 +01:00
Ahmed Karic 91cef6d57b doc: Provide remaining mappings for eth-counters
[skip ci]

Fixes #770
2025-02-12 13:53:09 +01:00
Ahmed KaricandGitHub f3da31b18c Merge pull request #931 from kernelkit/verify-lldp
Verify LLDP administrative states
2025-02-12 12:41:54 +01:00
Ahmed Karic af1f173497 test: Verify LLDP admin status 2025-02-12 10:41:46 +01:00
Ahmed Karic 14fede3e56 statd: Add LLDP operational data retrieval
Enable statd to fetch LLDP neighbor data via lldpcli for verifying
LLDP admin status. Currently, only chassis ID and chassis ID subtype
are retrieved.
2025-02-12 10:41:46 +01:00
Tobias WaldekranzandGitHub d3bfbb57b6 Merge pull request #937 from kernelkit/update-kernel
Update linux kernel to 6.12.13 (LTS)
2025-02-11 21:58:00 +01:00
Tobias Waldekranz 3203ee925a confd: Add missing interface type for loopback 2025-02-11 20:37:03 +01:00
Tobias Waldekranz fae1265587 confd: Refactor custom-phys-address setup
The management of custom-phys-address was made more complicated by the
fact that physical interfaces require restoring the permanent address
when a custom setting is removed.

Simplify this by moving the restoration to the delete path, so we only
have to worry about if there is a custom mac or not during interface
setup.

Also:
- Fix some legacy naming on *_gen() functions
- Fix custom-phys-address on dummy interfaces
2025-02-11 20:37:02 +01:00
Tobias Waldekranz 97f3db8fdb confd: Always generate a valid interface DAG
Fix #938

Before this change, interface dependencies were only setup when
interfaces were created. This led to problems in flows like this:

1.
    configure
        set interface br0
        set interface br0.10
        leave

2.
    configure
        set interface dummy0
        leave

2.
    configure
        no interface br0
        no interface br0.10
        leave

Since neither br0 nor br0.10 was created in (2), no dependencies were
setup. Because of that, when the deletion scripts from generation (2)
are generated when entering (3), dagger is free to execute them in any
order. This means that it may choose to remove br0 before br0.10,
which will mean that br0.10 is already gone when we try to remove it.

Therefore, make sure that we generate the full dependency graph on
every iteration.

Also, get rid of the need to keep on-disk state for VETH pairs, and
use the name as a descriminator for which side to create/delete.
2025-02-11 20:37:01 +01:00
Tobias Waldekranz a8b5120871 confd: Allow reconfigurations on dummy and gre interfaces
With the new iftype enum, we see that configuring an existing dummy or
gre interface types was wrongly classified as an error rather than as
a NOP.

Example, before this change, this was OK:

    configure
    set interface foo
    set interface foo ipv4 address 10.0.0.1 prefix-length 24
    leave

However, this was not:

     configure
     set interface foo
    +leave
    +configure
     set interface foo ipv4 address 10.0.0.1 prefix-length 24
     leave
    +<KABOOM>
2025-02-11 20:37:00 +01:00
Tobias Waldekranz c22339c2cd confd: Create an enumerator for interface types
This has multiple advantages:

- Less chances of typos is repeated "infix-if-type:foo" strings
  scattered throughout the code

- We can lean on GCC's `-Werror=switch` to make sure that iface
  specific logic always handles all types (which was not always the
  case - see follow-up commits)

- We can potentially create a `struct afspec_ops` in the future, which
  could then be indexed by this enum
2025-02-11 20:36:27 +01:00
Tobias Waldekranz b1830a36d4 confd: Remove unneeded nodes from the interface DAG
The only interfaces that would be in difs, but not in cifs, are
deleted interfaces. But these will be removed from the exit action of
the previous generation, and will never be referenced in the new
generation.
2025-02-11 14:46:31 +01:00
Mattias Walström 05510c5001 Upgrade Linux kernel to 6.12.13 (LTS) 2025-02-09 15:40:22 +01:00
Mattias WalströmandGitHub 343c465352 Merge pull request #935 from kernelkit/infix-crypto-types
Introduce infix-crypto-types
2025-02-08 18:19:16 +01:00
Mattias Walström 0cb2987de4 Introduce infix-crypto-types
To only show supported types, simpler when autogenerate web/cli.
2025-02-08 13:40:35 +01:00
Mattias WalströmandGitHub 7d646c9494 Merge pull request #929 from kernelkit/gh-dl-artifact
utils/gh-dl-artifact: Accept any prefix for tar.gz package
2025-02-04 20:16:52 +01:00
Mattias Walström 395b21c693 utils/gh-dl-artifact: Accept any prefix for tar.gz package
When brandlabling this may not be infix-, rather vendor-,
 use *- for now.
2025-02-04 19:36:57 +01:00
Richard AlpeandGitHub 6ef3ad9020 Merge pull request #915 from rical/fix-history-in-gh-actions
Fix history in GitHub actions
2025-02-04 15:00:44 +01:00
Tobias WaldekranzandGitHub a608c4a36d Merge pull request #928 from kernelkit/update-generate-defconfig
generate-defconfig.sh: Allow to have multiple change configurations
2025-02-04 14:24:37 +01:00
Richard Alpe e48da5bb21 Bump 9pm submodule
Signed-off-by: Richard Alpe <richard@bit42.se>
2025-02-04 09:40:16 +01:00
Richard Alpe f389a1f087 .github: don't shallow-clone main project
The test report needs to lookup the last tag.

Signed-off-by: Richard Alpe <richard@bit42.se>
2025-02-04 09:40:11 +01:00
Tobias WaldekranzandGitHub 84521ea9b5 Merge pull request #927 from kernelkit/qemu-speedup 2025-02-03 21:57:45 +01:00
Mattias Walström 4ba43e2ddd generate-defconfig.sh: Allow to have multiple change configurations
Example: one common.conf and one arch-specific config
2025-02-03 20:19:27 +01:00
Joachim Wiberg 3606bc05cf board/common: use fast pointer authentication emulation for aarch64
Pointer authentication emulation is expensive.  By default, QEMU use the
standard cryptographic algorithm (QARMA5), which is very time consuming.

This commit switches to the fast implementation.

[skip ci]

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-02-03 16:06:19 +01:00
Mattias WalströmandGitHub 5e89d8ef3e Merge pull request #887 from kernelkit/dhcp-server
Add basic DHCP server support
v25.01.0
2025-01-31 15:11:07 +01:00
Joachim Wiberg 028fc578b1 doc: update changelog, dhcp server support
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:56:40 +01:00
Joachim Wiberg 52e957d47f doc: add documentation for DHCPv4 server
Fixes #798

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:56:40 +01:00
Joachim Wiberg 95cfcaa2fe confd: refactor dhcp server counters
Counters should follow the format from ieee802-ethernet-interface
model, which use:

 - in/out for Rx/Tx
 - plural from

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:56:40 +01:00
Joachim Wiberg 340330b75b confd: refactor dhcp client/server modeling of client-id
Instead of encoding hex data in regular strings, using an 'id:' prefix,
or guessing based on pattern in C code, we have decided for a breaking
change in the DHCP client model.

This commit introduces string and hex values for client-id in the models
for both DHCP client and server.  The *breaking* part of the changes are
strictly related to how a user pass binary data as colon-separated hex
digits.  The dedicated leaf node `client-id` is now reserved for string
values and the generic `list option` can be used to input user defined
string or hex values.  Even non-conformant client-id options can now be
encoded.  All described in detail in infix-dhcp-client.yang

The server model has been updated to be able to send generic options in
hex format, and the static host lease matcher for client-id now require
a 'str' or 'hex' modifier.

Note: dnsmasq is RFC compliant and will not match non-conforming option
      61 (client-id) even though the client can send such payload.

To increase test coverage, the server_host test has been updated to
check both string and hex client-id.  Matching on hostname is already
covered by other test(s).

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:56:40 +01:00
Joachim Wiberg af8a90d651 confd: remap legacy dhcp client options to consolidated options
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:56:40 +01:00
Joachim Wiberg ee44da6272 confd: consolidate dhcp options between client and server
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:56:40 +01:00
Joachim Wiberg a5aba02ddd cli: handle case when dhcp server is not active
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:56:40 +01:00
Joachim Wiberg cb73ddf6bf test: update unit test with DNS resolver operational data
With support for dns resolver in place, the ietf-system output needs to
be complemented with additional data collected from both the dnsmasq and
openresolv subsystems.

System date taken from 'client3' in the Infix DHCP server-subnets test.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:56:40 +01:00
Joachim Wiberg e45fcfca41 test: new test, verify DHCP server with multiple subnets
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:56:40 +01:00
Joachim Wiberg 27dae1edf0 Add support for DNS resolver operational data
Example status output:

    "infix-system:dns-resolver": {
      "options": {
        "timeout": 3,
        "attempts": 5
      },
      "search": [
        "example.com",
        "foo.com"
      ],
      "server": [
        {
          "address": "1.2.3.4",
          "origin": "static"
        },
        {
          "address": "192.168.2.1",
          "origin": "dhcp",
          "interface": "e5"
        }
      ]
    }

Fixes #510

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:56:40 +01:00
Joachim Wiberg d1e1c9ad33 test: new test, verify static dhcp host leases
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-01-31 13:56:40 +01:00
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 62d539c424 test: new test, verify basic dhcp server
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