Add extended network management RPC and RuntimeBridgeOps (ADR 020-022) #1

Merged
delandtj merged 1 commit from feat/extended-network-management-rpc into main 2026-03-19 17:29:24 +00:00
Owner

VM networking (ADR 020):

  • tap.rs: persistent tap create/delete via /dev/net/tun ioctl
  • conntrack.rs: kernel nf_conntrack via /proc/net/nf_conntrack
  • netlink: unenslave_from_bridge()
  • state: VmInterface, DynamicFirewallRule, DynamicPortForward
  • RPC: mosnet.vm.create_tap, vm.delete_tap, vm.list
  • RPC: mosnet.bridge.add_port, bridge.remove_port
  • RPC: mosnet.firewall.add_rule, firewall.remove_rule
  • RPC: mosnet.nat.add_forward, nat.remove_forward
  • firewall: add_input_rule, remove_input_rule (dynamic nftables)
  • firewall: add_port_forward_dynamic, remove_port_forward_dynamic
  • OVS: add_system_port, delete_port (feature-gated)
  • CLI: mosnet vm list/create-tap/delete-tap
  • CLI: mosnet conntrack [--zone N] [--stats] [--flush]
  • CLI: mosnet ovs-conntrack [--zone N] [--stats] [--flush]

Extended network management (ADR 021):

  • netlink: add_route(), delete_route() with metric/table support
  • netlink: create_veth_pair() via rtnetlink LinkVeth
  • OVS: create_simple_bridge() — bare bridge without uplink/controller
  • OVS: create_patch_ports() — inter-bridge patch port pairs
  • RPC: mosnet.routes.add, routes.delete
  • RPC: mosnet.bridge.add, bridge.delete, bridge.connect
  • RPC: mosnet.lease.restart — abort renewal, re-acquire DHCP, restart
  • DaemonContext: renewal_handle for lease restart lifecycle
  • CLI: mosnet routes add/delete, bridge add/delete/connect, lease-restart
  • OpenRPC spec: 13 new method definitions

RuntimeBridgeOps (ADR 022):

  • RuntimeBridgeOps enum in backend.rs — stateless runtime dispatch
  • 6 write methods: add_port, remove_port, set_port_vlan,
    create_aux_bridge, delete_aux_bridge, connect_bridges
  • 3 query methods: bridge_check_interface, uplink_is_enslaved,
    requires_kernel_forwarding
  • ConnectResult struct for bridge.connect response
  • SelectedBackend::runtime_ops() derivation
  • RuntimeBridgeOps::from_name() for string-based construction
  • DaemonContext.bridge_ops field, threaded through mosnetd.rs
  • All 9 handler dispatch points refactored — zero string matching
VM networking (ADR 020): - tap.rs: persistent tap create/delete via /dev/net/tun ioctl - conntrack.rs: kernel nf_conntrack via /proc/net/nf_conntrack - netlink: unenslave_from_bridge() - state: VmInterface, DynamicFirewallRule, DynamicPortForward - RPC: mosnet.vm.create_tap, vm.delete_tap, vm.list - RPC: mosnet.bridge.add_port, bridge.remove_port - RPC: mosnet.firewall.add_rule, firewall.remove_rule - RPC: mosnet.nat.add_forward, nat.remove_forward - firewall: add_input_rule, remove_input_rule (dynamic nftables) - firewall: add_port_forward_dynamic, remove_port_forward_dynamic - OVS: add_system_port, delete_port (feature-gated) - CLI: mosnet vm list/create-tap/delete-tap - CLI: mosnet conntrack [--zone N] [--stats] [--flush] - CLI: mosnet ovs-conntrack [--zone N] [--stats] [--flush] Extended network management (ADR 021): - netlink: add_route(), delete_route() with metric/table support - netlink: create_veth_pair() via rtnetlink LinkVeth - OVS: create_simple_bridge() — bare bridge without uplink/controller - OVS: create_patch_ports() — inter-bridge patch port pairs - RPC: mosnet.routes.add, routes.delete - RPC: mosnet.bridge.add, bridge.delete, bridge.connect - RPC: mosnet.lease.restart — abort renewal, re-acquire DHCP, restart - DaemonContext: renewal_handle for lease restart lifecycle - CLI: mosnet routes add/delete, bridge add/delete/connect, lease-restart - OpenRPC spec: 13 new method definitions RuntimeBridgeOps (ADR 022): - RuntimeBridgeOps enum in backend.rs — stateless runtime dispatch - 6 write methods: add_port, remove_port, set_port_vlan, create_aux_bridge, delete_aux_bridge, connect_bridges - 3 query methods: bridge_check_interface, uplink_is_enslaved, requires_kernel_forwarding - ConnectResult struct for bridge.connect response - SelectedBackend::runtime_ops() derivation - RuntimeBridgeOps::from_name() for string-based construction - DaemonContext.bridge_ops field, threaded through mosnetd.rs - All 9 handler dispatch points refactored — zero string matching
VM networking (ADR 020):
- tap.rs: persistent tap create/delete via /dev/net/tun ioctl
- conntrack.rs: kernel nf_conntrack via /proc/net/nf_conntrack
- netlink: unenslave_from_bridge()
- state: VmInterface, DynamicFirewallRule, DynamicPortForward
- RPC: mosnet.vm.create_tap, vm.delete_tap, vm.list
- RPC: mosnet.bridge.add_port, bridge.remove_port
- RPC: mosnet.firewall.add_rule, firewall.remove_rule
- RPC: mosnet.nat.add_forward, nat.remove_forward
- firewall: add_input_rule, remove_input_rule (dynamic nftables)
- firewall: add_port_forward_dynamic, remove_port_forward_dynamic
- OVS: add_system_port, delete_port (feature-gated)
- CLI: mosnet vm list/create-tap/delete-tap
- CLI: mosnet conntrack [--zone N] [--stats] [--flush]
- CLI: mosnet ovs-conntrack [--zone N] [--stats] [--flush]

Extended network management (ADR 021):
- netlink: add_route(), delete_route() with metric/table support
- netlink: create_veth_pair() via rtnetlink LinkVeth
- OVS: create_simple_bridge() — bare bridge without uplink/controller
- OVS: create_patch_ports() — inter-bridge patch port pairs
- RPC: mosnet.routes.add, routes.delete
- RPC: mosnet.bridge.add, bridge.delete, bridge.connect
- RPC: mosnet.lease.restart — abort renewal, re-acquire DHCP, restart
- DaemonContext: renewal_handle for lease restart lifecycle
- CLI: mosnet routes add/delete, bridge add/delete/connect, lease-restart
- OpenRPC spec: 13 new method definitions

RuntimeBridgeOps (ADR 022):
- RuntimeBridgeOps enum in backend.rs — stateless runtime dispatch
- 6 write methods: add_port, remove_port, set_port_vlan,
  create_aux_bridge, delete_aux_bridge, connect_bridges
- 3 query methods: bridge_check_interface, uplink_is_enslaved,
  requires_kernel_forwarding
- ConnectResult struct for bridge.connect response
- SelectedBackend::runtime_ops() derivation
- RuntimeBridgeOps::from_name() for string-based construction
- DaemonContext.bridge_ops field, threaded through mosnetd.rs
- All 9 handler dispatch points refactored — zero string matching
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
geomind_code/mosnet!1
No description provided.