Commit Graph
465 Commits
Author SHA1 Message Date
Joachim Wiberg 4522d9f217 package/netd: rename NETD_FRR to NETD_FRR_GRPC, select FRR_GRPC
Rename BR2_PACKAGE_NETD_FRR to BR2_PACKAGE_NETD_FRR_GRPC to match the
naming convention of the other FRR backends (VTYSH, CONF) and make the
intent self-evident.

Have the gRPC backend select BR2_PACKAGE_FRR_GRPC so FRR is built with
gRPC support when — and only when — this backend is chosen.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-26 13:43:40 +01:00
Joachim Wiberg 4a31df1059 netd: add vtysh -b backend
This is a simpler approach than both grpc and watchfrr.  Since we only
really need dynamic handling of static routes (for DHCP), we can track
changes made and maintain a "diff engine" for the resulting frr.conf.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-24 06:59:32 +01:00
Joachim Wiberg 965906e2ff netd: add support for frr.conf backend with waitfrr service
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-24 06:59:31 +01:00
Joachim Wiberg 949f43853d package/finit: bump to 4.16-rc1
Drop backported fixes.

Details at https://github.com/finit-project/finit/releases/tag/4.16-rc1

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-24 06:59:31 +01:00
Joachim Wiberg 0e21dc894b package/finit: backport fixes from upstream
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-24 06:59:28 +01:00
Mattias WalströmandJoachim Wiberg f187fee89b package: Add python-spy
You can use it to inspect python applications, to inspect
executiontime.
2026-02-24 06:59:28 +01:00
Mattias WalströmandJoachim Wiberg 8c9e36ba5d Upgrade FRR to 10.5.1
This includes adding a netd-daemon since FRR has gone towards all
daemons should be configured from mgmtd using YANG, netd uses gRPC to
reconfigure in mgmtd

Signed-off-by: Enable grpc
2026-02-24 06:59:07 +01:00
Joachim Wiberg 867239c7b8 package/feature-gps: new feature package
Enable gpsd and override package defaults to integrate in Infix.

 - Sync with rules disabled downstream in Debian project to prevent
   clashes with common vendor/device ids used for other device types
 - Start gpsd instance with '-n' to ensure /dev/shm is udpated for chrony

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-08 16:37:54 +01:00
Joachim WibergandGitHub fe56591d8d Merge pull request #1379 from kernelkit/copilot/add-infix-keystore-documentation
Keystore refactor and documentation

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-03 08:09:05 +01:00
Joachim Wiberg 93dfd00754 packge/klish-plugin-sysrepo: add 'change cleartext-symmetric-key'
This update brings new support for editing cleartext-symmetric-keys with
the 'change' command.  The cleartext-symmetric-key is of type binary and
its use differs between different key-formats.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-02 17:50:10 +01:00
Joachim Wiberg 98a39d989c package/klish: add support for insert-comment
Type a command, regret you typed so much before checking something else,
comment it out for later with Meta-# (Alt-Shift-3).  The whole line is
now commented out and saved to history.  Recall it later with Ctrl-P or
Up arrow, delete the leading # with Ctrl-D, and run it.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-01 10:40:44 +01:00
Joachim Wiberg 87a6637c13 bin: copy is a file, not a directory
Fixes a warning from fakeroot by adjusting the type in the permission
table.  Apparently the chown + chmod operations were always done even
though the type was wrong.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-29 17:54:54 +01:00
Joachim Wiberg 289544a299 package/feature-wifi: add support for mediatek type wifi devices
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-26 18:22:35 +01:00
Joachim Wiberg f5c6ac3905 package/klish: bump for new command line mark/kill and quote chars
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-24 18:08:30 +01:00
Joachim Wiberg 389e0c5f92 package/feature-wifi: enable more realtek dongles
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-24 18:08:30 +01:00
Joachim Wiberg 9c5707d107 bin: relocate src/show.py to bin/show/ -- all tools in one place
- relocate src/show.py to src/bin/show/
 - Refactor container() to use run_sysrepo() instead of rolling its own
 - Replace sysrepocfg with copy which supports nacm
 - Rename run_sysrepocfg() -> get_json()

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-23 06:12:21 +01:00
Joachim Wiberg 077af97e33 bin: make copy a multicall binary with new rpc interface
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-23 06:12:20 +01:00
Joachim Wiberg 7165b124a6 bin: retain sysrepo subscription in import *and* export
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-22 22:44:17 +01:00
Joachim Wiberg b58550367c sys: rename sys-cli -> sysrepo + klish
Previously the sys-cli group was for interactive shell access, but with
ever changing requirements this split has become necessary.

This commit introduces the 'sysrepo' group for low-level access to all
sysrepo commands, i.e., bootstrap only.  For user-level shell access a
'klish' group is added which allows users to connect to the CLI.  This
is now the only group users, including the default 'admin', are members
of, effectively making the new 'copy' tool the norm.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-22 22:44:14 +01:00
Joachim Wiberg c7b409304f package/finit: backport fixes to critical issues in v4.15
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-22 22:44:12 +01:00
Joachim Wiberg 77e81e60d8 package/klish: bump for new SocketGroup setting and bugfix
- The new SocketGroup setting allows for configurable /run/klishd.sock
 - Also a bug fix for async commands, needed to fix regressions in the
   klish-plugin-sysrepo commands 'change passwordk' and 'text-editor'
   after the latest upgrade to sysrepo + libyang v4

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-22 22:39:53 +01:00
Mattias Walström 79c325a7d2 klish-plugin-sysrepo: Fix when tab competion again
Some cases did not work
2026-01-19 14:54:38 +01:00
Joachim Wiberg f23b14d15e statd: backport finit patch to fix 'show services'
Service descriptions or command arguments may contain special characters
that need to be escaped in JSON strings.

Example:

{
  ...
  "command": "udhcpc -f -p /run/dhcp-client-wan.pid -t 3 -T 5 -A 30 -a1000 -S -R -o -O 1 -O 3 -O 6 -O 12 -O 15 -O 28 -O 42 -i wan -V "NanoPi R2S"",
  ...
}

Also, wrap add_services() in a try/except instead of testing for keys.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-18 23:31:45 +01:00
Mattias Walström f195a0a407 klish: followup 8a638fa26 allow when expression to depend on defaults
Did not work in some cases.
2026-01-06 20:51:32 +01:00
Joachim Wiberg 84026740eb package/klish-plugin-sysrepo: refactor nacm after sysrepo change
Upstream sysrepo commit 90ce1f7 modified sr_nacm_init() to explicitly switch
the session to SR_DS_RUNNING before initializing NACM.  This broke our klish
workflow which started sessions on SR_DS_CANDIDATE.

This commit drops the sysrepo patch that reverts that behavior in favor of
explicitly starting sessions on SR_DS_RUNNING for NACM initialization, then
switch to SR_DS_CANDIDATE for editing operations.  This works with sysrepo's
behavior: NACM reads rules from running datastore while our editing workflow
operates on candidate datastore.

Also, add prompt path shortening for deep configuration hierarchies.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-03 14:17:06 +01:00
Mattias Walström c2cfb2e1b4 feature-wifi: Add hostapd 2026-01-02 21:22:45 +01:00
Joachim Wiberg 0942313aaa package/finit: bump to v4.15
https://github.com/finit-project/finit/releases/tag/4.15

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-02 20:09:29 +01:00
Mattias Walström 2e06b667f0 klish: followup 8a638fa26 allow when expression to depend on defaults
If a when expssion depended on a default value it always got evaulated
to false.
2025-12-30 08:16:56 +01:00
Joachim WibergandGitHub 72a389ab6a Merge pull request #1336 from kernelkit/klish-add-support-for-when
klish: Do not autocomplete nodes that do not pass a when expression
2025-12-26 10:23:33 +01:00
Mattias Walström 8a638fa265 klish: Do not autocomplete nodes that do not pass a when expression
This is most noticeable in interface context

admin@infix-00-00-00:/config/interface/e1/> set type wifi
admin@infix-00-00-00:/config/interface/e1/> set
bind-ni-name         bridge-port   container-network custom-phys-address         description             enabled            ethernet

where you previously got *all* containers for all interface-types.
2025-12-24 22:05:13 +01:00
Joachim Wiberg 9d915f4bbc package/finit: bump to v4.15-rc1
- Improved cgroup support, including subgroup delegation.
 - Drop previously backported patch.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-12-18 07:26:40 +01:00
Mattias Walström 542fd4006a Bump sysrepo,lignetconf2, libyang and netopeer2
This update got pretty messy, since libyang had some
breaking changes. And unfortunatly rousette, libyang-cpp
and sysrepo-cpp has not made any new release yet.
2025-12-16 18:30:03 +01:00
Mattias Walström 0c60649c62 confd: Let rousette install its own yang models in rootfs
Previously rousette did not install the yang models so we kept a copy
of them in confd. Now it is implemented in rousette, let them install
their models.
2025-12-16 14:28:24 +01:00
Mattias Walström 0ea3380349 Upgrade python-libyang to support libyang4 2025-12-16 08:06:38 +01:00
Mattias Walström dc6abfaaae statd: Remove python-statd package
Now statd handling the rebuilding of the python libraries by using
the same script as buildroot uses for building python-packages.
2025-12-06 22:03:55 +01:00
Joachim Wiberg 1cbc9a49a2 confd: initial support for rip
Fixes #582

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-12-05 10:58:35 +01:00
Tobias Waldekranz 94f5463504 onieprom: Create proper package 2025-12-03 16:46:10 +01:00
Joachim Wiberg b0aaf8fd89 package/klish: fix integer size bug on 32-bit systems
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-11-24 11:34:21 +01:00
Joachim Wiberg 18e80ceb11 confd: extend syslogd support with hostname-based filtering
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-11-20 14:05:36 +01:00
Joachim Wiberg 7f555fd2bd confd: relocate /dhcp-client to /interfaces/interface/ipv4/dhcp
Please note, this change drops not only the global enabled flag, but also the
per-interface enabled flag, converting it to a presence container.  The name
of the container is also shortened from dhcp-client -> dhcp.  A pattern that
expected to be reused also for the DHCPv6 client.

Fixes #1109

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-11-06 16:36:56 +01:00
Joachim Wiberg ab56c1be50 Relocate src/board/* and package/board/* to board/
This commit consolidates all BSP support files into the Buildroot standard
board/ directory.  The concept of selectable boards in menuconfig remains
as-is but now lives in board/ instead.

Drop support for board-specific post-build.sh scripts, not needed atm. and
we should really use Buildroot _POST_INSTALL_HOOKS in the board .mk files
instead.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-31 13:26:06 +01:00
Joachim Wiberg 8af593707a Rename raspberry-pi-4 -> raspberry-pi64
With the additional support for RPi3, including Zero 2W, this commit renames
all relevant directories and Config.In options to match.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-31 13:26:06 +01:00
Joachim Wiberg 54d88cc00e Support for Compute Module 4 IoT Router Broad Mini
This commit adds support for the Raspberry Pi CM4 based mini DFRobot IoT
Router board, SKU:DFR0767.  It comes with an additional RTL8111 PCIe NIC
hence the addidtional kernel module and firmware.  The latter fixes:

r8169 0000:01:00.0: Direct firmware load for rtl_nic/rtl8168h-2.fw failed with error -2
r8169 0000:01:00.0: Unable to load firmware rtl_nic/rtl8168h-2.fw (-2)

Please note, the change in BCMGENET from module to built-in is to ensure
it is probed before any PCIe NIC, both this board and the CM4-based NVME
NAS base board enumerate the built-in MAC as eth0.

Also, unlike the RPi 3B/4B, it is not a given fact that a CM4 based board
comes with WiFi onboard, and since most compute module setups are DYI, we
take the easy way out and leave it as an exercise to the user to add WiFi
interface to the config.

https://wiki.dfrobot.com/Compute_Module_4_IoT_Router_Board_Mini_SKU_DFR0767

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-31 13:26:00 +01:00
Joachim Wiberg 9b057ad547 Support for Raspberry Pi 3B (BCM2837)
The BCM2837 core is used not just in the RPi 3B but also in the Zero 2W,
both device trees have been added to the board config.

The BCM2711 support has been extended to include RPi 400 and CM4 I/O.

To support the BCM2837 family more firmware options habe been enabled,
since the RPi3 does not have bootcode.bin flashed in the SoC.  The SD
card image now uses a hybrid GPT/MBR format so the RPi3 bootcode.bin
can read all files from the first VFAT partition.

The default device tree for Linux is now chosen by the U-Boot probe and
the only exception is the "laundry room" detector that looks for a RPi4
with a 7" touch screen, which then selects the DSI enabled RPi4 variant.
This is enough to properly load an RPi 3B and a CM4 based router board.

The BCM2837 does not have PCI/PCIe or a built-in MAC so it relies on the
USB to Ethernet LAN78xx which does not support disabling pause frames.
I have opted for checking for EOPNOTSUPP instead of adding yet another
quirk, because it is likely to be a common limitation of more drivers
and chipsets, and this code is best-effort anyway.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-31 13:25:59 +01:00
Joachim Wiberg 21256a8ac1 bin: add bash completion for copy command
Add bash completion for the common datastores, like we already do in the
CLI, and update the usage text accordingly.

Also, make sure to install to /usr/bin, not /bin since we've now merged
the hierarchies since a while back.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-23 15:23:59 +02:00
Joachim Wiberg 6c742b5cda package/finit: backport support for longer service identifiers
Fixes #1146

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-23 15:23:48 +02:00
Joachim Wiberg 151f3491a2 cli: fix error handling in text-editor and change commands
Fixes #1194

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-13 21:24:16 +02:00
Joachim Wiberg 81f1da6272 package/board: fix RPi4 boot from aarch64 image
Fixes a minor regression after merge of BPi-R3.  The RPi4 device tree,
specifically regulator-sd-io-1v8 in bcm2711-rpi-4-b.dts, requires the
GPIO voltage regulator be built-in for the SD card controller.

Fixes #1197

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-13 21:24:11 +02:00
Joachim Wiberg 3224f49b65 confd: initial zone-based firewall support, based on firewalld
Add supoprt for infix-firewall.yang, modeled on the zone-based firewalld
The terminology is a mix of firewalld, classic netfilter and inspired by
Ubiquity.  E.g., zone 'policy' -> 'action', and the zone matrix overview.

 - Port forwarding allows forwarding a range of ports
 - Operational data comes from firewalld active rules
 - Firewall logging goes to /var/log/firewall.log
 - Show implicit/built-in rules and zones (HOST) in firewall matrix,
   includes "locked" policy for the default-drop behavior
 - The zone services field in admin-exec 'show firewall' shows ANY when
   the zone default action is set to 'accept'
 - Zone 'forwarding' and 'masquerade' settings live in Infix in the
   policys instead, meaning users need to explicitly add a policy
   to allow both intra-zone and inter-zone forwarding
 - Support for emergency lockdown (kill switch)
 - Pre-defined services (xml+enums) are filtered and included as a
   separate YANG model, extensions added for netconf and restconf
 - Includes initial support for firewalld rich rules

firewalld policy rules, including rich rules, have an obnoxious priority
field which is extremely hard to get right, so in Infix we use the far
superior YANG construct 'ordered-by user;'.  This ensure all rules are
generated in that order by setting the priority field, on read-back from
firewalld (operational) the priority field is used to sort the output
of rules in the CLI.

Fixes #448

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-10 15:14:12 +02:00
Joachim Wiberg 0f6c7608ec package/confd: simplify, relocate netconf service
Follow the good example set by the restconf service.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-09-28 07:26:44 +02:00