forked from heavy-duty/box
choose_subnet is extracted with its helpers (the same awk seam as subnet_claimant) and driven case by case against canned tables under the shim ip: every pinned refusal unchanged (gateway-claimed, foreign interface, disagreeing bridge, garbage — and a clearing pin used verbatim, silently); bridge-present convergence to the bridge's own subnet with no scan (case 2 precedes case 4) and no announcement on the plain default re-run; the poisoned state (bridge AND uplink on one subnet) refusing rather than converging; a free default staying 10.88; the nested tables auto-picking 10.89 loudly, naming the DEFAULT GATEWAY claimant and the BOX_SUBNET pin; a doubly-claimed host skipping to 10.90; and all 40 candidates claimed falling back to the old refusal, naming the end of the scan range and BOX_SUBNET. The driven whole-script fixtures move with the semantics: the refusal paths now pin BOX_SUBNET=10.88.0.0/24 explicitly (the unpinned nested run is no longer a refusal — it is the auto-pick, proven end to end: Host ready, the announcement, and the bridge + ACL carve-out following the pick to 10.89). The decision-precedes-mutation line-order check now pins the choose_subnet call site. 339 → 370 checks. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| cli.sh | ||
| labels-reconcile.sh | ||