Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
389e0c5
package/feature-wifi: enable more realtek dongles
troglobit Jan 19, 2026
f5c6ac3
package/klish: bump for new command line mark/kill and quote chars
troglobit Jan 24, 2026
ea076e2
board: update static factory-config files with new nacm groups
troglobit Jan 24, 2026
08a72cf
board: fix SIGTERM handling in wan-monitor at shutdown
troglobit Jan 24, 2026
d75ba20
board: simplify usb debugging, allow announcement of new devices
troglobit Jan 19, 2026
5f737ed
board: add missing readme for bsp overview + rebuild
troglobit Jan 24, 2026
496eda7
statd: remove double-close of file descriptor after fclose
troglobit Jan 24, 2026
87a754e
statd: Add rx/tx bitrate to WiFi station operational data
troglobit Jan 24, 2026
6932939
statd: convert 'show ntp [opt]' tables to SimpleTable
troglobit Jan 25, 2026
33f830b
statd: add BSSID to table of available networks
troglobit Jan 24, 2026
6c41dc3
confd: add probe-timeout for wifi dongles
troglobit Jan 23, 2026
dabe4ae
confd: fix wifi class interence of radioN hardware components
troglobit Jan 23, 2026
a4b325c
confd: refactor and code cleanup
troglobit Jan 23, 2026
480447c
confd: interfaces depend on hardware, fix ordering
troglobit Jan 23, 2026
da80127
confd: use dummy interface in lieu of missing radios
troglobit Jan 23, 2026
a742253
confd: minor adjustments to wifi config file handling
troglobit Jan 24, 2026
c7d219f
confd: add missing interface type descriptions
troglobit Jan 24, 2026
b060495
utils: adjust ChangeLog update in kernel-upgrade.sh
troglobit Jan 24, 2026
8f1c4d6
utils: new script, extract-changelog.md for releases
troglobit Jan 24, 2026
e60ca12
bin: capture cpu/soc/core temperture for 'show system'
troglobit Jan 24, 2026
5fdd2cb
bin: minor, coding style
troglobit Jan 24, 2026
2b34597
doc: add cli terminal output styling for examples
troglobit Jan 24, 2026
ade6922
doc: update wifi.md, mnore realtek dongles tested, probe-timeout etc
troglobit Jan 23, 2026
c19f62f
doc: update firewall and networking guides to new example format
troglobit Jan 24, 2026
0154d55
doc: fix mkdocs build warnings
troglobit Jan 24, 2026
1fb9705
doc: split networking.md into multiple files
troglobit Jan 24, 2026
b031f52
doc: update remaining guides to new example format
troglobit Jan 25, 2026
d938d48
doc: update ChangeLog
troglobit Jan 24, 2026
68a638c
Slight refresh
troglobit Jan 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,11 +104,7 @@ jobs:

- name: Extract ChangeLog entry ...
run: |
awk '/^-----*$/{if (x == 1) exit; x=1;next}x' doc/ChangeLog.md \
|head -n -1 > release.md
echo "" >> release.md
echo "> [!TIP]" >> release.md
echo "> **Try Infix in GNS3!** Download the appliance from the [GNS3 Marketplace](https://gns3.com/marketplace/appliances/infix) to test Infix in a virtual network environment without hardware." >> release.md
cat doc/ChangeLog.md | ./utils/extract-changelog.sh > release.md
cat release.md

- uses: ncipollo/release-action@v1
Expand Down
53 changes: 25 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,12 @@ if something goes wrong. Deploy once, trust forever.

**🤝 Friendly**
Actually easy to use. Auto-generated CLI from standard YANG models comes
with built-in help for every command — just hit `?` or TAB for
context-aware assistance. Familiar NETCONF/RESTCONF APIs and
[comprehensive documentation][4] mean you're never stuck. Whether
you're learning networking or managing enterprise infrastructure.
with built-in help for every command — just hit <kbd>?</kbd> or
<kbd>TAB</kbd> for context-aware assistance.

Familiar NETCONF & RESTCONF APIs and [comprehensive documentation][4]
mean you're never stuck. Whether you're learning networking or managing
enterprise infrastructure.

**🛡️ Secure**
Built with security as a foundation, not an afterthought. Minimal
Expand Down Expand Up @@ -53,27 +55,24 @@ your device, your rules.
Consistent tooling from development to production deployment.
How about a digital twin using raw Qemu or [GNS3](https://gns3.com/infix)!

## See It In Action
## Quick Example

Configure an interface in seconds - the CLI guides you with built-in help:

<details><summary><b>Click Here for an example CLI Session</b></summary>

```bash
admin@infix-12-34-56:/> configure
admin@infix-12-34-56:/config/> edit interface eth0
admin@infix-12-34-56:/config/interface/eth0/> set ipv4 <TAB>
address autoconf bind-ni-name enabled
forwarding mtu neighbor
admin@infix-12-34-56:/config/interface/eth0/> set ipv4 address 192.168.2.200 prefix-length 24
admin@infix-12-34-56:/config/interface/eth0/> show
<pre><code>admin@infix-12-34-56:/> <b>configure</b>
admin@infix-12-34-56:/config/> <b>edit interface eth0</b>
admin@infix-12-34-56:/config/interface/eth0/> <b>set ipv4</b> <kbd>TAB</kbd>
address autoconf bind-ni-name dhcp
enabled forwarding mtu neighbor
admin@infix-12-34-56:/config/interface/eth0/> <b>set ipv4 address 192.168.2.200 prefix-length 24</b>
admin@infix-12-34-56:/config/interface/eth0/> <b>show</b>
type ethernet;
ipv4 {
address 192.168.2.200 {
prefix-length 24;
}
}
admin@infix-12-34-56:/config/interface/eth0/> diff
admin@infix-12-34-56:/config/interface/eth0/> <b>diff</b>
interfaces {
interface eth0 {
+ ipv4 {
Expand All @@ -83,25 +82,23 @@ interfaces {
+ }
}
}
admin@infix-12-34-56:/config/interface/eth0/> leave
admin@infix-12-34-56:/> show interfaces
INTERFACE PROTOCOL STATE DATA
admin@infix-12-34-56:/config/interface/eth0/> <b>leave</b>
admin@infix-12-34-56:/> <b>show interfaces</b>
<u>INTERFACE PROTOCOL STATE DATA </u>
eth0 ethernet UP 52:54:00:12:34:56
ipv4 192.168.2.200/24 (static)
ipv6 fe80::5054:ff:fe12:3456/64 (link-layer)
lo ethernet UP 00:00:00:00:00:00
ipv4 127.0.0.1/8 (static)
ipv6 ::1/128 (static)
admin@infix-12-34-56:/> copy running-config startup-config
```

Notice how TAB completion shows available options, `show` displays
current config, and `diff` shows exactly what changed before you
commit your changes with the `leave` command.
admin@infix-12-34-56:/> <b>copy running startup</b>
</code></pre>

</details>
Notice how <kbd>TAB</kbd> completion shows available options, `show`
displays current config, and `diff` shows exactly what changed before
you commit your changes with the `leave` command.

> [Full CLI documentation][3]
For more information, see [CLI documentation][3].

## Get Started

Expand All @@ -111,7 +108,7 @@ containers for any custom functionality you need.

### Supported Platforms

- **Raspberry Pi 4B** - Perfect for home labs, learning, and prototyping
- **Raspberry Pi 2B/3B/4B/CM4** - Perfect for home labs, learning, and prototyping
- **Banana Pi-R3** - Your next home router and gateway
- **NanoPi R2S** - Compact dual-port router in a tiny package
- **x86_64** - Run in VMs or on mini PCs for development and testing
Expand Down
18 changes: 18 additions & 0 deletions board/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
Board Support
=============

The board support for an architecture always starts with Qemu support,
this is what each `linux_defconfig` at the very least sets up. Then
each `$BR2_ARCH` has additional BSPs, e.g., Banana Pi BPI-R3.

The `board/` directory is matched with the `configs/*_defconfigs` and
the only execption is `board/common/`, which holds all shared files for
Infix builds.

Each `board/$BR2_ARCH/` can then have vendor/product sub-directories
for the BSPs which may contain "fixups" to the base kernel config and
any additional device tree files that should be included as well.

To rebuild a board-specific package, e.g. NanoPi R2S:

make friendlyarm-nanopi-r2s-rebuild all
1 change: 1 addition & 0 deletions board/aarch32/linux_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,7 @@ CONFIG_SND_SOC=y
CONFIG_SND_BCM2835_SOC_I2S=y
CONFIG_HID_GENERIC=m
CONFIG_USB=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
CONFIG_USB_OTG=y
CONFIG_USB_STORAGE=y
CONFIG_USB_DWC2=y
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,24 @@
},
"ietf-netconf-acm:nacm": {
"enable-nacm": true,
"read-default": "permit",
"write-default": "permit",
"exec-default": "permit",
"groups": {
"group": [
{
"name": "admin",
"user-name": [
"admin"
]
},
{
"name": "operator",
"user-name": []
},
{
"name": "guest",
"user-name": []
}
]
},
Expand All @@ -114,18 +125,63 @@
}
]
},
{
"name": "operator-acl",
"group": [
"operator"
],
"rule": [
{
"name": "permit-system-rpcs",
"module-name": "ietf-system",
"rpc-name": "*",
"access-operations": "exec",
"action": "permit",
"comment": "Operators can reboot, shutdown, and set system time."
}
]
},
{
"name": "guest-acl",
"group": [
"guest"
],
"rule": [
{
"name": "deny-all-write+exec",
"module-name": "*",
"access-operations": "create update delete exec",
"action": "deny",
"comment": "Guests cannot change anything or exec rpcs."
}
]
},
{
"name": "default-deny-all",
"group": [
"*"
],
"rule": [
{
"name": "deny-password-read",
"module-name": "ietf-system",
"name": "deny-password-access",
"path": "/ietf-system:system/authentication/user/password",
"access-operations": "*",
"action": "deny"
"action": "deny",
"comment": "No user except admins can access password hashes."
},
{
"name": "deny-keystore-access",
"module-name": "ietf-keystore",
"access-operations": "*",
"action": "deny",
"comment": "No user except admins can access cryptographic keys."
},
{
"name": "deny-truststore-access",
"module-name": "ietf-truststore",
"access-operations": "*",
"action": "deny",
"comment": "No user except admins can access trust store."
}
]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -226,13 +226,24 @@
},
"ietf-netconf-acm:nacm": {
"enable-nacm": true,
"read-default": "permit",
"write-default": "permit",
"exec-default": "permit",
"groups": {
"group": [
{
"name": "admin",
"user-name": [
"admin"
]
},
{
"name": "operator",
"user-name": []
},
{
"name": "guest",
"user-name": []
}
]
},
Expand All @@ -252,18 +263,63 @@
}
]
},
{
"name": "operator-acl",
"group": [
"operator"
],
"rule": [
{
"name": "permit-system-rpcs",
"module-name": "ietf-system",
"rpc-name": "*",
"access-operations": "exec",
"action": "permit",
"comment": "Operators can reboot, shutdown, and set system time."
}
]
},
{
"name": "guest-acl",
"group": [
"guest"
],
"rule": [
{
"name": "deny-all-write+exec",
"module-name": "*",
"access-operations": "create update delete exec",
"action": "deny",
"comment": "Guests cannot change anything or exec rpcs."
}
]
},
{
"name": "default-deny-all",
"group": [
"*"
],
"rule": [
{
"name": "deny-password-read",
"module-name": "ietf-system",
"name": "deny-password-access",
"path": "/ietf-system:system/authentication/user/password",
"access-operations": "*",
"action": "deny"
"action": "deny",
"comment": "No user except admins can access password hashes."
},
{
"name": "deny-keystore-access",
"module-name": "ietf-keystore",
"access-operations": "*",
"action": "deny",
"comment": "No user except admins can access cryptographic keys."
},
{
"name": "deny-truststore-access",
"module-name": "ietf-truststore",
"access-operations": "*",
"action": "deny",
"comment": "No user except admins can access trust store."
}
]
}
Expand Down
Loading