From 012b674f313b628653414c9a8bbbfed79cf76bf6 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 15 Feb 2026 21:47:51 +0000 Subject: [PATCH] refactor(infra): share isTailnetIPv4 helper --- src/infra/bonjour-discovery.ts | 15 +-------------- src/infra/tailnet.ts | 2 +- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/src/infra/bonjour-discovery.ts b/src/infra/bonjour-discovery.ts index f0ee29615..426d4eb51 100644 --- a/src/infra/bonjour-discovery.ts +++ b/src/infra/bonjour-discovery.ts @@ -1,4 +1,5 @@ import { runCommandWithTimeout } from "../process/exec.js"; +import { isTailnetIPv4 } from "./tailnet.js"; import { resolveWideAreaDiscoveryDomain } from "./widearea-dns.js"; export type GatewayBonjourBeacon = { @@ -70,20 +71,6 @@ function decodeDnsSdEscapes(value: string): string { return Buffer.from(bytes).toString("utf8"); } -function isTailnetIPv4(address: string): boolean { - const parts = address.split("."); - if (parts.length !== 4) { - return false; - } - const octets = parts.map((p) => Number.parseInt(p, 10)); - if (octets.some((n) => !Number.isFinite(n) || n < 0 || n > 255)) { - return false; - } - // Tailscale IPv4 range: 100.64.0.0/10 - const [a, b] = octets; - return a === 100 && b >= 64 && b <= 127; -} - function parseDigShortLines(stdout: string): string[] { return stdout .split("\n") diff --git a/src/infra/tailnet.ts b/src/infra/tailnet.ts index ed666b868..ed2384cfe 100644 --- a/src/infra/tailnet.ts +++ b/src/infra/tailnet.ts @@ -5,7 +5,7 @@ export type TailnetAddresses = { ipv6: string[]; }; -function isTailnetIPv4(address: string): boolean { +export function isTailnetIPv4(address: string): boolean { const parts = address.split("."); if (parts.length !== 4) { return false;