mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-30 20:43:02 +02:00
Merge pull request #1422 from kernelkit/container-fixes
Container and Coverity fixes
This commit is contained in:
@@ -167,8 +167,8 @@ APIs.
|
|||||||
[0]: https://www.kernel.org
|
[0]: https://www.kernel.org
|
||||||
[1]: https://buildroot.org/ "Buildroot Homepage"
|
[1]: https://buildroot.org/ "Buildroot Homepage"
|
||||||
[2]: https://www.sysrepo.org/ "Sysrepo Homepage"
|
[2]: https://www.sysrepo.org/ "Sysrepo Homepage"
|
||||||
[3]: https://kernelkit.org/infix/latest/cli/introduction/
|
[3]: https://www.kernelkit.org/infix/latest/cli/introduction/
|
||||||
[4]: https://kernelkit.org/infix/
|
[4]: https://www.kernelkit.org/infix/
|
||||||
[5]: https://github.com/kernelkit/infix/releases
|
[5]: https://github.com/kernelkit/infix/releases
|
||||||
[Latest Build]: https://github.com/kernelkit/infix/releases/tag/latest "Latest build"
|
[Latest Build]: https://github.com/kernelkit/infix/releases/tag/latest "Latest build"
|
||||||
[License]: https://en.wikipedia.org/wiki/GPL_license
|
[License]: https://en.wikipedia.org/wiki/GPL_license
|
||||||
|
|||||||
@@ -262,8 +262,8 @@ make aarch64
|
|||||||
./utils/mkimage.sh -odt emmc bananapi-bpi-r3
|
./utils/mkimage.sh -odt emmc bananapi-bpi-r3
|
||||||
```
|
```
|
||||||
|
|
||||||
[0]: https://kernelkit.org/posts/flashing-sdcard/
|
[0]: https://www.kernelkit.org/posts/flashing-sdcard/
|
||||||
[1]: https://kernelkit.org/infix/latest/
|
[1]: https://www.kernelkit.org/infix/latest/
|
||||||
[2]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-bpi-r3-sdcard.img
|
[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
|
[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
|
[4]: https://github.com/kernelkit/infix/releases/download/latest-boot/bpi-r3-emmc-boot-2025.01-latest.tar.gz
|
||||||
|
|||||||
@@ -312,13 +312,13 @@ While capable of basic routing tasks, be aware of limitations:
|
|||||||
For applications requiring multiple ports or high performance, consider
|
For applications requiring multiple ports or high performance, consider
|
||||||
dedicated networking hardware like the [Banana Pi R3][12].
|
dedicated networking hardware like the [Banana Pi R3][12].
|
||||||
|
|
||||||
[0]: https://kernelkit.org/posts/flashing-sdcard/
|
[0]: https://www.kernelkit.org/posts/flashing-sdcard/
|
||||||
[1]: https://kernelkit.org/infix/latest/
|
[1]: https://www.kernelkit.org/infix/latest/
|
||||||
[2]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-rpi64-sdcard.img
|
[2]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-rpi64-sdcard.img
|
||||||
[3]: https://kernelkit.org/infix/latest/container/#content-mounts
|
[3]: https://www.kernelkit.org/infix/latest/container/#content-mounts
|
||||||
[4]: https://kernelkit.org/infix/latest/scripting-restconf/
|
[4]: https://www.kernelkit.org/infix/latest/scripting-restconf/
|
||||||
[8]: https://github.com/kernelkit/infix/releases/tag/latest-boot
|
[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/
|
[10]: https://www.raspberrypi.com/products/raspberry-pi-touch-display/
|
||||||
[11]: https://www.raspberrypi.com/documentation/
|
[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
|
||||||
|
|||||||
@@ -112,5 +112,5 @@ Connect a USB-to-serial adapter to the board's debug UART header.
|
|||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> Use only 3.3V serial adapters.
|
> 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
|
[1]: https://www.microchip.com/en-us/development-tool/EV21H18A
|
||||||
|
|||||||
@@ -91,5 +91,5 @@ Serial settings: 115200 8N1
|
|||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> Use only 3.3V serial adapters. 5V adapters will damage your Raspberry Pi!
|
> 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/
|
[1]: https://www.raspberrypi.com/products/raspberry-pi-2-model-b/
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ cat <<EOF >"${gns3a}"
|
|||||||
"category": "router",
|
"category": "router",
|
||||||
"description": "${ARTIFACT} development appliance",
|
"description": "${ARTIFACT} development appliance",
|
||||||
"vendor_name": "Kernelkit",
|
"vendor_name": "Kernelkit",
|
||||||
"vendor_url": "https://kernelkit.org",
|
"vendor_url": "https://www.kernelkit.org",
|
||||||
"product_name": "${ARTIFACT} devel",
|
"product_name": "${ARTIFACT} devel",
|
||||||
"registry_version": 6,
|
"registry_version": 6,
|
||||||
"status": "experimental",
|
"status": "experimental",
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ The default credentials for the demo builds is
|
|||||||
Password:
|
Password:
|
||||||
.-------.
|
.-------.
|
||||||
| . . | Infix OS — Immutable.Friendly.Secure
|
| . . | Infix OS — Immutable.Friendly.Secure
|
||||||
|-. v .-| https://kernelkit.org
|
|-. v .-| https://www.kernelkit.org
|
||||||
'-'---'-'
|
'-'---'-'
|
||||||
|
|
||||||
Run the command 'cli' for interactive OAM
|
Run the command 'cli' for interactive OAM
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.-------.
|
.-------.
|
||||||
| . . | Infix OS — Immutable.Friendly.Secure
|
| . . | Infix OS — Immutable.Friendly.Secure
|
||||||
|-. v .-| https://kernelkit.org
|
|-. v .-| https://www.kernelkit.org
|
||||||
'-'---'-'
|
'-'---'-'
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ dir=""
|
|||||||
all=""
|
all=""
|
||||||
env=""
|
env=""
|
||||||
port=""
|
port=""
|
||||||
force=
|
force=${force:-}
|
||||||
|
reset_volumes=
|
||||||
|
|
||||||
# Variable shared across subshells
|
# Variable shared across subshells
|
||||||
export meta_sha=""
|
export meta_sha=""
|
||||||
@@ -227,7 +228,7 @@ fetch()
|
|||||||
|
|
||||||
if out=$(eval "$cmd" 2>&1); then
|
if out=$(eval "$cmd" 2>&1); then
|
||||||
log "$file downloaded successfully."
|
log "$file downloaded successfully."
|
||||||
if check "$file"; then
|
if [ -n "$force" ] || check "$file"; then
|
||||||
echo "$dst"
|
echo "$dst"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
@@ -897,6 +898,9 @@ while [ "$1" != "" ]; do
|
|||||||
shift
|
shift
|
||||||
restart=$1
|
restart=$1
|
||||||
;;
|
;;
|
||||||
|
-R | --reset-volumes)
|
||||||
|
reset_volumes=true
|
||||||
|
;;
|
||||||
-s | --simple)
|
-s | --simple)
|
||||||
simple=true
|
simple=true
|
||||||
;;
|
;;
|
||||||
@@ -1108,7 +1112,8 @@ case $cmd in
|
|||||||
# Remove the old image if it's not used by any other containers
|
# Remove the old image if it's not used by any other containers
|
||||||
if [ -n "$old_image_id" ]; then
|
if [ -n "$old_image_id" ]; then
|
||||||
# Check if the old image is still in use by any containers
|
# 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"
|
log "Removing old image $old_image_id"
|
||||||
podman rmi "$old_image_id" 2>/dev/null || true
|
podman rmi "$old_image_id" 2>/dev/null || true
|
||||||
else
|
else
|
||||||
@@ -1250,8 +1255,22 @@ case $cmd in
|
|||||||
container stop "$name"
|
container stop "$name"
|
||||||
echo "done"
|
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
|
# Set force flag to ensure fresh pull/fetch of image
|
||||||
force="-f"
|
export force="-f"
|
||||||
|
|
||||||
# For remote images, force re-pull
|
# For remote images, force re-pull
|
||||||
case "$img" in
|
case "$img" in
|
||||||
@@ -1273,14 +1292,17 @@ case $cmd in
|
|||||||
# Recreate container by running the script
|
# Recreate container by running the script
|
||||||
echo ">> Recreating container ..."
|
echo ">> Recreating container ..."
|
||||||
if ! "$script"; then
|
if ! "$script"; then
|
||||||
|
force=
|
||||||
echo ">> Failed recreating container $name"
|
echo ">> Failed recreating container $name"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
force=
|
||||||
|
|
||||||
# Remove the old image if it's not used by any other containers
|
# Remove the old image if it's not used by any other containers
|
||||||
if [ -n "$old_image_id" ]; then
|
if [ -n "$old_image_id" ]; then
|
||||||
# Check if the old image is still in use by any containers
|
# 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"
|
log "Removing old image $old_image_id"
|
||||||
podman rmi "$old_image_id" 2>/dev/null || true
|
podman rmi "$old_image_id" 2>/dev/null || true
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -143,10 +143,10 @@ BR2_PACKAGE_MARVELL_CN9130_CRB=y
|
|||||||
BR2_PACKAGE_MARVELL_ESPRESSOBIN=y
|
BR2_PACKAGE_MARVELL_ESPRESSOBIN=y
|
||||||
BR2_PACKAGE_RASPBERRYPI_RPI64=y
|
BR2_PACKAGE_RASPBERRYPI_RPI64=y
|
||||||
BR2_PACKAGE_STYX_DCP_SC_28P=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_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_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"
|
INFIX_SUPPORT="mailto:kernelkit@googlegroups.com"
|
||||||
BR2_PACKAGE_FEATURE_GPS=y
|
BR2_PACKAGE_FEATURE_GPS=y
|
||||||
BR2_PACKAGE_FEATURE_WIFI_MEDIATEK=y
|
BR2_PACKAGE_FEATURE_WIFI_MEDIATEK=y
|
||||||
|
|||||||
@@ -121,10 +121,10 @@ BR2_PACKAGE_MARVELL_CN9130_CRB=y
|
|||||||
BR2_PACKAGE_MARVELL_ESPRESSOBIN=y
|
BR2_PACKAGE_MARVELL_ESPRESSOBIN=y
|
||||||
BR2_PACKAGE_RASPBERRYPI_RPI64=y
|
BR2_PACKAGE_RASPBERRYPI_RPI64=y
|
||||||
BR2_PACKAGE_STYX_DCP_SC_28P=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_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_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"
|
INFIX_SUPPORT="mailto:kernelkit@googlegroups.com"
|
||||||
BR2_PACKAGE_FEATURE_GPS=y
|
BR2_PACKAGE_FEATURE_GPS=y
|
||||||
BR2_PACKAGE_CONFD=y
|
BR2_PACKAGE_CONFD=y
|
||||||
|
|||||||
@@ -139,10 +139,10 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
|||||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
||||||
BR2_PACKAGE_MICROCHIP_SAMA7G54_EK=y
|
BR2_PACKAGE_MICROCHIP_SAMA7G54_EK=y
|
||||||
BR2_PACKAGE_RASPBERRYPI_RPI2=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_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_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"
|
INFIX_SUPPORT="mailto:kernelkit@googlegroups.com"
|
||||||
BR2_PACKAGE_FEATURE_GPS=y
|
BR2_PACKAGE_FEATURE_GPS=y
|
||||||
BR2_PACKAGE_FEATURE_WIFI_MEDIATEK=y
|
BR2_PACKAGE_FEATURE_WIFI_MEDIATEK=y
|
||||||
|
|||||||
@@ -121,10 +121,10 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
|||||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
||||||
BR2_PACKAGE_MICROCHIP_SAMA7G54_EK=y
|
BR2_PACKAGE_MICROCHIP_SAMA7G54_EK=y
|
||||||
BR2_PACKAGE_RASPBERRYPI_RPI2=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_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_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"
|
INFIX_SUPPORT="mailto:kernelkit@googlegroups.com"
|
||||||
BR2_PACKAGE_FEATURE_GPS=y
|
BR2_PACKAGE_FEATURE_GPS=y
|
||||||
BR2_PACKAGE_CONFD=y
|
BR2_PACKAGE_CONFD=y
|
||||||
|
|||||||
@@ -170,10 +170,10 @@ BR2_PACKAGE_HOST_BMAP_TOOLS=y
|
|||||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
|
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
|
||||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
||||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=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_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_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"
|
INFIX_SUPPORT="mailto:kernelkit@googlegroups.com"
|
||||||
BR2_PACKAGE_FEATURE_GPS=y
|
BR2_PACKAGE_FEATURE_GPS=y
|
||||||
BR2_PACKAGE_FEATURE_WIFI=y
|
BR2_PACKAGE_FEATURE_WIFI=y
|
||||||
|
|||||||
@@ -142,10 +142,10 @@ BR2_PACKAGE_HOST_MTOOLS=y
|
|||||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
|
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
|
||||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
||||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=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_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_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"
|
INFIX_SUPPORT="mailto:kernelkit@googlegroups.com"
|
||||||
BR2_PACKAGE_FEATURE_GPS=y
|
BR2_PACKAGE_FEATURE_GPS=y
|
||||||
BR2_PACKAGE_FEATURE_WIFI=y
|
BR2_PACKAGE_FEATURE_WIFI=y
|
||||||
|
|||||||
@@ -120,10 +120,10 @@ BR2_PACKAGE_HOST_MTOOLS=y
|
|||||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
|
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
|
||||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
||||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=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_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_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"
|
INFIX_SUPPORT="mailto:kernelkit@googlegroups.com"
|
||||||
BR2_PACKAGE_FEATURE_GPS=y
|
BR2_PACKAGE_FEATURE_GPS=y
|
||||||
BR2_PACKAGE_CONFD=y
|
BR2_PACKAGE_CONFD=y
|
||||||
|
|||||||
+13
-8
@@ -3,25 +3,29 @@ Change Log
|
|||||||
|
|
||||||
All notable changes to the project are documented in this file.
|
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: <https://www.kernelkit.org>
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|
||||||
- Upgrade Linux kernel to 6.18.15 (LTS)
|
- Upgrade Linux kernel to 6.18.15 (LTS)
|
||||||
- Upgrade Buildroot to 2025.02.11 (LTS)
|
- Upgrade Buildroot to 2025.02.11 (LTS)
|
||||||
- Upgrade FRR to 10.5.1
|
- Upgrade FRR to 10.5.1
|
||||||
- Add support for Microchip SAMA7G54-EK Evaluation Kit, Arm Cortex-A7
|
- Add support for [Microchip SAMA7G54][SAMA7G54-EK] Evaluation Kit, Arm Cortex-A7
|
||||||
- Add GPS/GNSS receiver support with NTP reference clock integration
|
|
||||||
- Add support for [Banana Pi R3 Mini][BPI-R3-MINI], a 2 port router with 2 WiFi chip,
|
- 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)
|
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
|
### 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
|
[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
|
[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
|
- Prevent MOTD from showing on non-shell user login attempts
|
||||||
- Fix mDNS reflector.
|
- 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
|
[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
|
not supported (yet) in Infix, issue #709
|
||||||
- The default builds now include the curiOS nftables container image,
|
- The default builds now include the curiOS nftables container image,
|
||||||
which can be used for advanced firewall setups. For an introduction
|
which can be used for advanced firewall setups. For an introduction
|
||||||
see <https://kernelkit.org/posts/firewall-container/>
|
see <https://www.kernelkit.org/posts/firewall-container/>
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
|
|
||||||
@@ -1927,7 +1931,8 @@ Supported YANG models in addition to those used by sysrepo and netopeer:
|
|||||||
- N/A
|
- N/A
|
||||||
|
|
||||||
[buildroot]: https://buildroot.org/
|
[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
|
[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.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
|
[v25.10.0]: https://github.com/kernelkit/infix/compare/v25.09.0...v26.10.0
|
||||||
|
|||||||
+2
-2
@@ -295,7 +295,7 @@ linux-pc:# ssh admin@infix-c0-ff-ee.local
|
|||||||
(admin@infix-c0-ff-ee.local) Password:
|
(admin@infix-c0-ff-ee.local) Password:
|
||||||
.-------.
|
.-------.
|
||||||
| . . | Infix OS — Immutable.Friendly.Secure
|
| . . | Infix OS — Immutable.Friendly.Secure
|
||||||
|-. v .-| https://kernelkit.org
|
|-. v .-| https://www.kernelkit.org
|
||||||
'-'---'-
|
'-'---'-
|
||||||
|
|
||||||
Run the command 'cli' for interactive OAM
|
Run the command 'cli' for interactive OAM
|
||||||
@@ -335,7 +335,7 @@ linux-pc:# ssh admin@infix.local
|
|||||||
(admin@infix.local) Password:
|
(admin@infix.local) Password:
|
||||||
.-------.
|
.-------.
|
||||||
| . . | Infix OS — Immutable.Friendly.Secure
|
| . . | Infix OS — Immutable.Friendly.Secure
|
||||||
|-. v .-| https://kernelkit.org
|
|-. v .-| https://www.kernelkit.org
|
||||||
'-'---'-
|
'-'---'-
|
||||||
|
|
||||||
Run the command 'cli' for interactive OAM
|
Run the command 'cli' for interactive OAM
|
||||||
|
|||||||
+1
-1
@@ -87,7 +87,7 @@ example login: <b>admin</b>
|
|||||||
Password:
|
Password:
|
||||||
.-------.
|
.-------.
|
||||||
| . . | Infix OS — Immutable.Friendly.Secure
|
| . . | Infix OS — Immutable.Friendly.Secure
|
||||||
|-. v .-| https://kernelkit.org
|
|-. v .-| https://www.kernelkit.org
|
||||||
'-'---'-'
|
'-'---'-'
|
||||||
|
|
||||||
Run the command 'cli' for interactive OAM
|
Run the command 'cli' for interactive OAM
|
||||||
|
|||||||
@@ -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:
|
admin@fe80::0053:00ff:fe06:1101%eth1's password:
|
||||||
.-------.
|
.-------.
|
||||||
| . . | Infix OS — Immutable.Friendly.Secure
|
| . . | Infix OS — Immutable.Friendly.Secure
|
||||||
|-. v .-| https://kernelkit.org
|
|-. v .-| https://www.kernelkit.org
|
||||||
'-'---'-'
|
'-'---'-'
|
||||||
|
|
||||||
Run the command 'cli' for interactive OAM
|
Run the command 'cli' for interactive OAM
|
||||||
|
|||||||
+1
-1
@@ -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: *****
|
admin@fe80::ff:fe00:0%eth0's password: *****
|
||||||
.-------.
|
.-------.
|
||||||
| . . | Infix OS — Immutable.Friendly.Secure
|
| . . | Infix OS — Immutable.Friendly.Secure
|
||||||
|-. v .-| https://kernelkit.org
|
|-. v .-| https://www.kernelkit.org
|
||||||
'-'---'-'
|
'-'---'-'
|
||||||
|
|
||||||
Run the command 'cli' for interactive OAM
|
Run the command 'cli' for interactive OAM
|
||||||
|
|||||||
+1
-1
@@ -152,7 +152,7 @@ infix-00-00-00 login: admin
|
|||||||
Password:
|
Password:
|
||||||
.-------.
|
.-------.
|
||||||
| . . | Infix OS — Immutable.Friendly.Secure
|
| . . | Infix OS — Immutable.Friendly.Secure
|
||||||
|-. v .-| https://kernelkit.org
|
|-. v .-| https://www.kernelkit.org
|
||||||
'-'---'-'
|
'-'---'-'
|
||||||
|
|
||||||
Run the command 'cli' for interactive OAM
|
Run the command 'cli' for interactive OAM
|
||||||
|
|||||||
+1
-1
@@ -170,7 +170,7 @@ example login: <b>admin</b>
|
|||||||
Password:
|
Password:
|
||||||
.-------.
|
.-------.
|
||||||
| . . | Infix OS — Immutable.Friendly.Secure
|
| . . | Infix OS — Immutable.Friendly.Secure
|
||||||
|-. v .-| https://kernelkit.org
|
|-. v .-| https://www.kernelkit.org
|
||||||
'-'---'-'
|
'-'---'-'
|
||||||
|
|
||||||
Run the command 'cli' for interactive OAM
|
Run the command 'cli' for interactive OAM
|
||||||
|
|||||||
+1
-1
@@ -170,6 +170,6 @@ plugins:
|
|||||||
|
|
||||||
extra:
|
extra:
|
||||||
generator: false
|
generator: false
|
||||||
homepage: https://kernelkit.org/
|
homepage: https://www.kernelkit.org/
|
||||||
version:
|
version:
|
||||||
provider: mike
|
provider: mike
|
||||||
|
|||||||
+4
-3
@@ -466,7 +466,7 @@ static int curl(char *op, const char *path, const char *uri)
|
|||||||
{
|
{
|
||||||
char *argv[10] = { "curl", "-L", NULL };
|
char *argv[10] = { "curl", "-L", NULL };
|
||||||
int err = 1, i = 2;
|
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;
|
argv[i++] = op;
|
||||||
|
|
||||||
@@ -492,7 +492,8 @@ static int curl(char *op, const char *path, const char *uri)
|
|||||||
|
|
||||||
out:
|
out:
|
||||||
free(argv[path_i]);
|
free(argv[path_i]);
|
||||||
free(argv[uri_i]);
|
if (uri_i)
|
||||||
|
free(argv[uri_i]);
|
||||||
if (user_i)
|
if (user_i)
|
||||||
free(argv[user_i]);
|
free(argv[user_i]);
|
||||||
return err;
|
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
|
* meaningful name instead: the datastore's on-disk filename, or the
|
||||||
* source file's own basename.
|
* 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;
|
const char *bn, *slash;
|
||||||
|
|
||||||
if (srcds && srcds->path) {
|
if (srcds && srcds->path) {
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ static void add(const char *ifname, struct lyd_node *cfg)
|
|||||||
|
|
||||||
fprintf(fp, "# Generated by Infix confd\n");
|
fprintf(fp, "# Generated by Infix confd\n");
|
||||||
fprintf(fp, "metric=%s\n", metric);
|
fprintf(fp, "metric=%s\n", metric);
|
||||||
fprintf(fp, "service <!> name:dhcp-client :%s <net/%s/running> \\\n"
|
fprintf(fp, "service <!pid/netd> name:dhcp-client :%s <net/%s/running> \\\n"
|
||||||
" [2345] udhcpc -f -p /run/dhcp-client-%s.pid -t 3 -T 5 -A 30 %s -S -R \\\n"
|
" [2345] udhcpc -f -p /run/dhcp-client-%s.pid -t 3 -T 5 -A 30 %s -S -R \\\n"
|
||||||
" %s%s \\\n"
|
" %s%s \\\n"
|
||||||
" -i %s %s %s \\\n"
|
" -i %s %s %s \\\n"
|
||||||
|
|||||||
+11
-12
@@ -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_find_interfaces_on_radio(interfaces_config, name,
|
||||||
&wifi_iface_list, &wifi_iface_count);
|
&wifi_iface_list, &wifi_iface_count);
|
||||||
|
|
||||||
|
if (wifi_iface_list) {
|
||||||
if (!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);
|
||||||
/* Generate AP config (hostapd) for all APs on this radio */
|
if (rc != SR_ERR_OK)
|
||||||
rc = wifi_gen_aps_on_radio(name, interfaces_config, cwifi_radio, config);
|
ERROR("Failed to generate AP config for radio %s", name);
|
||||||
if (rc != SR_ERR_OK)
|
}
|
||||||
ERROR("Failed to generate AP config for radio %s", name);
|
free(wifi_iface_list);
|
||||||
/* Free the interface list */
|
wifi_iface_list = NULL;
|
||||||
free(wifi_iface_list);
|
wifi_iface_count = 0;
|
||||||
wifi_iface_list = NULL;
|
}
|
||||||
wifi_iface_count = 0;
|
|
||||||
} else if (!strcmp(class, "infix-hardware:gps")) {
|
} else if (!strcmp(class, "infix-hardware:gps")) {
|
||||||
if (event != SR_EV_DONE)
|
if (event != SR_EV_DONE)
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -458,7 +458,8 @@ static void frr_daemons_write(int ospfd, int ripd, int bfdd)
|
|||||||
fp);
|
fp);
|
||||||
|
|
||||||
fclose(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)
|
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);
|
num = parse_rip(session, lydx_get_child(cplane, "rip"), fp);
|
||||||
if (num > 0) {
|
if (num > 0) {
|
||||||
touch(RIPD_SIGNAL_NEXT);
|
touch(RIPD_SIGNAL_NEXT);
|
||||||
ripd_enabled = 1;
|
|
||||||
netd_enabled = 1;
|
netd_enabled = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -178,9 +178,15 @@
|
|||||||
</COMMAND>
|
</COMMAND>
|
||||||
|
|
||||||
<COMMAND name="upgrade" help="Upgrade image of a container (writable layer is lost!)">
|
<COMMAND name="upgrade" help="Upgrade image of a container (writable layer is lost!)">
|
||||||
<PARAM name="name" ptype="/CONTAINERS" help="Container name" />
|
<PARAM name="name" ptype="/CONTAINERSa" help="Container name" />
|
||||||
|
<SWITCH name="optional" min="0" max="1">
|
||||||
|
<COMMAND name="reset-volumes" help="Delete named volumes, re-initialize from new image (all config lost!)" />
|
||||||
|
</SWITCH>
|
||||||
<ACTION sym="script" out="tty" interrupt="true">
|
<ACTION sym="script" out="tty" interrupt="true">
|
||||||
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
|
||||||
</ACTION>
|
</ACTION>
|
||||||
</COMMAND>
|
</COMMAND>
|
||||||
</COMMAND>
|
</COMMAND>
|
||||||
|
|||||||
@@ -461,7 +461,7 @@ echo "Public: $pub"
|
|||||||
<ACTION sym="printl">peer</ACTION>
|
<ACTION sym="printl">peer</ACTION>
|
||||||
</COMPL>
|
</COMPL>
|
||||||
</PARAM>
|
</PARAM>
|
||||||
<PARAM name="peer_addr" ptype="/STRING" help="Peer IP address" min="0" max="1"/>
|
<PARAM name="peer" ptype="/STRING" help="Peer IP address" min="0" max="1"/>
|
||||||
<SWITCH name="optional" min="0">
|
<SWITCH name="optional" min="0">
|
||||||
<COMMAND name="brief" help="Show brief output" mode="switch"/>
|
<COMMAND name="brief" help="Show brief output" mode="switch"/>
|
||||||
</SWITCH>
|
</SWITCH>
|
||||||
@@ -471,7 +471,7 @@ echo "Public: $pub"
|
|||||||
BRIEF_ARG="brief"
|
BRIEF_ARG="brief"
|
||||||
fi
|
fi
|
||||||
# Pass subcommand, optional peer address, and brief flag
|
# 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
|
||||||
</ACTION>
|
</ACTION>
|
||||||
</COMMAND>
|
</COMMAND>
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ IMAGE_ID="infix-x86_64"
|
|||||||
ARCHITECTURE="x86_64"
|
ARCHITECTURE="x86_64"
|
||||||
HOME_URL=https://github.com/kernelkit/infix/
|
HOME_URL=https://github.com/kernelkit/infix/
|
||||||
VENDOR_NAME="KernelKit"
|
VENDOR_NAME="KernelKit"
|
||||||
VENDOR_HOME="https://kernelkit.org"
|
VENDOR_HOME="https://www.kernelkit.org"
|
||||||
DOCUMENTATION_URL="https://kernelkit.org/infix/"
|
DOCUMENTATION_URL="https://www.kernelkit.org/infix/"
|
||||||
SUPPORT_URL="mailto:kernelkit@googlegroups.com"
|
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."
|
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."
|
||||||
|
|||||||
Reference in New Issue
Block a user