[multicast] DDM multicast exchange: V4 protocol, MRIB sync, M2P hooks by zeeshanlakhani · Pull Request #696 · oxidecomputer/maghemite

@zeeshanlakhani zeeshanlakhani changed the title ddm-mcast [multicast] DDM multicast exchange: V4 protocol, MRIB sync, M2P hooks

Apr 2, 2026

@zeeshanlakhani

Adds multicast group subscription distribution to the DDM exchange
protocol with a V4 version bump (frozen V3 types for wire compat).

Key changes:
- V4 exchange protocol with multicast support (V3 peers are unaffected)
- UnderlayMulticastIpv6 validated newtype moved to mg-common (ff04::/64) (moved from rdb types)
- MRIB->DDM sync in mg-lower/mrib.rs
- OPTE M2P hooks for learned multicast routes (requires OPTE #924)
- Atomic update_imported_mcast on Db (single lock for import/delete/diff, which is a bit different from the tunnel work)
- Collapsed send_update dispatch
- Shared pull handler helpers (collect_underlay_tunnel, collect_multicast)
- MulticastPathHop constructor
- Some serde round-trip and validation tests, including for version handling

Stacked on zl/mrib (MRIB: Multicast RIB implementation [#675](#675)).