Files
fips/.github/workflows
Arjen cc7e40e843 feat(openwrt): open !FIPS access SSID — fips-ap-setup helper, default transport binding, how-to
Client access layer for phones and laptops: every FIPS router
broadcasts the same open SSID ('!FIPS' — the leading '!' sorts it to
the top of alphabetically ordered network pickers), forming one
standard ESS. Clients save it once and roam between all FIPS routers
natively, with FIPS's Noise IK handshake as the only security layer:

- fips-ap-setup: opt-in UCI helper that creates the 'fips-ap0' open AP
  (encryption none — security type must be uniform across routers or
  clients treat the ESS as different saved networks), an isolated
  network with a static ULA /64, RA-only odhcpd addressing (stateless
  SLAAC, no DHCP — the minimum that satisfies Android's provisioning
  check; no internet by design, so phones keep cellular as default
  route), and a locked-down fips_ap firewall zone (no path to br-lan
  or the WAN; only ICMPv6, mDNS, and the FIPS transports reachable).
  'remove' subcommand undoes it. Radio setup stays opt-in; a package
  must not commandeer radios on install.
- fips.yaml: ship 'ap0'/'ap1' Ethernet-transport entries commented out
  (matching the 802.11s mesh backhaul) so a stock install that never
  creates fips-ap* logs no per-boot "interface missing" bind warning;
  fips-ap-setup uncomments the matching block when it creates the
  interface and re-comments it on remove.
- Regression test: extend shipped_openwrt_config_parses to assert the
  ap0/ap1 entries ship commented out and still parse once uncommented,
  alongside mesh0/mesh1.
- Packaging: install the helper in ipk/apk/buildroot (three synced
  copies), extend CI structural checks and shellcheck targets.
- docs/how-to/set-up-open-access-ssid.md: full guide, including the
  one-time 'no internet, stay connected' acceptance (stored per SSID,
  covers every FIPS router) and the security-type-uniformity
  constraint.
2026-07-21 15:21:06 +01:00
..