Outcall
SpecificationsS001 · Bridge Management

Acceptance scenarios

S001 Acceptance Scenarios

S001-AS-001 Bridge up: happy path [P1]

Given outcalld is running on Linux with CAP_NET_ADMIN And no bridge named outcall0 exists When outcalld starts (or outcall bridge up is called) Then a bridge interface outcall0 is created and brought up And the inet outcall nftables table is created with drop-all forward rules And outcall bridge status reports up and nftables: active.

S001-AS-002 Bridge up: idempotent re-up [P1]

Given the bridge outcall0 is already up with nftables rules active When outcall bridge up is called again Then the daemon attaches to the existing bridge (does not error) And nftables rules are reapplied (clean-slate) And outcall bridge status still reports up.

S001-AS-003 Status: bridge is up [P1]

Given the bridge is up and nftables rules are active When outcall bridge status is called Then the CLI prints the bridge name, status up, interface index, and nftables: active.

S001-AS-004 Status: bridge is down [P1]

Given the bridge has been torn down (or was never created) When outcall bridge status is called Then the CLI prints the bridge name, status down, and nftables: inactive.

S001-AS-005 Teardown: happy path [P1]

Given the bridge is up with nftables rules active When outcall bridge down is called Then the nftables table is deleted And the bridge interface is brought down and removed And ip link show outcall0 fails (interface gone) And nft list table inet outcall fails (table gone).

S001-AS-006 Daemon shutdown preserves enforcement [P1]

Given outcalld is running with the bridge up And a managed container remains attached to the bridge When outcalld receives SIGINT or SIGTERM Then dynamic direct-egress grants are removed And the bridge and strict base nftables policy remain active after the process exits And new direct traffic from the managed container remains blocked And the unix socket files are removed And restarting outcalld re-attaches to the bridge and replaces the ruleset idempotently.

S001-AS-007 Bridge already exists: attach [P1]

Given a bridge named outcall0 already exists (created by Docker or another process) When outcalld starts Then it attaches to the existing bridge (reuses the interface index) And applies nftables rules normally And does not error.

S001-AS-008 CLI: bridge status [P1]

Given outcalld is running When the user runs outcall bridge status Then the CLI connects to the unix socket, sends GET /api/v1/bridge, and prints the status.

S001-AS-009 CLI: bridge up [P1]

Given outcalld is running When the user runs outcall bridge up Then the CLI sends POST /api/v1/bridge/up and prints Bridge is up. on success.

S001-AS-010 CLI: bridge down [P1]

Given outcalld is running When the user runs outcall bridge down Then the CLI sends POST /api/v1/bridge/down and prints Bridge is down. on success.

On this page