Skip to content

Show MAC addresses and manufacturers in every build (engine v1.7.0) - #1

Merged
Criseda merged 2 commits into
mainfrom
feat/engine-v1.7.0
Oct 15, 2026
Merged

Criseda merged 2 commits into
mainfrom
feat/engine-v1.7.0

Conversation

@Criseda

@Criseda Criseda commented Oct 15, 2026

Copy link
Copy Markdown
Owner

Why

macOS 27 hides the ARP table from children of an app that is not Developer ID signed, so ad-hoc and Apple Development builds showed no MAC addresses, manufacturers or ARP-found quiet hosts. The app's own process can still read the table.

What

  • Discovery runs ns with --neighbor-table=parent. Each neighbors_request the engine prints is answered on its stdin, from EngineRun's stdout handler (off the main actor), with the table read in-process by NeighborTable.read(). That is a Swift port of the engine's macos_dump; the engine keeps all logic of what an entry means (feat: let the parent app supply the ARP table (--neighbor-table=parent) NetScanner#83).
  • Pins NetScanner v1.7.0, the first release with that flag, plus its macos-arm64.zip / macos-x86_64.zip checksums.
  • CHANGELOG and AGENTS.md updated; the "no MAC addresses" known issue is gone.

Testing

  • Scripts/fetch-engine.sh --force downloads and verifies the v1.7.0 assets (universal ns, --version v1.7.0).
  • swift test: 47 tests in 13 suites pass, including new NeighborTable and reply-encoding tests.
  • Debug xcodebuild succeeds with no compiler warnings.
  • An ad-hoc signed Debug build, run against a locally built engine with the same code, showed 37 hosts with MAC addresses and manufacturers.

macOS 27 hides the ARP table from children of an ad-hoc signed app but
not from the app itself, so Debug builds showed no MAC addresses,
manufacturers or ARP-found hosts. Discovery now runs ns with
--neighbor-table=parent and answers each neighbors_request on its stdin
with the table read in-process (a Swift port of the engine's
macos_dump). The engine keeps all logic of what an entry means.

Needs the engine release that adds --neighbor-table; until it is pinned,
test with fetch-engine.sh --local.
v1.7.0 is the first engine release with --neighbor-table=parent, which
discovery now passes, so pin it (and its release asset checksums).
@Criseda
Criseda merged commit d04dc14 into main Oct 15, 2026
1 check passed
@Criseda
Criseda deleted the feat/engine-v1.7.0 branch October 15, 2026 12:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant