diff --git a/README.md b/README.md index dd1511d3e..03aaa26bc 100644 --- a/README.md +++ b/README.md @@ -167,8 +167,8 @@ APIs. [0]: https://www.kernel.org [1]: https://buildroot.org/ "Buildroot Homepage" [2]: https://www.sysrepo.org/ "Sysrepo Homepage" -[3]: https://kernelkit.org/infix/latest/cli/introduction/ -[4]: https://kernelkit.org/infix/ +[3]: https://www.kernelkit.org/infix/latest/cli/introduction/ +[4]: https://www.kernelkit.org/infix/ [5]: https://github.com/kernelkit/infix/releases [Latest Build]: https://github.com/kernelkit/infix/releases/tag/latest "Latest build" [License]: https://en.wikipedia.org/wiki/GPL_license diff --git a/board/aarch64/bananapi-bpi-r3/README.md b/board/aarch64/bananapi-bpi-r3/README.md index fa1a95379..be92ea284 100644 --- a/board/aarch64/bananapi-bpi-r3/README.md +++ b/board/aarch64/bananapi-bpi-r3/README.md @@ -262,8 +262,8 @@ make aarch64 ./utils/mkimage.sh -odt emmc bananapi-bpi-r3 ``` -[0]: https://kernelkit.org/posts/flashing-sdcard/ -[1]: https://kernelkit.org/infix/latest/ +[0]: https://www.kernelkit.org/posts/flashing-sdcard/ +[1]: https://www.kernelkit.org/infix/latest/ [2]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-bpi-r3-sdcard.img [3]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-bpi-r3-emmc.img [4]: https://github.com/kernelkit/infix/releases/download/latest-boot/bpi-r3-emmc-boot-2025.01-latest.tar.gz diff --git a/board/aarch64/raspberrypi-rpi64/README.md b/board/aarch64/raspberrypi-rpi64/README.md index 4619d12ca..711bc2eb4 100644 --- a/board/aarch64/raspberrypi-rpi64/README.md +++ b/board/aarch64/raspberrypi-rpi64/README.md @@ -312,13 +312,13 @@ While capable of basic routing tasks, be aware of limitations: For applications requiring multiple ports or high performance, consider dedicated networking hardware like the [Banana Pi R3][12]. -[0]: https://kernelkit.org/posts/flashing-sdcard/ -[1]: https://kernelkit.org/infix/latest/ +[0]: https://www.kernelkit.org/posts/flashing-sdcard/ +[1]: https://www.kernelkit.org/infix/latest/ [2]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-rpi64-sdcard.img -[3]: https://kernelkit.org/infix/latest/container/#content-mounts -[4]: https://kernelkit.org/infix/latest/scripting-restconf/ +[3]: https://www.kernelkit.org/infix/latest/container/#content-mounts +[4]: https://www.kernelkit.org/infix/latest/scripting-restconf/ [8]: https://github.com/kernelkit/infix/releases/tag/latest-boot -[9]: https://kernelkit.org/infix/latest/networking/#wifi +[9]: https://www.kernelkit.org/infix/latest/networking/#wifi [10]: https://www.raspberrypi.com/products/raspberry-pi-touch-display/ [11]: https://www.raspberrypi.com/documentation/ -[12]: https://kernelkit.org/infix/latest/hardware/#banana-pi-bpi-r3 +[12]: https://www.kernelkit.org/infix/latest/hardware/#banana-pi-bpi-r3 diff --git a/board/arm/microchip-sama7g54-ek/README.md b/board/arm/microchip-sama7g54-ek/README.md index 11926ab30..3dcabb3ed 100644 --- a/board/arm/microchip-sama7g54-ek/README.md +++ b/board/arm/microchip-sama7g54-ek/README.md @@ -112,5 +112,5 @@ Connect a USB-to-serial adapter to the board's debug UART header. > [!WARNING] > Use only 3.3V serial adapters. -[0]: https://kernelkit.org/posts/flashing-sdcard/ +[0]: https://www.kernelkit.org/posts/flashing-sdcard/ [1]: https://www.microchip.com/en-us/development-tool/EV21H18A diff --git a/board/arm/raspberrypi-rpi2/README.md b/board/arm/raspberrypi-rpi2/README.md index fc9f60215..d1eb8920f 100644 --- a/board/arm/raspberrypi-rpi2/README.md +++ b/board/arm/raspberrypi-rpi2/README.md @@ -91,5 +91,5 @@ Serial settings: 115200 8N1 > [!WARNING] > Use only 3.3V serial adapters. 5V adapters will damage your Raspberry Pi! -[0]: https://kernelkit.org/posts/flashing-sdcard/ +[0]: https://www.kernelkit.org/posts/flashing-sdcard/ [1]: https://www.raspberrypi.com/products/raspberry-pi-2-model-b/ diff --git a/board/common/image/image-itb-gns3a/generate.sh b/board/common/image/image-itb-gns3a/generate.sh index ada7ce955..d26a8cbe5 100755 --- a/board/common/image/image-itb-gns3a/generate.sh +++ b/board/common/image/image-itb-gns3a/generate.sh @@ -12,7 +12,7 @@ cat <"${gns3a}" "category": "router", "description": "${ARTIFACT} development appliance", "vendor_name": "Kernelkit", - "vendor_url": "https://kernelkit.org", + "vendor_url": "https://www.kernelkit.org", "product_name": "${ARTIFACT} devel", "registry_version": 6, "status": "experimental", diff --git a/board/common/image/image-readme/README.md b/board/common/image/image-readme/README.md index e92f0792d..3bca78387 100644 --- a/board/common/image/image-readme/README.md +++ b/board/common/image/image-readme/README.md @@ -50,7 +50,7 @@ The default credentials for the demo builds is Password: .-------. | . . | Infix OS — Immutable.Friendly.Secure - |-. v .-| https://kernelkit.org + |-. v .-| https://www.kernelkit.org '-'---'-' Run the command 'cli' for interactive OAM diff --git a/board/common/rootfs/etc/motd b/board/common/rootfs/etc/motd index 9b18acdf8..828153d01 100644 --- a/board/common/rootfs/etc/motd +++ b/board/common/rootfs/etc/motd @@ -1,4 +1,4 @@ .-------. | . . | Infix OS — Immutable.Friendly.Secure -|-. v .-| https://kernelkit.org +|-. v .-| https://www.kernelkit.org '-'---'-' diff --git a/board/common/rootfs/usr/sbin/container b/board/common/rootfs/usr/sbin/container index 4c7dfbb81..4bc99d9a7 100755 --- a/board/common/rootfs/usr/sbin/container +++ b/board/common/rootfs/usr/sbin/container @@ -23,7 +23,8 @@ dir="" all="" env="" port="" -force= +force=${force:-} +reset_volumes= # Variable shared across subshells export meta_sha="" @@ -227,7 +228,7 @@ fetch() if out=$(eval "$cmd" 2>&1); then log "$file downloaded successfully." - if check "$file"; then + if [ -n "$force" ] || check "$file"; then echo "$dst" return 0 fi @@ -897,6 +898,9 @@ while [ "$1" != "" ]; do shift restart=$1 ;; + -R | --reset-volumes) + reset_volumes=true + ;; -s | --simple) simple=true ;; @@ -1108,7 +1112,8 @@ case $cmd in # Remove the old image if it's not used by any other containers if [ -n "$old_image_id" ]; then # Check if the old image is still in use by any containers - if ! podman ps -a --format '{{.ImageID}}' | grep -q "^${old_image_id}$"; then + old_image_id=${old_image_id:0:12} + if ! podman ps -a --format '{{.ImageID}}' | grep -q "^${old_image_id}"; then log "Removing old image $old_image_id" podman rmi "$old_image_id" 2>/dev/null || true else @@ -1250,8 +1255,22 @@ case $cmd in container stop "$name" echo "done" + # If --reset-volumes requested, delete named volumes so they re-initialize from new image + if [ -n "$reset_volumes" ]; then + printf ">> Resetting named volumes (all configuration will be lost): " + grep -oE -- '-v [^ ]+' "$script" | awk '{print $2}' | cut -d: -f1 | \ + while read -r vol_name; do + if podman volume exists "$vol_name" 2>/dev/null; then + printf "%s " "$vol_name" + log "Removing volume $vol_name" + podman volume rm -f "$vol_name" >/dev/null || true + fi + done + echo "done" + fi + # Set force flag to ensure fresh pull/fetch of image - force="-f" + export force="-f" # For remote images, force re-pull case "$img" in @@ -1273,14 +1292,17 @@ case $cmd in # Recreate container by running the script echo ">> Recreating container ..." if ! "$script"; then + force= echo ">> Failed recreating container $name" exit 1 fi + force= # Remove the old image if it's not used by any other containers if [ -n "$old_image_id" ]; then # Check if the old image is still in use by any containers - if ! podman ps -a --format '{{.ImageID}}' | grep -q "^${old_image_id}$"; then + old_image_id=${old_image_id:0:12} + if ! podman ps -a --format '{{.ImageID}}' | grep -q "^${old_image_id}"; then log "Removing old image $old_image_id" podman rmi "$old_image_id" 2>/dev/null || true else diff --git a/configs/aarch64_defconfig b/configs/aarch64_defconfig index 48ace6e38..5fcaf15f0 100644 --- a/configs/aarch64_defconfig +++ b/configs/aarch64_defconfig @@ -143,10 +143,10 @@ BR2_PACKAGE_MARVELL_CN9130_CRB=y BR2_PACKAGE_MARVELL_ESPRESSOBIN=y BR2_PACKAGE_RASPBERRYPI_RPI64=y BR2_PACKAGE_STYX_DCP_SC_28P=y -INFIX_VENDOR_HOME="https://kernelkit.org" +INFIX_VENDOR_HOME="https://www.kernelkit.org" INFIX_DESC="Infix is an immutable, friendly, and secure operating system that turns any ARM or x86 device into a powerful, manageable network appliance. Deploy on anything from $35 Raspberry Pi boards to enterprise switches as routers, IoT gateways, or edge devices. Infix models Linux networking features using YANG so you can manage your devices using NETCONF/RESTCONF APIs and focus on your business logic running in isolated containers." INFIX_HOME="https://github.com/kernelkit/infix/" -INFIX_DOC="https://kernelkit.org/infix/" +INFIX_DOC="https://www.kernelkit.org/infix/" INFIX_SUPPORT="mailto:kernelkit@googlegroups.com" BR2_PACKAGE_FEATURE_GPS=y BR2_PACKAGE_FEATURE_WIFI_MEDIATEK=y diff --git a/configs/aarch64_minimal_defconfig b/configs/aarch64_minimal_defconfig index e99e14466..e535b5350 100644 --- a/configs/aarch64_minimal_defconfig +++ b/configs/aarch64_minimal_defconfig @@ -121,10 +121,10 @@ BR2_PACKAGE_MARVELL_CN9130_CRB=y BR2_PACKAGE_MARVELL_ESPRESSOBIN=y BR2_PACKAGE_RASPBERRYPI_RPI64=y BR2_PACKAGE_STYX_DCP_SC_28P=y -INFIX_VENDOR_HOME="https://kernelkit.org" +INFIX_VENDOR_HOME="https://www.kernelkit.org" INFIX_DESC="Infix is an immutable, friendly, and secure operating system that turns any ARM or x86 device into a powerful, manageable network appliance. Deploy on anything from $35 Raspberry Pi boards to enterprise switches as routers, IoT gateways, or edge devices. Infix models Linux networking features using YANG so you can manage your devices using NETCONF/RESTCONF APIs and focus on your business logic running in isolated containers." INFIX_HOME="https://github.com/kernelkit/infix/" -INFIX_DOC="https://kernelkit.org/infix/" +INFIX_DOC="https://www.kernelkit.org/infix/" INFIX_SUPPORT="mailto:kernelkit@googlegroups.com" BR2_PACKAGE_FEATURE_GPS=y BR2_PACKAGE_CONFD=y diff --git a/configs/arm_defconfig b/configs/arm_defconfig index a216f0700..081b46988 100644 --- a/configs/arm_defconfig +++ b/configs/arm_defconfig @@ -139,10 +139,10 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y BR2_PACKAGE_MICROCHIP_SAMA7G54_EK=y BR2_PACKAGE_RASPBERRYPI_RPI2=y -INFIX_VENDOR_HOME="https://kernelkit.org" +INFIX_VENDOR_HOME="https://www.kernelkit.org" INFIX_DESC="Infix is an immutable, friendly, and secure operating system that turns any ARM or x86 device into a powerful, manageable network appliance. Deploy on anything from $35 Raspberry Pi boards to enterprise switches as routers, IoT gateways, or edge devices. Infix models Linux networking features using YANG so you can manage your devices using NETCONF/RESTCONF APIs and focus on your business logic running in isolated containers." INFIX_HOME="https://github.com/kernelkit/infix/" -INFIX_DOC="https://kernelkit.org/infix/" +INFIX_DOC="https://www.kernelkit.org/infix/" INFIX_SUPPORT="mailto:kernelkit@googlegroups.com" BR2_PACKAGE_FEATURE_GPS=y BR2_PACKAGE_FEATURE_WIFI_MEDIATEK=y diff --git a/configs/arm_minimal_defconfig b/configs/arm_minimal_defconfig index b0536ac26..f57a0263c 100644 --- a/configs/arm_minimal_defconfig +++ b/configs/arm_minimal_defconfig @@ -121,10 +121,10 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y BR2_PACKAGE_MICROCHIP_SAMA7G54_EK=y BR2_PACKAGE_RASPBERRYPI_RPI2=y -INFIX_VENDOR_HOME="https://kernelkit.org" +INFIX_VENDOR_HOME="https://www.kernelkit.org" INFIX_DESC="Infix is an immutable, friendly, and secure operating system that turns any ARM or x86 device into a powerful, manageable network appliance. Deploy on anything from $35 Raspberry Pi boards to enterprise switches as routers, IoT gateways, or edge devices. Infix models Linux networking features using YANG so you can manage your devices using NETCONF/RESTCONF APIs and focus on your business logic running in isolated containers." INFIX_HOME="https://github.com/kernelkit/infix/" -INFIX_DOC="https://kernelkit.org/infix/" +INFIX_DOC="https://www.kernelkit.org/infix/" INFIX_SUPPORT="mailto:kernelkit@googlegroups.com" BR2_PACKAGE_FEATURE_GPS=y BR2_PACKAGE_CONFD=y diff --git a/configs/riscv64_defconfig b/configs/riscv64_defconfig index 41ef8450a..a7421e15f 100644 --- a/configs/riscv64_defconfig +++ b/configs/riscv64_defconfig @@ -170,10 +170,10 @@ BR2_PACKAGE_HOST_BMAP_TOOLS=y BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y -INFIX_VENDOR_HOME="https://kernelkit.org" +INFIX_VENDOR_HOME="https://www.kernelkit.org" INFIX_DESC="Infix is an immutable, friendly, and secure operating system that turns any ARM or x86 device into a powerful, manageable network appliance. Deploy on anything from $35 Raspberry Pi boards to enterprise switches as routers, IoT gateways, or edge devices. Infix models Linux networking features using YANG so you can manage your devices using NETCONF/RESTCONF APIs and focus on your business logic running in isolated containers." INFIX_HOME="https://github.com/kernelkit/infix/" -INFIX_DOC="https://kernelkit.org/infix/" +INFIX_DOC="https://www.kernelkit.org/infix/" INFIX_SUPPORT="mailto:kernelkit@googlegroups.com" BR2_PACKAGE_FEATURE_GPS=y BR2_PACKAGE_FEATURE_WIFI=y diff --git a/configs/x86_64_defconfig b/configs/x86_64_defconfig index 74bcd7175..8dbb20f72 100644 --- a/configs/x86_64_defconfig +++ b/configs/x86_64_defconfig @@ -142,10 +142,10 @@ BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y -INFIX_VENDOR_HOME="https://kernelkit.org" +INFIX_VENDOR_HOME="https://www.kernelkit.org" INFIX_DESC="Infix is an immutable, friendly, and secure operating system that turns any ARM or x86 device into a powerful, manageable network appliance. Deploy on anything from $35 Raspberry Pi boards to enterprise switches as routers, IoT gateways, or edge devices. Infix models Linux networking features using YANG so you can manage your devices using NETCONF/RESTCONF APIs and focus on your business logic running in isolated containers." INFIX_HOME="https://github.com/kernelkit/infix/" -INFIX_DOC="https://kernelkit.org/infix/" +INFIX_DOC="https://www.kernelkit.org/infix/" INFIX_SUPPORT="mailto:kernelkit@googlegroups.com" BR2_PACKAGE_FEATURE_GPS=y BR2_PACKAGE_FEATURE_WIFI=y diff --git a/configs/x86_64_minimal_defconfig b/configs/x86_64_minimal_defconfig index a985feac3..7d1d55f47 100644 --- a/configs/x86_64_minimal_defconfig +++ b/configs/x86_64_minimal_defconfig @@ -120,10 +120,10 @@ BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y -INFIX_VENDOR_HOME="https://kernelkit.org" +INFIX_VENDOR_HOME="https://www.kernelkit.org" INFIX_DESC="Infix is an immutable, friendly, and secure operating system that turns any ARM or x86 device into a powerful, manageable network appliance. Deploy on anything from $35 Raspberry Pi boards to enterprise switches as routers, IoT gateways, or edge devices. Infix models Linux networking features using YANG so you can manage your devices using NETCONF/RESTCONF APIs and focus on your business logic running in isolated containers." INFIX_HOME="https://github.com/kernelkit/infix/" -INFIX_DOC="https://kernelkit.org/infix/" +INFIX_DOC="https://www.kernelkit.org/infix/" INFIX_SUPPORT="mailto:kernelkit@googlegroups.com" BR2_PACKAGE_FEATURE_GPS=y BR2_PACKAGE_CONFD=y diff --git a/doc/ChangeLog.md b/doc/ChangeLog.md index ed6871d46..1550faa19 100644 --- a/doc/ChangeLog.md +++ b/doc/ChangeLog.md @@ -3,25 +3,29 @@ Change Log All notable changes to the project are documented in this file. -[v26.02.0][UNRELEASED] - +[v26.02.0][] - 2026-03-01 ------------------------- +> [!NOTE] +> The blog and User Guide have a new address: + ### Changes - Upgrade Linux kernel to 6.18.15 (LTS) - Upgrade Buildroot to 2025.02.11 (LTS) - Upgrade FRR to 10.5.1 -- Add support for Microchip SAMA7G54-EK Evaluation Kit, Arm Cortex-A7 -- Add GPS/GNSS receiver support with NTP reference clock integration +- Add support for [Microchip SAMA7G54][SAMA7G54-EK] Evaluation Kit, Arm Cortex-A7 - Add support for [Banana Pi R3 Mini][BPI-R3-MINI], a 2 port router with 2 WiFi chip, uses the same bootloader as BPI-R3 (eMMC-version) +- Add GPS/GNSS receiver support with NTP reference clock integration +- Add `reset-volumes` option to `container upgrade foo` command ### Fixes -N/A +- Fix CLI `copy` command problem to copy to scp/sftp destinations [BPI-R3-MINI]: https://wiki.banana-pi.org/Banana_Pi_BPI-R3_Mini - +[SAMA7G54-EK]: https://www.microchip.com/en-us/development-tool/ev21h18a [v26.01.0][] - 2026-02-03 ------------------------- @@ -106,7 +110,7 @@ Noteworthy changes and additions in this release are marked below in bold text. - Prevent MOTD from showing on non-shell user login attempts - Fix mDNS reflector. -[wifi]: https://kernelkit.org/infix/latest/wifi/ +[wifi]: https://www.kernelkit.org/infix/latest/wifi/ [sd card image]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-rpi64-sdcard.img @@ -724,7 +728,7 @@ renamed to ease maintenance, more info below. not supported (yet) in Infix, issue #709 - The default builds now include the curiOS nftables container image, which can be used for advanced firewall setups. For an introduction - see + see ### Fixes @@ -1927,7 +1931,8 @@ Supported YANG models in addition to those used by sysrepo and netopeer: - N/A [buildroot]: https://buildroot.org/ -[UNRELEASED]: https://github.com/kernelkit/infix/compare/v26.01.0...HEAD +[UNRELEASED]: https://github.com/kernelkit/infix/compare/v26.02.0...HEAD +[v26.02.0]: https://github.com/kernelkit/infix/compare/v26.01.0...v26.02.0 [v26.01.0]: https://github.com/kernelkit/infix/compare/v25.11.0...v26.01.0 [v25.11.0]: https://github.com/kernelkit/infix/compare/v25.10.0...v25.11.0 [v25.10.0]: https://github.com/kernelkit/infix/compare/v25.09.0...v26.10.0 diff --git a/doc/discovery.md b/doc/discovery.md index e4595c985..06e7e165d 100644 --- a/doc/discovery.md +++ b/doc/discovery.md @@ -295,7 +295,7 @@ linux-pc:# ssh admin@infix-c0-ff-ee.local (admin@infix-c0-ff-ee.local) Password: .-------. | . . | Infix OS — Immutable.Friendly.Secure -|-. v .-| https://kernelkit.org +|-. v .-| https://www.kernelkit.org '-'---'- Run the command 'cli' for interactive OAM @@ -335,7 +335,7 @@ linux-pc:# ssh admin@infix.local (admin@infix.local) Password: .-------. | . . | Infix OS — Immutable.Friendly.Secure -|-. v .-| https://kernelkit.org +|-. v .-| https://www.kernelkit.org '-'---'- Run the command 'cli' for interactive OAM diff --git a/doc/management.md b/doc/management.md index 1c3cb094c..486cd6846 100644 --- a/doc/management.md +++ b/doc/management.md @@ -87,7 +87,7 @@ example login: admin Password: .-------. | . . | Infix OS — Immutable.Friendly.Secure -|-. v .-| https://kernelkit.org +|-. v .-| https://www.kernelkit.org '-'---'-' Run the command 'cli' for interactive OAM diff --git a/doc/scripting-prod.md b/doc/scripting-prod.md index 3836e51e9..70fd1da44 100644 --- a/doc/scripting-prod.md +++ b/doc/scripting-prod.md @@ -336,7 +336,7 @@ It should now be possible to access the switch from the PC via SSH (or NETCONF). admin@fe80::0053:00ff:fe06:1101%eth1's password: .-------. | . . | Infix OS — Immutable.Friendly.Secure -|-. v .-| https://kernelkit.org +|-. v .-| https://www.kernelkit.org '-'---'-' Run the command 'cli' for interactive OAM diff --git a/doc/scripting.md b/doc/scripting.md index 2c93a0535..9505fa179 100644 --- a/doc/scripting.md +++ b/doc/scripting.md @@ -88,7 +88,7 @@ Warning: Permanently added 'fe80::ff:fe00:0%eth0' (ED25519) to the list of known admin@fe80::ff:fe00:0%eth0's password: ***** .-------. | . . | Infix OS — Immutable.Friendly.Secure -|-. v .-| https://kernelkit.org +|-. v .-| https://www.kernelkit.org '-'---'-' Run the command 'cli' for interactive OAM diff --git a/doc/testing.md b/doc/testing.md index a41d9e6a8..9a71917fe 100644 --- a/doc/testing.md +++ b/doc/testing.md @@ -152,7 +152,7 @@ infix-00-00-00 login: admin Password: .-------. | . . | Infix OS — Immutable.Friendly.Secure -|-. v .-| https://kernelkit.org +|-. v .-| https://www.kernelkit.org '-'---'-' Run the command 'cli' for interactive OAM diff --git a/doc/upgrade.md b/doc/upgrade.md index 88dd91b88..2c7443164 100644 --- a/doc/upgrade.md +++ b/doc/upgrade.md @@ -170,7 +170,7 @@ example login: admin Password: .-------. | . . | Infix OS — Immutable.Friendly.Secure -|-. v .-| https://kernelkit.org +|-. v .-| https://www.kernelkit.org '-'---'-' Run the command 'cli' for interactive OAM diff --git a/mkdocs.yml b/mkdocs.yml index 73768a6e0..c468c7518 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -170,6 +170,6 @@ plugins: extra: generator: false - homepage: https://kernelkit.org/ + homepage: https://www.kernelkit.org/ version: provider: mike diff --git a/src/bin/copy.c b/src/bin/copy.c index 763a6aba3..803344504 100644 --- a/src/bin/copy.c +++ b/src/bin/copy.c @@ -466,7 +466,7 @@ static int curl(char *op, const char *path, const char *uri) { char *argv[10] = { "curl", "-L", NULL }; int err = 1, i = 2; - int path_i, uri_i, user_i = 0; + int path_i, uri_i = 0, user_i = 0; argv[i++] = op; @@ -492,7 +492,8 @@ static int curl(char *op, const char *path, const char *uri) out: free(argv[path_i]); - free(argv[uri_i]); + if (uri_i) + free(argv[uri_i]); if (user_i) free(argv[user_i]); return err; @@ -752,7 +753,7 @@ static int copy(const char *src, const char *dst) * meaningful name instead: the datastore's on-disk filename, or the * source file's own basename. */ - if (is_ssh_uri(dst) && dst[strlen(dst) - 1] == '/') { + if (dst && is_ssh_uri(dst) && dst[strlen(dst) - 1] == '/') { const char *bn, *slash; if (srcds && srcds->path) { diff --git a/src/confd/src/dhcp-client.c b/src/confd/src/dhcp-client.c index ba40193a9..1d0f347aa 100644 --- a/src/confd/src/dhcp-client.c +++ b/src/confd/src/dhcp-client.c @@ -144,7 +144,7 @@ static void add(const char *ifname, struct lyd_node *cfg) fprintf(fp, "# Generated by Infix confd\n"); fprintf(fp, "metric=%s\n", metric); - fprintf(fp, "service name:dhcp-client :%s \\\n" + fprintf(fp, "service name:dhcp-client :%s \\\n" " [2345] udhcpc -f -p /run/dhcp-client-%s.pid -t 3 -T 5 -A 30 %s -S -R \\\n" " %s%s \\\n" " -i %s %s %s \\\n" diff --git a/src/confd/src/hardware.c b/src/confd/src/hardware.c index 5857ceb12..73c11c8ca 100644 --- a/src/confd/src/hardware.c +++ b/src/confd/src/hardware.c @@ -695,18 +695,17 @@ int hardware_change(sr_session_ctx_t *session, struct lyd_node *config, struct l wifi_find_interfaces_on_radio(interfaces_config, name, &wifi_iface_list, &wifi_iface_count); - - if (!wifi_iface_count) - continue; - - /* Generate AP config (hostapd) for all APs on this radio */ - rc = wifi_gen_aps_on_radio(name, interfaces_config, cwifi_radio, config); - if (rc != SR_ERR_OK) - ERROR("Failed to generate AP config for radio %s", name); - /* Free the interface list */ - free(wifi_iface_list); - wifi_iface_list = NULL; - wifi_iface_count = 0; + if (wifi_iface_list) { + if (wifi_iface_count) { + /* Generate AP config (hostapd) for all APs on this radio */ + rc = wifi_gen_aps_on_radio(name, interfaces_config, cwifi_radio, config); + if (rc != SR_ERR_OK) + ERROR("Failed to generate AP config for radio %s", name); + } + free(wifi_iface_list); + wifi_iface_list = NULL; + wifi_iface_count = 0; + } } else if (!strcmp(class, "infix-hardware:gps")) { if (event != SR_EV_DONE) continue; diff --git a/src/confd/src/routing.c b/src/confd/src/routing.c index 50d8a7bcc..5fa199fce 100644 --- a/src/confd/src/routing.c +++ b/src/confd/src/routing.c @@ -458,7 +458,8 @@ static void frr_daemons_write(int ospfd, int ripd, int bfdd) fp); fclose(fp); - rename(next, FRR_DAEMONS); + if (rename(next, FRR_DAEMONS)) + ERROR("Failed to rename %s to %s: %m", next, FRR_DAEMONS); } int routing_change(sr_session_ctx_t *session, struct lyd_node *config, struct lyd_node *diff, sr_event_t event, struct confd *confd) @@ -519,7 +520,6 @@ int routing_change(sr_session_ctx_t *session, struct lyd_node *config, struct ly num = parse_rip(session, lydx_get_child(cplane, "rip"), fp); if (num > 0) { touch(RIPD_SIGNAL_NEXT); - ripd_enabled = 1; netd_enabled = 1; } } diff --git a/src/klish-plugin-infix/xml/containers.xml b/src/klish-plugin-infix/xml/containers.xml index 4b73f6077..8691a75bc 100644 --- a/src/klish-plugin-infix/xml/containers.xml +++ b/src/klish-plugin-infix/xml/containers.xml @@ -178,9 +178,15 @@ - + + + + - doas container upgrade $KLISH_PARAM_name + if env | grep -q 'reset-volumes' >/dev/null; then + opt="-R" + fi + doas container $opt upgrade $KLISH_PARAM_name diff --git a/src/klish-plugin-infix/xml/infix.xml b/src/klish-plugin-infix/xml/infix.xml index bce73835a..79b4b00e7 100644 --- a/src/klish-plugin-infix/xml/infix.xml +++ b/src/klish-plugin-infix/xml/infix.xml @@ -461,7 +461,7 @@ echo "Public: $pub" peer - + @@ -471,7 +471,7 @@ echo "Public: $pub" BRIEF_ARG="brief" fi # Pass subcommand, optional peer address, and brief flag - show bfd ${KLISH_PARAM_subcommand:+"$KLISH_PARAM_subcommand"} ${KLISH_PARAM_peer_addr:+"$KLISH_PARAM_peer_addr"} ${BRIEF_ARG:+"$BRIEF_ARG"} |pager + show bfd ${KLISH_PARAM_subcommand:+"$KLISH_PARAM_subcommand"} ${KLISH_PARAM_peer:+"$KLISH_PARAM_peer"} ${BRIEF_ARG:+"$BRIEF_ARG"} |pager diff --git a/test/case/statd/system/system/rootfs/etc/os-release b/test/case/statd/system/system/rootfs/etc/os-release index 0d4c87b1f..2a788ddff 100644 --- a/test/case/statd/system/system/rootfs/etc/os-release +++ b/test/case/statd/system/system/rootfs/etc/os-release @@ -10,7 +10,7 @@ IMAGE_ID="infix-x86_64" ARCHITECTURE="x86_64" HOME_URL=https://github.com/kernelkit/infix/ VENDOR_NAME="KernelKit" -VENDOR_HOME="https://kernelkit.org" -DOCUMENTATION_URL="https://kernelkit.org/infix/" +VENDOR_HOME="https://www.kernelkit.org" +DOCUMENTATION_URL="https://www.kernelkit.org/infix/" SUPPORT_URL="mailto:kernelkit@googlegroups.com" INFIX_DESC="Infix is an immutable, friendly, and secure operating system that turns any ARM or x86 device into a powerful, manageable network appliance. Deploy on anything from 5 Raspberry Pi boards to enterprise switches as routers, IoT gateways, or edge devices. Infix models Linux networking features using YANG so you can manage your devices using NETCONF/RESTCONF APIs and focus on your business logic running in isolated containers."