Configuration reference#
Every configurable field, addressed by the CLI path used with set and delete. The same paths back the web UI configuration editor and the GET /api/v1/config/schema endpoint, so all three surfaces agree by construction.
Fields marked secret are stored encrypted and read back as a redaction placeholder — show configuration and | display set never disclose them.
Sections#
accountingaddress-poolalertingapi-rate-limitauthbinding-persistencecapturecgndataplanefrrlicensingloggingmanagementprotocolsroutingsecuritysnmpsource-vrf-rulesubscriberssyslogsystemwalled-gardenweb-ui
accounting#
| Path | Type | Accepted values | Description |
|---|---|---|---|
accounting driver |
String | servicebus, radius |
Accounting driver (servicebus or radius) |
accounting interim-interval |
Int | — | Accounting interim interval in seconds |
accounting radius max-buffer-size |
Int | — | RADIUS accounting max buffer size |
accounting radius transport-vrf |
String | <configured VRF name> |
VRF for accounting RADIUS transport |
accounting servicebus connection-string |
String | — | Azure Service Bus connection string (secret) |
accounting servicebus max-batch-size |
Int | — | Max messages per Service Bus batch |
accounting servicebus max-buffer-size |
Int | — | Maximum records buffered to local disk when Service Bus is unreachable |
accounting servicebus max-retries |
Int | — | Send attempts before a batch is buffered locally |
accounting servicebus nas-client-type |
String | — | NAS client type reported in each accounting record |
accounting servicebus nas-identifier |
String | — | NAS identifier reported in each accounting record |
accounting servicebus nas-ip-address |
IpV4Address | — | NAS IP address reported in each accounting record |
accounting servicebus queue-name |
String | — | Service Bus queue name |
accounting servicebus send-timeout |
Int | — | Per-batch send timeout in seconds |
accounting servicebus source |
String | — | Source name stamped on records, identifying this appliance fleet |
accounting servicebus source-instance |
String | — | Instance name stamped on records, identifying this box |
accounting radius server <host>#
RADIUS accounting servers (empty = reuse auth servers, port+1)
A keyed list: set accounting radius server <host> <field> <value> creates or updates an entry; delete accounting radius server <host> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
port |
Int | — | RADIUS server UDP port |
secret |
String | — | RADIUS shared secret (secret) |
weight |
Int | — | Load-balancing weight |
address-pool#
address-pool <name>#
Dynamic address pool referenced by name from AAA (Framed-Pool, Framed-IPv6-Pool, Delegated-IPv6-Prefix-Pool)
A keyed list: set address-pool <name> <field> <value> creates or updates an entry; delete address-pool <name> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
announce |
String (list) | — | Subnets announced into BGP as an aggregate (adds the subnet if absent). Must be off for IPv4 in a VRF translated by on-box CGN |
delegation-length |
Int | — | Prefix length delegated to each subscriber (ipv6-pd only, 16-64) |
description |
String | — | Free-text description |
exclude |
String (list) | — | An address or prefix inside the pool's subnets that is never allocated |
family |
String | ipv4, ipv6-wan, ipv6-pd |
What the pool hands out: ipv4 (/32s), ipv6-wan (a /64 per subscriber) or ipv6-pd (delegated prefixes) |
subnet |
String (list) | — | A subnet this appliance allocates from (CIDR, host bits zero). Removing one disconnects the sessions holding addresses in it |
vrf |
String | <configured VRF name> |
VRF the pool's addresses live in; empty = the default table |
alerting#
| Path | Type | Accepted values | Description |
|---|---|---|---|
alerting bus kinds |
String | alarm, event, both |
Kinds the bus sink accepts: alarm|event|both |
alerting bus min-severity |
String | critical, major, minor, warning, info |
Severity floor for the bus sink (default info) |
alerting bus queue-name |
String | — | Azure Service Bus queue for alert notifications |
alerting bus transport-vrf |
String | <configured VRF name> |
VRF metadata for the bus sink |
alerting enabled |
Bool | — | Run the alerting subsystem (alarm manager + sink fan-out) |
alerting rate-limit events-per-minute |
Int | — | Global transient-event flood cap (per alarm ID) |
alerting sinks |
String (list) | syslog, snmp, webhook, smtp, bus |
Enabled delivery sinks (multi-select): syslog|snmp|webhook|smtp |
alerting smtp from |
String | — | Envelope From address |
alerting smtp host |
String | — | External SMTP server hostname |
alerting smtp kinds |
String | alarm, event, both |
Kinds the SMTP sink accepts: alarm|event|both |
alerting smtp min-severity |
String | critical, major, minor, warning, info |
Severity floor for the SMTP sink (default critical) |
alerting smtp password |
String | — | SMTP AUTH password (secret) (secret) |
alerting smtp port |
Int | — | SMTP port: 25|587|465|custom |
alerting smtp subject |
String | — | Subject template ({severity}/{id}/{state}) |
alerting smtp timeout |
Int | — | SMTP send timeout in seconds |
alerting smtp tls-mode |
String | none, starttls, implicit |
TLS mode: none|starttls|implicit |
alerting smtp tls-verify |
Bool | — | Verify the SMTP server's TLS certificate |
alerting smtp to |
String (list) | — | Recipient address(es) |
alerting smtp transport-vrf |
String | <configured VRF name> |
VRF the SMTP socket egresses from |
alerting smtp username |
String | — | SMTP AUTH username (empty = no auth) |
alerting snmp kinds |
String | alarm, event, both |
Kinds the SNMP sink accepts: alarm|event|both |
alerting snmp min-severity |
String | critical, major, minor, warning, info |
Severity floor for the SNMP trap sink (default minor) |
alerting snmp transport-vrf |
String | <configured VRF name> |
VRF the SNMP trap socket egresses from (sink default) |
alerting spool-size |
Int | — | Per-sink in-memory alert spool (drop-oldest) |
alerting syslog kinds |
String | alarm, event, both |
Kinds the syslog sink accepts: alarm|event|both |
alerting syslog min-severity |
String | critical, major, minor, warning, info |
Severity floor for the syslog sink (default info = all) |
alerting syslog transport-vrf |
String | — | VRF used to reach the syslog sink for alerts |
alerting webhook auth-secret |
String | — | Bearer auth token added as Authorization header (secret) (secret) |
alerting webhook kinds |
String | alarm, event, both |
Kinds the webhook sink accepts: alarm|event|both |
alerting webhook method |
String | POST, GET |
HTTP method: POST (JSON body) or GET (query string) |
alerting webhook min-severity |
String | critical, major, minor, warning, info |
Severity floor for the webhook sink (default major) |
alerting webhook timeout |
Int | — | Per-request timeout (seconds) |
alerting webhook tls-verify |
Bool | — | Verify the receiver's TLS certificate |
alerting webhook transport-vrf |
String | <configured VRF name> |
VRF the webhook socket egresses from |
alerting webhook url |
String | — | Webhook target URL |
alerting alarm <id>#
Per-alarm threshold/severity overrides
A keyed list: set alerting alarm <id> <field> <value> creates or updates an entry; delete alerting alarm <id> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
disabled |
Bool | — | Disable this alarm entirely |
high-water |
Int | — | Raise threshold (%) |
low-water |
Int | — | Clear threshold (%) |
severity |
String | critical, major, minor, warning, info |
Override severity |
alerting snmp destination <host>#
SNMP trap/inform receivers
A keyed list: set alerting snmp destination <host> <field> <value> creates or updates an entry; delete alerting snmp destination <host> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
auth-password |
String | — | v3 auth passphrase (secret) (secret) |
auth-protocol |
String | none, md5, sha |
v3 auth protocol: none|md5|sha |
community |
String | — | v2c community string (secret) (secret) |
engine-boots |
Int | — | v3 authoritative engine boots |
engine-id |
String | — | v3 authoritative engine ID (hex) |
inform |
Bool | — | Send INFORM (acknowledged) instead of TRAP |
port |
Int | — | UDP port (trap default 162) |
priv-password |
String | — | v3 privacy passphrase (secret) (secret) |
priv-protocol |
String | none, aes |
v3 privacy protocol: none|aes |
transport-vrf |
String | <configured VRF name> |
Per-destination VRF override |
user |
String | — | v3 USM security user |
version |
String | 2c, 3 |
SNMP version: 2c|3 |
alerting webhook header <name>#
Custom HTTP request headers
A keyed list: set alerting webhook header <name> <field> <value> creates or updates an entry; delete alerting webhook header <name> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
value |
String | — | Header value |
api-rate-limit#
| Path | Type | Accepted values | Description |
|---|---|---|---|
api-rate-limit control burst |
Int | — | Tight bucket for capture, config and restart controls: maximum burst tokens |
api-rate-limit control requests-per-minute |
Int | — | Tight bucket for capture, config and restart controls: refill tokens per minute |
api-rate-limit default burst |
Int | — | Default /api/v1 request bucket: maximum burst tokens |
api-rate-limit default requests-per-minute |
Int | — | Default /api/v1 request bucket: refill tokens per minute |
api-rate-limit enabled |
Bool | — | Enable post-auth /api/v1 request rate limiting |
api-rate-limit heavy-read burst |
Int | — | Tighter bucket for expensive table dumps and streams: maximum burst tokens |
api-rate-limit heavy-read requests-per-minute |
Int | — | Tighter bucket for expensive table dumps and streams: refill tokens per minute |
auth#
| Path | Type | Accepted values | Description |
|---|---|---|---|
auth database cache-refresh-interval |
Int | — | Auth database cache refresh interval in seconds |
auth database connection-string |
String | — | Database connection string for auth (secret) |
auth driver |
String | database, radius |
Authentication driver (database or radius) |
auth radius coa-allowed-source |
IpAddress (list) | — | RADIUS CoA allowed source IPs |
auth radius coa-port |
Int | — | RADIUS CoA listening port |
auth radius coa-secret |
String | — | RADIUS CoA shared secret (secret) |
auth radius dead-after-failures |
Int | — | Mark RADIUS server dead after N failures |
auth radius max-retries |
Int | — | RADIUS max retries |
auth radius nas-identifier |
String | — | RADIUS NAS identifier |
auth radius nas-ip-address |
IpV4Address | — | RADIUS NAS IP address |
auth radius option82-encoding |
String | bbf-vsa, nas-port-id, calling-station-suffix |
How the Option-82 circuit-id is carried (bbf-vsa|nas-port-id|calling-station-suffix) |
auth radius probe-interval |
Int | — | RADIUS probe interval in milliseconds |
auth radius rate-attribute-mode |
String | auto, strict, bbf, mikrotik, netavo |
Which rate-limit attribute family to honour (auto|strict|bbf|mikrotik|netavo) |
auth radius timeout |
Int | — | RADIUS authentication timeout in milliseconds |
auth radius transport-vrf |
String | <configured VRF name> |
VRF for RADIUS transport |
auth radius server <host>#
RADIUS authentication servers
A keyed list: set auth radius server <host> <field> <value> creates or updates an entry; delete auth radius server <host> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
port |
Int | — | RADIUS server UDP port |
secret |
String | — | RADIUS shared secret (secret) |
weight |
Int | — | Load-balancing weight |
binding-persistence#
| Path | Type | Accepted values | Description |
|---|---|---|---|
binding-persistence enabled |
Bool | — | Persist subscriber bindings so they survive a control-plane restart |
binding-persistence path |
String | — | Path to the binding database |
binding-persistence sweep-interval |
Int | — | How often expired bindings are swept, in seconds |
capture#
| Path | Type | Accepted values | Description |
|---|---|---|---|
capture default-destination-ip |
IpAddress | — | Default GRE mirror destination IP |
capture mirror-allowlist |
String (list) | — | Destinations a GRE capture mirror may be sent to. Empty = no restriction; a populated list is what stops capture being used to exfiltrate subscriber traffic |
capture source-ip |
IpAddress | — | GRE mirror source IP |
cgn#
| Path | Type | Accepted values | Description |
|---|---|---|---|
cgn default-vrf-ip-group |
String | — | CGN IP group translating subscribers in the default table (per-VRF: routing vrf <name> cgn-ip-group) |
cgn enabled |
Bool | — | Run the carrier-grade NAT engine (restart required) |
cgn logger driver |
String (list) | — | Explicit CGN traceability logger. Leaving this unset creates no logger; syslog is best-effort/lossy and is not a durable compliance record |
cgn logger servicebus connection-string |
String | — | Azure Service Bus connection string for CGN compliance records (secret) |
cgn logger servicebus queue-name |
String | — | Service Bus queue for CGN compliance records |
cgn logger spool-size |
Int | — | Per-driver in-memory event spool (events) |
cgn logger syslog-sink |
String | — | Named logging syslog sink used when cgn logger driver includes syslog |
cgn max-bindings |
Int | — | Maximum concurrent NAT bindings (subscribers) |
cgn max-flows |
Int | — | Maximum tracked NAT flows (conntrack ceiling) |
cgn ip-group <name>#
CGNAT public IP groups (pools)
A keyed list: set cgn ip-group <name> <field> <value> creates or updates an entry; delete cgn ip-group <name> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
auto-learn |
String (list) | — | Auto-learn sources as "prefix" or "vrf:prefix" |
binding-timeout |
Int | — | Auto-learned binding inactivity timeout (seconds) |
bypass-prefixes |
String (list) | — | Inside IPv4 prefixes that bypass NAT (CIDR) |
chunk-size |
Int | — | Ports per allocation chunk (power of two, 64-1024) |
description |
String | — | Free-text description |
outside-vrf |
String | <configured VRF name> |
Outside (public) VRF; empty = default table |
port-cap |
Int | — | Per-binding port cap (multiple of chunk-size, max 8 chunks) |
public-subnets |
String (list) | — | Public IPv4 subnets (CIDR) |
quarantine-seconds |
Int | — | Freed port-block hold-down (seconds) |
setups-per-sec |
Int | — | Per-binding flow-setup rate limit (0 = unlimited) |
timeout icmp |
Int | — | ICMP flow timeout (seconds) |
timeout tcp-established |
Int | — | TCP established flow timeout (seconds) |
timeout tcp-transitory |
Int | — | TCP transitory flow timeout (seconds) |
timeout udp |
Int | — | UDP flow timeout (seconds) |
dataplane#
| Path | Type | Accepted values | Description |
|---|---|---|---|
dataplane command-ring-name |
String | — | POSIX shared-memory name of the CP->DP command ring |
dataplane control-punt-limits aggregate-pps |
Int | — | Box-wide aggregate control-punt cap across all tiers (0 disables the tier; unset leaves the data-plane default) |
dataplane control-punt-limits global-pps |
Int | — | Box-wide control-punt cap for traffic not bound to a port/peer/circuit (0 disables the tier; unset leaves the data-plane default) |
dataplane control-punt-limits per-circuit-pps |
Int | — | Box-wide control-punt cap per subscriber circuit (0 disables the tier; unset leaves the data-plane default) |
dataplane control-punt-limits per-peer-pps |
Int | — | Box-wide control-punt cap per protocol peer (0 disables the tier; unset leaves the data-plane default) |
dataplane control-punt-limits per-port-pps |
Int | — | Box-wide control-punt cap per ingress port (0 disables the tier; unset leaves the data-plane default) |
dataplane fib-sync-enabled |
Bool | — | Mirror kernel/FRR routes into the data-plane FIB. On by default and required for forwarding in ipc mode — an escape hatch, not an opt-in |
dataplane ipsec-egress-prefix |
String | — | Prefix whose egress traffic is handed to the IPsec path |
dataplane l2tp-local-ip |
IpV4Address | — | Local IPv4 address the data plane sources L2TP from |
dataplane lcore-map |
String | — | Data-plane worker core map, e.g. "2,3,4,5" (read by the C data plane) |
dataplane max-sessions |
Int | — | Maximum subscriber sessions |
dataplane max-sessions-per-port |
Int | — | Maximum concurrent sessions one ingress port may hold (0 = unlimited). Fairness backstop: without it one access node can fill the whole session table and deny bring-up to every other port |
dataplane max-sessions-per-s-vlan |
Int | — | Maximum concurrent sessions under one (port, S-VLAN) — i.e. one access node or OLT parent tag (0 = unlimited). For QinQ access where many C-VLANs share an S-VLAN |
dataplane mode |
String | mock, dpdk, afxdp |
Data plane mode (mock, dpdk, afxdp) |
dataplane punt-ring-name |
String | — | POSIX shared-memory name of the DP->CP punt ring |
dataplane socket-mem |
String | — | DPDK hugepage memory per NUMA socket in MB, as a string per DPDK convention |
dataplane state-shm-name |
String | — | POSIX shared-memory name of the data-plane session table (read-only to the CP) |
dataplane tx-ring-name |
String | — | POSIX shared-memory name of the CP->DP transmit ring |
dataplane network-interface <name>#
A network-facing data-plane port, keyed by interface name or PCI address
A keyed list: set dataplane network-interface <name> <field> <value> creates or updates an entry; delete dataplane network-interface <name> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
access-protocol |
String (list) | — | Access encapsulations expected on this port. Declaring them lets the data plane spread unhashable traffic (PPPoE/QinQ/L2TP) that hardware RSS cannot |
ifname |
String | — | Kernel interface name (AF_XDP and mock backends) |
label |
String | — | Operator label shown in the UI and interface table, e.g. "MS3 NNI 2" |
mtu |
Int | — | Port MTU |
pci |
String | — | PCI address of a DPDK-bound port, e.g. 0000:3b:00.0 |
punt-address |
String | — | Address assigned to the port's punt TAP, which is what FRR runs its adjacencies on (the DP-bound port is invisible to the kernel) |
rx-queues |
Int | — | Receive queues to configure on the port |
spray |
String | on, off, auto |
Software RSS dispatch for traffic hardware RSS cannot hash: on, off, or auto |
dataplane subscriber-interface <name>#
A subscriber-facing data-plane port, keyed by interface name or PCI address
A keyed list: set dataplane subscriber-interface <name> <field> <value> creates or updates an entry; delete dataplane subscriber-interface <name> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
access-protocol |
String (list) | — | Access encapsulations expected on this port. Declaring them lets the data plane spread unhashable traffic (PPPoE/QinQ/L2TP) that hardware RSS cannot |
ifname |
String | — | Kernel interface name (AF_XDP and mock backends) |
label |
String | — | Operator label shown in the UI and interface table, e.g. "MS3 NNI 2" |
mtu |
Int | — | Port MTU |
pci |
String | — | PCI address of a DPDK-bound port, e.g. 0000:3b:00.0 |
punt-address |
String | — | Address assigned to the port's punt TAP, which is what FRR runs its adjacencies on (the DP-bound port is invisible to the kernel) |
rx-queues |
Int | — | Receive queues to configure on the port |
spray |
String | on, off, auto |
Software RSS dispatch for traffic hardware RSS cannot hash: on, off, or auto |
frr#
| Path | Type | Accepted values | Description |
|---|---|---|---|
frr conf-path |
String | — | Path to frr.conf |
frr daemons-path |
String | — | Path to the FRR daemons file |
frr enable-kernel-mpls |
Bool | — | Enable the kernel MPLS data path so zebra can program the label table |
frr manage |
Bool | — | Let the control plane own frr.conf and /etc/frr/daemons. Off leaves both files alone — routing must then be configured by hand |
frr mpls-platform-labels |
Int | — | Size of the kernel MPLS label space (net.mpls.platform_labels) |
frr reload-method |
String | vtysh, restart |
How configuration is applied: vtysh (hot-apply) or restart. A change to the IGP daemon set forces a restart either way — vtysh cannot start or stop a daemon |
frr zapi-socket-path |
String | — | Path to zebra's ZAPI socket, used to inject subscriber routes |
licensing#
| Path | Type | Accepted values | Description |
|---|---|---|---|
licensing licence-id |
String | — | Licence identifier issued by the licensing server |
licensing mode |
String | — | Licensing mode. A verified lease promotes the effective mode to online regardless (doc 27 §27.9.3), so this cannot be used to disable enforcement |
licensing offline-licence-path |
String | — | Path to a signed offline licence file, for air-gapped deployments |
licensing role |
String | — | Licensing role of this appliance in a redundant pair |
licensing server-url |
String | — | Licensing server base URL |
licensing state-directory |
String | — | Directory holding lease and telemetry state |
licensing telemetry |
String | — | How much telemetry is reported. show licensing telemetry prints exactly what would be sent |
logging#
| Path | Type | Accepted values | Description |
|---|---|---|---|
logging sources alerting enabled |
Bool | — | Enable this log source class |
logging sources alerting min-severity |
String | debug, info, notice, warning, error, critical |
Minimum severity accepted from this source class |
logging sources alerting spool-size |
Int | — | Reserved queue size for this source class |
logging sources cgn-traceability enabled |
Bool | — | Enable this log source class |
logging sources cgn-traceability min-severity |
String | debug, info, notice, warning, error, critical |
Minimum severity accepted from this source class |
logging sources cgn-traceability spool-size |
Int | — | Reserved queue size for this source class |
logging sources events enabled |
Bool | — | Enable this log source class |
logging sources events min-severity |
String | debug, info, notice, warning, error, critical |
Minimum severity accepted from this source class |
logging sources events spool-size |
Int | — | Reserved queue size for this source class |
logging sources host-logs enabled |
Bool | — | Enable this log source class |
logging sources host-logs min-severity |
String | debug, info, notice, warning, error, critical |
Minimum severity accepted from this source class |
logging sources host-logs spool-size |
Int | — | Reserved queue size for this source class |
logging sources host-logs units |
String (list) | frr, kernel, bng-dataplane |
Host log streams to ship: frr, kernel, bng-dataplane |
logging sink <name>#
Named log-export sink registry
A keyed list: set logging sink <name> <field> <value> creates or updates an entry; delete logging sink <name> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
destination |
String | — | Collector host, address or URL for this sink |
enabled |
Bool | — | Whether this sink exports anything (a disabled sink stays resolvable by name) |
max-message-bytes |
Int | — | Maximum encoded syslog event size before truncation |
min-severity |
String | debug, info, notice, warning, error, critical |
Sink severity floor |
port |
Int | — | Collector port |
protocol |
String | udp, tcp, tls |
Transport protocol for syslog sinks: udp, tcp or tls |
sources |
String (list) | events, alerting, cgn-traceability, host-logs |
Streams sent to this sink: events, alerting, cgn-traceability, host-logs |
tls ca-file |
String | — | CA bundle used to verify the remote TLS certificate |
tls certificate-file |
String | — | Client certificate file for mutual TLS |
tls key-file |
String | — | Client private key file for mutual TLS |
tls server-name |
String | — | TLS SNI/verification name when the destination is an IP |
tls verify |
Bool | — | Verify the remote TLS certificate where the transport uses TLS |
transport-vrf |
String | <configured VRF name> |
Linux VRF device for the collector socket; DNS still uses the host resolver |
type |
String | — | Sink type. Supported now: syslog; future types keep this shape |
management#
| Path | Type | Accepted values | Description |
|---|---|---|---|
management gateway |
String | — | Default gateway to move into the management VRF |
management interface |
String | — | Management interface to isolate into a VRF. Unset leaves host networking untouched |
management table-id |
Int | — | Route table id for the host management VRF |
management vrf |
String | — | Name of the host management VRF |
protocols#
| Path | Type | Accepted values | Description |
|---|---|---|---|
protocols dhcp default-lease-time |
Int | — | Default DHCP lease time in seconds |
protocols dhcp gateway-mac |
MacAddress | — | DHCP gateway MAC address |
protocols dhcp options acs-url |
String | — | DHCP ACS URL (TR-069) |
protocols dhcp options aftr-name |
String | — | DS-Lite AFTR name (DHCPv6 option 64) |
protocols dhcp options domain-name |
String | — | DHCP domain name option |
protocols dhcp options domain-search |
String (list) | — | DHCP domain search list |
protocols dhcp options domain-search-v6 |
String (list) | — | DHCPv6 domain search list |
protocols dhcp options mtu |
Int | — | DHCP MTU option |
protocols dhcp options ntp-server |
IpV4Address (list) | — | DHCP NTP servers |
protocols dhcp options ntp-server-v6 |
IpV6Address (list) | — | DHCPv6 NTP servers |
protocols dhcp options provisioning-code |
String | — | DHCP provisioning code |
protocols dhcp server-ip |
IpV4Address | — | DHCP server IP address |
protocols ipoe enabled |
Bool | — | Terminate IPoE (DHCP-learned) subscribers |
protocols ipoe lease-seconds |
Int | — | DHCP lease time offered to IPoE subscribers |
protocols ipoe server-duid |
String | — | DHCPv6 server DUID |
protocols ipoe server-ip |
IpV4Address | — | Address the DHCP server answers from |
protocols ipoe server-mac |
MacAddress | — | MAC used as the gateway for IPoE subscribers |
protocols ipoe username-mode |
String | — | How a subscriber identity is derived from the circuit (TR-101 Option 82 fields) |
protocols l2tp auth-protocol |
String | pap, chap, mschapv2 |
PPP authentication to negotiate with the subscriber |
protocols l2tp cdn-delay-after-lcp-terminate-ms |
Int | — | Milliseconds to wait for the LAC's own CDN after a subscriber LCP Terminate before sending ours (0 = immediately); applied live |
protocols l2tp challenge-peer |
Bool | — | Require the peer to answer the tunnel authentication challenge |
protocols l2tp debug-avp-dump |
Bool | — | Log every AVP of each incoming SCCRQ/ICRQ/ICCN (secrets masked) to see what a LAC sends; applied live |
protocols l2tp enabled |
Bool | — | Terminate L2TP as an LNS |
protocols l2tp host-name |
String | — | Hostname sent in the L2TP SCCRQ/SCCRP — the LAC may match on it |
protocols l2tp icrq-burst-per-source |
Int | — | Inbound ICRQ token-bucket burst per source IP in sessions |
protocols l2tp max-half-open-tunnels |
Int | — | Maximum L2TP tunnels still awaiting SCCCN |
protocols l2tp max-icrq-per-second-per-source |
Double | — | Maximum inbound ICRQ setup rate per source IP in sessions per second |
protocols l2tp max-sessions |
Int | — | Maximum concurrent L2TP sessions (unset = data-plane session table size) |
protocols l2tp max-sessions-per-source |
Int | — | Maximum concurrent L2TP sessions from one source IP |
protocols l2tp max-sessions-per-tunnel |
Int | — | Maximum concurrent L2TP sessions on one tunnel |
protocols l2tp max-tunnels |
Int | — | Maximum concurrent L2TP tunnels |
protocols l2tp max-tunnels-per-source |
Int | — | Maximum concurrent L2TP tunnels from one source IP |
protocols l2tp ppp-echo-interval-seconds |
Int | — | Seconds between PPP LCP Echo-Requests to each L2TP subscriber (0 = off); applied live |
protocols l2tp ppp-gateway-ip |
IpV4Address | — | Gateway address presented to PPP subscribers on this LNS |
protocols l2tp ppp-max-missed-echoes |
Int | — | Unanswered LCP Echo-Requests before an L2TP subscriber is torn down; applied live |
protocols l2tp reject-called-number-pattern |
String | — | Regex of Called-Number values to reject at call setup |
protocols l2tp route-replies-via-fib |
Bool | — | Route L2TP control replies via the FIB rather than back down the receiving path |
protocols l2tp single-session-per-user |
Bool | — | Replace a user's existing L2TP session (Stop cause 13 + CDN) when the same user authenticates again in the same VRF, e.g. mobile SIMs behind a LAC that restarts; applied live |
protocols l2tp tunnel-mtu |
Int | — | MTU applied to L2TP tunnels |
protocols l2tp tunnel-secret |
String | — | Shared secret for tunnel authentication (default for all listeners) (secret) |
protocols pppoe ac-cookie-enabled |
Bool | — | Enable AC cookie in PPPoE |
protocols pppoe ac-cookie-lifetime |
Int | — | AC cookie lifetime in seconds |
protocols pppoe ac-name |
String | — | PPPoE Access Concentrator name |
protocols pppoe enabled |
Bool | — | Enable PPPoE server |
protocols pppoe l2tp-local-endpoint-ip |
IpV4Address | — | Local endpoint the PPPoE LAC sources L2TP tunnels from |
protocols pppoe max-sessions |
Int | — | Maximum PPPoE sessions |
protocols pppoe padi-bucket-capacity |
Double | — | Per-circuit PADI token-bucket burst in packets |
protocols pppoe padi-bucket-refill-per-second |
Double | — | Per-circuit PADI token-bucket refill rate in packets per second |
protocols pppoe service-name |
String | — | PPPoE service name |
protocols soft-l2tp enabled |
Bool | — | Use the kernel L2TP path with veth listeners |
protocols soft-l2tp remove-on-stop |
Bool | — | Tear the veth listeners down when the control plane stops |
protocols l2tp listener <name>#
An L2TP listener: one endpoint, optionally in its own VRF. Unset fields inherit the protocols l2tp defaults
A keyed list: set protocols l2tp listener <name> <field> <value> creates or updates an entry; delete protocols l2tp listener <name> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
auth-protocol |
String | pap, chap, mschapv2 |
PPP authentication for this listener |
challenge-peer |
Bool | — | Require tunnel authentication |
endpoint-ip |
IpV4Address | — | Local address the listener binds |
ipsec |
Bool | — | Require the tunnel to arrive over IPsec |
ppp-gateway-ip |
IpV4Address | — | Gateway presented to PPP subscribers |
reject-called-number-pattern |
String | — | Regex of Called-Number values this listener rejects |
tunnel-mtu |
Int | — | MTU for tunnels on this listener |
tunnel-secret |
String | — | Shared secret for this listener (secret) |
vrf-name |
String | <configured VRF name> |
VRF the listener's endpoint lives in |
protocols soft-l2tp listener <name>#
A kernel L2TP veth listener
A keyed list: set protocols soft-l2tp listener <name> <field> <value> creates or updates an entry; delete protocols soft-l2tp listener <name> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
endpoint-ip |
IpV4Address | — | Address the listener terminates tunnels on |
kernel-address |
String | — | Address configured on the kernel side of the veth pair |
routing#
| Path | Type | Accepted values | Description |
|---|---|---|---|
routing asn |
Int | — | Local autonomous system number |
routing enable-vrf-ipv6 |
Bool | — | Carry IPv6 inside VRFs (VPNv6 / 6VPE). Kernel-forwarded deployments set this false; global-table IPv6 is unaffected either way |
routing hostname |
String | — | Hostname FRR announces (also the RADIUS NAS-Identifier fallback) |
routing igp interface |
String (list) | — | Interfaces the IGP runs on. Loopbacks (lo/loop/dummy) are made passive; the rest are point-to-point core links and also carry LDP |
routing igp isis level |
String | level-1, level-2-only, level-1-2 |
IS-IS level (instance is-type and each core link's circuit-type) |
routing igp isis net |
String | — | IS-IS ISO NET address, e.g. 49.0001.0102.5525.5001.00 |
routing igp ospf area |
String | — | Default OSPF area for every IGP interface, as a dotted quad (0.0.0.0) or an integer (0) |
routing igp ospf enable-ospfv3 |
Bool | — | Run OSPFv3 (ospf6d) for IPv6 alongside OSPFv2. Unset follows dual-stack — on whenever router-id6 is set |
routing igp ospf interface-area |
String (list) | — | Per-interface OSPF area override, as "interface:area" (e.g. core1:0.0.0.7). Interfaces without an override use routing igp ospf area |
routing igp protocol |
String | isis, ospf, none |
Interior gateway protocol. Changing this restarts FRR — a routing daemon cannot be started or stopped by a configuration reload |
routing management-network address |
String | — | Management interface address in CIDR form, e.g. 10.20.2.11/25 |
routing management-network gateway-ip |
String | — | Next-hop for a default route inside the management VRF's table; unset = connected-subnet reachability only |
routing management-network interface |
String | — | Physical interface to enslave into the isolated out-of-band management VRF |
routing originate-default-route |
Bool | — | Originate an IPv4 default route (0.0.0.0/0) into BGP in the default (global) table |
routing originate-default-route-vrfs |
String (list) | <configured VRF name> |
VRFs to originate an IPv4 default route into (standalone-CGN inside VRFs) |
routing router-id |
IpV4Address | — | IPv4 router id — also the loopback /32 the IGP advertises and the address BGP sources sessions from |
routing router-id6 |
IpV6Address | — | IPv6 loopback /128; setting it makes the box dual-stack (IS-IS multi-topology or OSPFv3, plus BGP ipv6-unicast). Unset = IPv4 only |
routing cpe-gre-circuit <id>#
One CPE/SIM's GRE tunnel and the PE-CE eBGP session inside it. The kernel device name is derived from this id (a SIM reference does not fit in a 15-character interface name)
A keyed list: set routing cpe-gre-circuit <id> <field> <value> creates or updates an entry; delete routing cpe-gre-circuit <id> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
bfd |
Bool | — | Enable BFD on the session — a mobile path can black-hole while the tunnel stays administratively up |
clamp-mss |
Bool | — | Clamp forwarded TCP MSS to the route MTU. On by default because PMTUD is unreliable across tunnels |
description |
String | — | Free text, rendered as the FRR neighbor description (defaults to the id) |
key |
Int | — | GRE key (RFC 2890) — endpoint hygiene on shared transport, not security |
listener-id |
String | — | Which routing gre-tunnel-listener this circuit's tunnel terminates on |
local-tunnel-address |
String | — | Our inner point-to-point address in CIDR form, e.g. 172.31.40.0/31 |
maximum-prefix |
Int | — | Cap on prefixes accepted from this CPE, so one misbehaving site cannot fill the customer VRF's table |
mtu |
Int | — | Tunnel MTU (0 leaves the kernel's GRE default) |
peer-asn |
Int | — | The CPE's autonomous system number |
remote |
String | — | The CPE's outer (carrier-side) IP address |
remote-tunnel-address |
String | — | The CPE's inner address — also the BGP neighbor address (no prefix length) |
vrf |
String | <configured VRF name> |
Customer VRF — both the tunnel device and the BGP peer live here |
routing gre-tunnel-listener <id>#
A shared local endpoint that CPE GRE tunnels terminate on — the outer 'local' address every circuit referencing it is built with
A keyed list: set routing gre-tunnel-listener <id> <field> <value> creates or updates an entry; delete routing gre-tunnel-listener <id> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
local-address |
String | — | Our outer (underlay) address every circuit on this listener uses as the tunnel's local endpoint |
ttl |
Int | — | Outer TTL applied to every tunnel on this listener |
underlay-interface |
String | — | Pin the tunnels' underlay routing to this device. Set it whenever circuits are enslaved to a VRF, or the outer packet is looked up in the customer's table instead of the underlay's |
routing interface <name>#
A locally-provisioned interface the appliance creates at startup: dummy, vlan, gre, or an existing physical NIC it configures but never creates
A keyed list: set routing interface <name> <field> <value> creates or updates an entry; delete routing interface <name> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
address |
String (list) | — | Addresses in CIDR form, IPv4 or IPv6 |
clamp-mss |
Bool | — | gre only: clamp forwarded TCP MSS to the route MTU. On by default because PMTUD is unreliable across tunnels |
key |
Int | — | gre only: GRE key (RFC 2890) — endpoint hygiene, not security |
local |
String | — | gre only: local outer endpoint (unset lets the kernel pick) |
mac |
MacAddress | — | physical only: pin this name to the NIC with this MAC via a systemd .link file, so the name survives reboots and NIC re-enumeration |
mtu |
Int | — | Interface MTU (0 leaves the kernel default) |
parent |
String | — | vlan only: parent device |
pin-via |
String | — | gre only: pin a host route for the tunnel endpoint via this underlay gateway, so a route learned through the tunnel can never claim the tunnel's own endpoint (recursion collapse) |
remote |
String | — | gre only: remote outer tunnel endpoint |
ttl |
Int | — | gre only: outer TTL |
type |
String | dummy, vlan, physical, gre |
dummy (created), vlan (802.1Q sub-interface), physical (existing NIC, never created), or gre (MPLS-capable tunnel) |
vlan-id |
Int | — | vlan only: 802.1Q tag |
vrf |
String | <configured VRF name> |
VRF to enslave the interface into; enslaving flushes addresses |
routing peer <address>#
iBGP peer (route reflector or PE) — keyed by IPv4 address
A keyed list: set routing peer <address> <field> <value> creates or updates an entry; delete routing peer <address> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
bfd |
Bool | — | Enable BFD on the session — the only fast liveness signal on a statically-routed tunnel with no IGP |
description |
String | — | Free-text peer description |
vpn-only |
Bool | — | Activate only the vpnv4/vpnv6 address-families, never ipv4/ipv6 unicast — a remote-PE spoke that keeps its own internet |
routing static-route <prefix>#
Static route rendered into frr.conf (family inferred from the prefix). Routes with a src hint are installed by the provisioner as kernel routes instead
A keyed list: set routing static-route <prefix> <field> <value> creates or updates an entry; delete routing static-route <prefix> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
dev |
String | — | Egress interface (via and/or dev is required) |
src |
String | — | Source-address hint. Routes with this set are installed as kernel routes, not rendered into frr.conf (FRR 10.3 has no working src mechanism), so BGP cannot resolve next-hops over them |
via |
String | — | Next-hop address (via and/or dev is required) |
routing vrf <name>#
L3VPN VRF — becomes a Linux VRF device, so the name is bound by IFNAMSIZ (15 chars, no whitespace or '/')
A keyed list: set routing vrf <name> <field> <value> creates or updates an entry; delete routing vrf <name> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
cgn-ip-group |
String | — | CGN IP group translating subscribers in this VRF (on-box CGN). The VRF's IPv4 address pools are then private and must not be announced |
export-rt |
String (list) | — | Route targets exported from this VRF |
gateway-ip |
IpV4Address | — | IPv4 gateway address the BNG owns inside this VRF |
gateway-ipv6 |
IpV6Address | — | IPv6 gateway address the BNG owns inside this VRF |
import-rt |
String (list) | — | Route targets imported into this VRF |
l2tp-endpoint-ip |
IpV4Address | — | L2TP tunnel endpoint address inside this VRF (LNS role) |
rd |
String | — | Route distinguisher, e.g. 65000:10 |
table-id |
Int | — | Linux route-table id for the VRF. Required — a VRF left at 0 silently fails to create its device and breaks FibSync mapping |
security#
| Path | Type | Accepted values | Description |
|---|---|---|---|
security dp-socket-path |
String | — | Socket path for data plane |
security drop-capabilities |
Bool | — | Drop Linux capabilities after startup |
security ipc-socket-path |
String | — | IPC socket path for control plane |
security service-group |
String | — | Service group name |
security service-user |
String | — | Service user name |
security socket-file-mode |
Int | — | Socket file permission mode (decimal) |
security validate-socket-ownership |
Bool | — | Validate socket file ownership |
snmp#
| Path | Type | Accepted values | Description |
|---|---|---|---|
snmp agentx-perms |
String | — | Permissions applied to the AgentX socket |
snmp agentx-socket-path |
String | — | AgentX socket the subagent connects to |
snmp community |
String | — | SNMPv2c read-only community string (secret) |
snmp conf-path |
String | — | Path to the generated snmpd configuration |
snmp enabled |
Bool | — | Run the SNMP AgentX subagent |
snmp listen-address |
String (list) | — | Agent listen endpoints (e.g. udp:127.0.0.1:161); empty auto-derives |
snmp manage |
Bool | — | Render and own /etc/snmp/snmpd.conf |
snmp sample-interval |
Int | — | Data-plane counter sample interval in seconds |
snmp sys-contact |
String | — | SNMP sysContact string |
snmp sys-location |
String | — | SNMP sysLocation string |
snmp ro-community <community>#
Read-only community grants for remote pollers
A keyed list: set snmp ro-community <community> <field> <value> creates or updates an entry; delete snmp ro-community <community> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
sources |
String (list) | — | Allowed source CIDRs/IPs (a v6 source renders rocommunity6) |
source-vrf-rule#
source-vrf-rule <name>#
Source-subnet VRF classification: route a source subnet arriving in an ingest VRF into a target VRF with no NAT
A keyed list: set source-vrf-rule <name> <field> <value> creates or updates an entry; delete source-vrf-rule <name> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
ingest-vrf |
String | <configured VRF name> |
The VRF traffic arrives in before classification |
source-subnet |
String (list) | — | Source CIDRs that route into target-vrf |
target-vrf |
String | <configured VRF name> |
The VRF matching traffic is routed into (no NAT) |
subscribers#
| Path | Type | Accepted values | Description |
|---|---|---|---|
subscribers default-pools ipv4-pool |
String | — | IPv4 pool for local subscribers with no static IPv4 and no pool of their own |
subscribers default-pools ipv6-pd-pool |
String | — | IPv6 PD pool for local subscribers with no static delegated prefix and no pool of their own |
subscribers default-pools ipv6-wan-pool |
String | — | IPv6 WAN pool for local subscribers with no static IPv6 WAN and no pool of their own |
subscribers ipoe <circuit>#
Local IPoE (DHCP) subscribers, keyed by access circuit (portP.V / portP.S.V, or an Option-82 circuit-id)
A keyed list: set subscribers ipoe <circuit> <field> <value> creates or updates an entry; delete subscribers ipoe <circuit> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
additional-routes |
String (list) | — | Extra site prefixes routed to the subscriber (CIDR) |
dns-1 |
IpV4Address | — | Primary IPv4 DNS server |
dns-2 |
IpV4Address | — | Secondary IPv4 DNS server |
dns-v6-1 |
IpV6Address | — | Primary IPv6 DNS server |
dns-v6-2 |
IpV6Address | — | Secondary IPv6 DNS server |
download-burst |
Int | — | Download burst override (KB); unset = rate-proportional |
download-rate |
Int | — | Download rate (kbit/s) |
download-rate-pps |
Int | — | Download packet rate (pps); 0 = unlimited |
framed-ip |
IpV4Address | — | IPv4 address (omit for v6-only) |
framed-ipv6 |
IpV6Address | — | IPv6 WAN address (omit for v4-only) |
ipv4-pool |
String | — | Dynamic IPv4 address pool, used when no framed-ip is set (else subscribers default-pools) |
ipv6-pd-length |
Int | — | Delegated prefix length (1-64) |
ipv6-pd-pool |
String | — | Dynamic IPv6 delegated-prefix pool, used when no ipv6-pd-prefix is set |
ipv6-pd-prefix |
IpV6Address | — | Delegated IPv6 prefix |
ipv6-wan-pool |
String | — | Dynamic IPv6 WAN pool (a /64 per subscriber), used when no framed-ipv6 is set |
plan-name |
String | — | Service plan name |
service-id |
String | — | Accounting subject id (GUID); optional |
service-type |
String | broadband, sim, ethernet |
Kind of service the service-id names (broadband, sim, ethernet); default broadband |
upload-burst |
Int | — | Upload burst override (KB); unset = rate-proportional |
upload-rate |
Int | — | Upload rate (kbit/s) |
upload-rate-pps |
Int | — | Upload packet rate (pps); 0 = unlimited |
vrf |
String | <configured VRF name> |
VRF the subscriber terminates in; empty = global table |
subscribers ppp <username>#
Local PPP subscribers (username/password; LNS-terminated L2TP and PPPoE-local)
A keyed list: set subscribers ppp <username> <field> <value> creates or updates an entry; delete subscribers ppp <username> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
additional-routes |
String (list) | — | Extra site prefixes routed to the subscriber (CIDR) |
dns-1 |
IpV4Address | — | Primary IPv4 DNS server |
dns-2 |
IpV4Address | — | Secondary IPv4 DNS server |
dns-v6-1 |
IpV6Address | — | Primary IPv6 DNS server |
dns-v6-2 |
IpV6Address | — | Secondary IPv6 DNS server |
download-rate |
Int | — | Download rate (kbit/s) |
download-rate-pps |
Int | — | Download packet rate (pps); 0 = unlimited |
framed-ip |
IpV4Address | — | IPv4 address (omit for v6-only) |
framed-ipv6 |
IpV6Address | — | IPv6 WAN address (omit for v4-only) |
ipv4-pool |
String | — | Dynamic IPv4 address pool, used when no framed-ip is set (else subscribers default-pools) |
ipv6-pd-length |
Int | — | Delegated prefix length (1-64) |
ipv6-pd-pool |
String | — | Dynamic IPv6 delegated-prefix pool, used when no ipv6-pd-prefix is set |
ipv6-pd-prefix |
IpV6Address | — | Delegated IPv6 prefix |
ipv6-wan-pool |
String | — | Dynamic IPv6 WAN pool (a /64 per subscriber), used when no framed-ipv6 is set |
password |
String | — | PPP password (PAP/CHAP shared secret) (secret) |
plan-name |
String | — | Service plan name |
service-id |
String | — | Accounting subject id (GUID); optional |
service-type |
String | broadband, sim, ethernet |
Kind of service the service-id names (broadband, sim, ethernet); default broadband |
upload-rate |
Int | — | Upload rate (kbit/s) |
upload-rate-pps |
Int | — | Upload packet rate (pps); 0 = unlimited |
vrf |
String | <configured VRF name> |
VRF the subscriber terminates in; empty = global table |
subscribers pppoe <circuit>#
Local PPPoE wholesale subscribers (relayed to remote L2TP endpoints), keyed by access circuit (portP.V / portP.S.V, or an Option-82 circuit-id)
A keyed list: set subscribers pppoe <circuit> <field> <value> creates or updates an entry; delete subscribers pppoe <circuit> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
service-id |
String | — | Accounting subject id (GUID); optional |
tunnel-endpoint |
String (list) | — | Remote LNS endpoint: "address [port N] [vrf NAME] [secret S] [assignment-id ID] [priority N]" (quote the whole value) |
syslog#
| Path | Type | Accepted values | Description |
|---|---|---|---|
syslog enabled |
Bool | — | Deprecated alias for logging sink syslog enabled — export the appliance event stream |
syslog port |
Int | — | Deprecated alias for logging sink syslog port — syslog collector port |
syslog server |
IpAddress | — | Deprecated alias for logging sink syslog destination — syslog collector address |
system#
| Path | Type | Accepted values | Description |
|---|---|---|---|
system cli admin-socket-path |
String | — | Unix socket the bng-cli relay connects to |
system cli admin-socket-peer-uid |
Int | — | UID required of the socket's peer; the relay is rejected if it does not match |
system cli admin-socket-relay-user |
String | — | User the SSH ForceCommand relay runs as |
system cli host-key-path |
String | — | Path to SSH host key |
system cli idle-timeout |
Int | — | CLI idle timeout in minutes |
system cli max-sessions |
Int | — | Maximum concurrent CLI sessions |
system cli serial-console-baud |
Int | — | Serial console baud rate (8N1) |
system cli serial-console-device |
String | — | Serial device for the console (e.g. /dev/ttyS0; ttyS1 for IPMI SOL) |
system cli serial-console-enabled |
Bool | — | Run the local CLI on the appliance serial port (restart required) |
system cli ssh-enabled |
Bool | — | Enable SSH for CLI access |
system cli ssh-listen-address |
IpAddress | — | SSH listen address |
system cli ssh-port |
Int | — | SSH port for CLI |
system cli telnet-enabled |
Bool | — | Enable Telnet for CLI access |
system cli telnet-listen-address |
IpAddress | — | Telnet listen address |
system cli telnet-port |
Int | — | Telnet port for CLI |
system login user <name>#
Login users
A keyed list: set system login user <name> <field> <value> creates or updates an entry; delete system login user <name> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
authentication encrypted-password |
String | — | Encrypted password hash (secret) |
authentication passkey |
String (list) | — | An enrolled passkey, as "credential-id public-key [label]". Written by enrolment; set it only to restore a backup. Delete revokes it |
authentication ssh-key |
String (list) | — | Authorized SSH key in authorized_keys form, e.g. "ssh-ed25519 AAAAC3Nz…" (quote the whole value) |
authentication totp-secret |
String | — | TOTP shared secret. Normally written by enrolment; settable so a seed can be restored from backup. Masked on read (secret) |
class |
String | super-user, operator, read-only |
User class |
full-name |
String | — | User full name |
walled-garden#
| Path | Type | Accepted values | Description |
|---|---|---|---|
walled-garden captive-dns-interception-enabled |
String | — | Enable data-plane captive DNS interception for restricted sessions |
walled-garden captive-dns-ttl |
Int | — | TTL for data-plane captive DNS answers |
walled-garden captive-portal-ip |
IpAddress | — | IPv4 address the data-plane captive DNS responder answers with (the portal, not a resolver) |
walled-garden captive-portal-ip-v6 |
IpV6Address | — | IPv6 address the data-plane captive DNS responder answers AAAA queries with |
walled-garden dns-server |
IpV4Address (list) | — | Walled garden DNS servers |
walled-garden dns-server-v6 |
IpV6Address (list) | — | Walled garden IPv6 DNS servers |
walled-garden domain-name |
String | — | Walled garden domain name |
walled-garden lease-time |
Int | — | Walled garden lease time in seconds |
walled-garden max-allocations-per-port-s-vlan |
Int | — | Maximum concurrent walled-garden temporary pool allocations per access port/S-VLAN |
walled-garden temp-pool-cidr |
String | — | Temporary IPv4 pool CIDR for unknown subscribers |
walled-garden temp-pool-gateway |
IpV4Address | — | Temporary pool gateway IP |
walled-garden vrf-name |
String | <configured VRF name> |
Walled garden VRF name |
web-ui#
| Path | Type | Accepted values | Description |
|---|---|---|---|
web-ui appliance-name |
String | — | Name shown in the UI header and used to tell appliances apart in the fleet view |
web-ui auth allow-self-service-device-tokens |
Bool | — | Whether signed-in operators may mint revocable 90-day sliding device tokens for themselves (secret) |
web-ui auth lockout max-attempts |
Int | — | Failed sign-ins before an account is locked out |
web-ui auth lockout window |
Int | — | Window the failed-attempt count is measured over, in minutes |
web-ui auth passkey mode |
String | — | Whether passkeys are off, a second factor, or may replace the password |
web-ui auth session-state-path |
String | — | Where session state is persisted so logins survive a control-plane restart |
web-ui auth session-timeout |
Int | — | Idle timeout for a UI session, in minutes |
web-ui auth tacacs auth-type |
String | — | TACACS+ authentication type |
web-ui auth tacacs authorize-service |
String | — | Service name presented in the TACACS+ authorization request |
web-ui auth tacacs command-accounting-enabled |
Bool | — | Emit TACACS+ START/STOP accounting for each TACACS+ CLI command |
web-ui auth tacacs command-authorization-fallback |
String | — | Fallback on TACACS+ command authorization error: local or deny |
web-ui auth tacacs enabled |
Bool | — | Authenticate management users against TACACS+ |
web-ui auth tacacs per-command-authorization-enabled |
Bool | — | Authorize each TACACS+ CLI command before execution |
web-ui auth tacacs role-attribute |
String | — | Attribute carrying the user's role in the authorization reply |
web-ui auth tacacs role-map |
String (list) | — | Maps a TACACS+ attribute value to a Netavo role, as "match:role" |
web-ui auth tacacs secret |
String | — | TACACS+ shared secret (secret) |
web-ui auth tacacs timeout |
Int | — | TACACS+ request timeout in milliseconds |
web-ui auth tacacs transport-vrf |
String | — | VRF used to reach the TACACS+ servers |
web-ui auth totp-mode |
String | — | Whether TOTP is off, optional or required |
web-ui demo |
Bool | — | Serve fabricated demo data instead of live state. For demonstrations only — never on an appliance carrying traffic |
web-ui enabled |
Bool | — | Serve the web management UI and REST API |
web-ui hostname |
String | — | Hostname the UI presents and issues certificates for |
web-ui tls custom cert-path |
String | — | Path to the operator-supplied certificate (PEM) |
web-ui tls custom key-path |
String | — | Path to the operator-supplied private key (PEM) |
web-ui tls mode |
String | self-signed, custom |
Certificate source: self-signed or an operator-supplied pair |
web-ui tls self-signed store-path |
String | — | Where the generated self-signed certificate is kept |
web-ui trusted-proxy |
String (list) | — | Proxies whose X-Forwarded-For may be believed. Trusting the wrong hop lets a client spoof its source address past IP-based restrictions |
web-ui auth oidc provider <name>#
An OIDC identity provider for management-plane SSO (doc 33)
A keyed list: set web-ui auth oidc provider <name> <field> <value> creates or updates an entry; delete web-ui auth oidc provider <name> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
client-id |
String | — | OAuth client id |
client-secret |
String | — | OAuth client secret (secret) |
display-name |
String | — | Label shown on the sign-in button |
enabled |
Bool | — | Offer this provider on the sign-in page |
fetch-user-info |
Bool | — | Call the userinfo endpoint when the id token lacks the needed claims |
groups-claim |
String | — | Claim carrying group membership |
issuer |
String | — | Issuer URL; discovery hangs off it |
redirect-uri |
String | — | Redirect URI registered with the provider; must match exactly |
role-map |
String (list) | — | Maps a group claim value to a Netavo role, as "match:role" |
scope |
String (list) | — | Scopes requested at authorization |
username-claim |
String | — | Claim used as the username |
web-ui auth tacacs server <host>#
A TACACS+ server, tried in configuration order
A keyed list: set web-ui auth tacacs server <host> <field> <value> creates or updates an entry; delete web-ui auth tacacs server <host> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
port |
Int | — | TACACS+ port |
web-ui auth token <name>#
A named API bearer token. The token itself is never stored — only its hash, which is what token-hash sets and which is masked on read
A keyed list: set web-ui auth token <name> <field> <value> creates or updates an entry; delete web-ui auth token <name> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
created-utc |
String | — | UTC time the token was created |
device-user |
String | — | Local user authenticated by a self-service device token |
label |
String | — | Operator-facing label for a self-service device token |
last-used-utc |
String | — | UTC time the token last authenticated successfully |
role |
String | — | Role the token is granted |
token-hash |
String | — | Hash of the bearer token (secret) |
web-ui listener <address>#
An address the web UI binds, optionally inside a VRF
A keyed list: set web-ui listener <address> <field> <value> creates or updates an entry; delete web-ui listener <address> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
port |
Int | — | TCP port |
vrf |
String | <configured VRF name> |
VRF the listener binds inside |
web-ui peer <name>#
Another appliance this one proxies to in the fleet view
A keyed list: set web-ui peer <name> <field> <value> creates or updates an entry; delete web-ui peer <name> removes the whole entry.
| Field | Type | Accepted values | Description |
|---|---|---|---|
allow-untrusted |
Bool | — | Accept the peer's certificate without validating it. Only for a lab — it removes the protection the fingerprint pin provides |
api-token |
String | — | Bearer token used to authenticate to the peer (secret) |
cert-fingerprint |
String | — | Expected TLS certificate fingerprint — how a self-signed peer is pinned |
url |
String | — | Base URL of the peer's API |
487 configurable fields across 23 sections (29 keyed lists).