Skip to content

0.9.24 — rootless: bridge_add_member + bridge_del_member verbs#182

Merged
click0 merged 1 commit into
mainfrom
claude/release-0.9.24
May 9, 2026
Merged

0.9.24 — rootless: bridge_add_member + bridge_del_member verbs#182
click0 merged 1 commit into
mainfrom
claude/release-0.9.24

Conversation

@click0
Copy link
Copy Markdown
Owner

@click0 click0 commented May 9, 2026

Summary

Twenty-fifth 0.9.x release. Symmetric pair around IfconfigOps::bridgeAddMember and bridgeDelMember.

What lands

Two new privops verbs

  • bridge_add_member — wraps IfconfigOps::bridgeAddMember(bridge, member). Fields: bridge, member (both validated as iface names).
  • bridge_del_member — symmetric remove.

2-arg shape (different from 0.9.23's 1-arg verbs but same overall pattern). Validators delegate to existing validateIfaceName for both fields.

Wire-up

Same stack as 0.9.23 — privops_pure, privops_wire_pure, privops_nv_pure, privops_client, privops_handlers. Each gains two new functions / cases.

CLI wiring

lib/run_net.cpp gets two new file-static helpers and 2 call-sites migrate:

Site Op
setupBridgeEpair line 481 bridgeAddMember(bridgeIface, ifaceA)
destroyBridgeEpair line 491 bridgeDelMember(bridgeIface, ifaceA)
  • bridgeAddMemberhard-fail (matches existing exception behaviour)
  • bridgeDelMembersoft-fail (matches RunAtEnd teardown pattern; warn + continue)

Test plan

  • 2 new ATF tests (bridge_add_member_minimal, bridge_del_member_minimal)
  • verb_token_roundtrips_for_every_verb updated
  • Suite: 1296 → 1298
  • FreeBSD CI must pass

Series state

CLI call-sites wired:

  • crate retune (0.9.15)
  • crate stop (0.9.17)
  • crate run ZFS attach + detach (0.9.18)
  • crate run nullfs mounts 8 sites (0.9.19)
  • crate run vnet moveToVnet 4 sites (0.9.20)
  • crate run removeJail teardown (0.9.21)
  • crate run createJail (0.9.22)
  • crate run setUp + disableOffload 5 sites (0.9.23)
  • crate run bridge add + del 2 sites → bridge_add_member / bridge_del_member ← this PR

Remaining iface verbs:

  • 0.9.25 — set_iface_inet_addr (3-arg)
  • 0.9.26 — create_epair (first response-data verb)
  • 0.9.27 — network_lease per-user + RCTL umbrella
  • 0.9.28 — default flip
  • 1.0.0 — setuid removed

Files

Same set as 0.9.23: privops_pure.{h,cpp}, privops_wire_pure.{h,cpp}, privops_nv_pure.{h,cpp}, privops_client.h, privops_client_pure.cpp, privops_handlers.{h,cpp}, run_net.cpp, tests/unit/privops_pure_test.cpp, cli/args.cpp, CHANGELOG.md.


Generated by Claude Code

Twenty-fifth 0.9.x release. Symmetric pair around
IfconfigOps::bridgeAddMember / bridgeDelMember.

Two new privops verbs (2-arg shape: bridge + member, both
validated as iface names):
  bridge_add_member — wraps IfconfigOps::bridgeAddMember
  bridge_del_member — symmetric remove

Same wire-up pattern as 0.9.23: privops_pure (enum + structs +
validators), privops_wire_pure (JSON parse + format), privops_
nv_pure (nv parse), privops_client (build), privops_handlers
(handle + dispatcher cases for both transports).

CLI wiring in lib/run_net.cpp: 2 new privops-aware helpers,
2 call-site replacements (setupBridgeEpair add, destroyBridge
Epair del). Add hard-fails; del soft-fails (RunAtEnd pattern).

2 new ATF tests + verb_token_roundtrips_for_every_verb update.
Suite: 1296 -> 1298.

Remaining iface verbs: set_iface_inet_addr (0.9.25),
create_epair (0.9.26 — first response-data verb).
@click0 click0 merged commit a37c3c6 into main May 9, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants