station: Identify devices by MAC OUI vendor lookup

Embed the IEEE OUI registry (~1MB pre-processed text file) and resolve
the vendor for every station MAC. Locally administered MACs (U/L bit
set, used by iOS/Android private addresses and virtual interfaces) are
skipped so we don't return spurious matches against randomized prefixes.

The vendor name shows up in the device card as a secondary line, and
falls back to the title position when no DHCP hostname is available —
"Apple" with the IP and MAC is far more useful than "Sans nom".

The lookup table loads lazily (sync.Once) on the first call so the
~40k-entry parse only runs when the station discovery code is exercised.
This commit is contained in:
nemunaire 2026-05-01 22:32:57 +08:00
commit 70140bc289
10 changed files with 39518 additions and 3 deletions

View file

@ -328,6 +328,7 @@ func (b *Backend) convertStation(mac string, hs *HostapdStation) backend.Station
IP: ip,
Hostname: hostname,
Type: backend.GuessDeviceType(hostname, mac),
Vendor: backend.LookupVendor(mac),
Signal: hs.Signal,
RxBytes: hs.RxBytes,
TxBytes: hs.TxBytes,