Skip to content

v0.1.3 — cross-address-family mapping classification fix

Choose a tag to compare

@vnykmshr vnykmshr released this 26 Apr 11:52
ae2c605

Closes #14. First 3-segment-semver tag after the v0.1.2.x patch incident — go install ...@v0.1.3 works correctly via the Go module proxy.

Fixed

  • Cross-address-family probe sets no longer produce a wrong ADM/symmetric verdict. Previously, mixing IPv6-resolved hostname servers (e.g., stun.l.google.com) with IPv4-literal servers (e.g., a self-hosted coturn) compared mapped endpoints across address families and reported ADM because the endpoints differed by construction (each family observes its own NAT). The classifier now groups successes by address family, classifies each group independently, and combines under the rule "Unknown is absence of information, not disagreement": matching verdicts win, two confident verdicts that differ produce Unknown, a confident verdict beats Unknown from the other group.

Added

  • New warning value mixed_address_family_probes in warnings[]. Emitted whenever successful probes span both IPv4 and IPv6 address families. Additive to the JSON schema.

Migration

JSON consumers checking nat_type == "ADM" for cross-family probe sets will see "Unknown" on the same input under v0.1.3 — the previous verdict was incorrect. Forecast-checking consumers (webrtc_forecast.direct_p2p) are mostly unaffected: the dominant cross-family disagreement case stays exit 1 (Unknown → 1, was ADM → 1). The verdict-flip case (genuinely agreed EIM across families, previously ADM, now EIM → exit 0) is the bug being fixed.

Install

brew tap 1mb-dev/tap
brew upgrade natcheck      # if already installed
brew install natcheck      # fresh install

or

go install github.com/1mb-dev/natcheck/cmd/natcheck@v0.1.3