Skip to content

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 02 Oct 15:32

Fixed

  • windhcp:// could not set a multi-valued option (two name servers, two NTP
    servers) with its default PowerShell method, and the failure took the rest of
    the reservation with it. The value was sent comma-joined, and
    Set-DhcpServerv4OptionValue -Value takes String[]: Windows answered
    "Parameters for option value to be set for option ID 6 do not match with option
    definition" and, under ErrorActionPreference = 'Stop', every option after it
    was abandoned — so the target got a router and no boot file. Values are now
    sent as a list. Present since the backend shipped in 0.2.0; found by running it
    against a real Windows Server 2025 DHCP server rather than reading the script.

Added

  • DhcpServer.extras(ctx, phase) — one documented extension point for
    backend-native fragments netboot does not model: an extra statement, an extra
    command, or a condition such as the iPXE chainload (serve the iPXE binary to a
    PXE ROM, the script to iPXE). It defaults to the configured raw.<backend>
    fragments, and a subclass overrides it to decide per target. All four shipped
    backends consume it, and raw.<backend>.remove= is new: a fragment that
    belongs to teardown rather than to arming. For windhcp:// a fragment may be a
    PowerShell line or a {"Args": [...], "Ignore": bool} netsh command, which
    works under either method.
  • method=netsh verifies what the server actually applied. netsh exits 0 and
    prints its success line even when it rejected what it was told — measured: a
    domain-name-servers option with one unreachable address keeps the other, says
    "not a valid DNS Server", says "Command completed successfully", exits 0. So
    after applying, netboot reads the state back with netsh ... dump (the one
    netsh output that is command syntax rather than localised prose) and fails
    naming any option that is missing or short of values. The cmdlet method needs
    none of this: Windows raises there by itself.
  • windhcp:// takes method=powershell|netsh. The default is unchanged (the
    DhcpServer cmdlets); method=netsh drives netsh dhcp server ... instead,
    for a host where that PowerShell module is not installed. It is independent of
    transport=, and netsh is invoked from PowerShell with each argument an array
    element, so no value is spliced into a command line. Success is $LASTEXITCODE
    rather than netsh's localised success line, a removal tolerates a reservation
    that is not there, option data types are declared per option (unmapped ones as
    STRING), and a multi-valued option becomes one argument per value.

Full Changelog: v0.3.0...v0.3.1