Skip to content

Implement native Windows network interface enumeration #790

Description

@LunaStev

Motivation

The public network interface API routes to a Windows provider whose interfaces_open always returns -95; the remaining accessor functions are stubs. Windows amd64/ARM64 applications cannot enumerate local interface addresses through the portable API. This is separate from Linux's getifaddrs replacement (#566).

Starting points: std/sys/windows/interfaces.wave, std/sys/interfaces.wave, std/net/interface.wave.

Scope

Implement a Windows-native provider, for example using GetAdaptersAddresses, while preserving the public output-buffer API. Define how Windows adapter identity, display names, flags and address families map to NetworkInterface. Cover native allocation ownership and the required import library; no libc adapter is needed. Related Windows provider tracker: #385.

Difficulty: hard.

Completion criteria

  • Enumerate IPv4/IPv6 addresses with correct indices, names and result counts on amd64/ARM64.
  • Handle no addresses, buffer growth, capacity truncation and native errors without leaking memory.
  • Mock fixtures cover multiple addresses per adapter and Unicode names; native tests avoid assuming a particular machine network configuration.

Design decision needed: Agree on stable interface identity/name encoding and flag mappings, including truncation behavior, before implementing the provider.

Please mention @LunaStev to discuss the design before starting implementation.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    cross-platformIssues related to making Wave work seamlessly across multiple operating systems.discussionIssues that require a technical or community discussion.enhancementA request for a new feature or improvement.help wantedThe issue requires extra attention or help from others.os supportA request to add support for a new operating system.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions