Skip to content

Naming a VLAN greyed out Try it and Apply, and blamed the board

Type a word beside a VLAN number and the switch card said "this board cannot check a configuration before it is applied" — a line that was true of neither the board nor the layout. The daemon had refused the request over a corner of how it reads one, on every release since names existed. Fixed in the daemon, with a test that fails on the old code; and the card now repeats the daemon's own words when a request is refused, instead of a sentence that sends people looking at their board revision.

Firmware v2.39.0, 23 September 2026 — the first image to carry bmcd 2.38.3, BMC-UI 3.38.0. Every item below is the repository's own changelog entry, taken apart; the whole entry is a click away under each one.

Changed

  • A refused validate request shows the daemon's words, not "this board cannot check". The switch card showed one sentence for two different failures: a daemon with no validate endpoint, and a daemon that has one and rejected the request as malformed. BMC-UI 3.38.0

    The whole entry

    Only the first means "cannot check"; the second says why in its body. A reader who named a VLAN got the sentence (BMC-Firmware#59) and went looking at his board revision, when the daemon had refused the request over how it reads names — fixed in bmcd 2.38.3. From now on a rejected request reads "The board refused the question rather than the layout: …" with the daemon's reason, so the next reader is told which it was.

Fixed

  • Naming a VLAN greyed out Try it and Apply, under a line blaming the board. Type a word beside a VLAN number in the switch card and the buttons went grey with "This board cannot check a configuration before it is applied." — a sentence true of neither the board nor the layout.

    The whole entry

    The daemon had refused the request over a corner of how it reads one: validate and PUT accept either a preset or a whole document, and the type that says "either" buffers the body before deciding; in the buffered form a map key "50" never becomes the number the names table is keyed by. So a document with no names read fine and a document with one name was refused, on both endpoints, on every release since names existed (v2.33.0). Reported as #59 and reproduced on a board with the same document twice.

    bmcd 2.38.3 reads the names by their wire form, so both paths agree, with a test that fails on the old code with the reporter's exact message. And BMC-UI 3.38.0 stops standing one sentence in for two failures: a rejected request now shows the daemon's own words — "The board refused the question rather than the layout: …" — and cannot check is kept for the one case it was written for, no answer at all.

  • A switch document with a VLAN name was refused by validate and by PUT, as "did not match any variant of untagged enum Proposal". The same document with names: {} passed. bmcd 2.38.3

    The whole entry

    Both endpoints accept either a preset or a whole document, and the type that says "either" is #[serde(untagged)], which buffers the body before choosing; in the buffered form a map key "50" is a string that never becomes the u16 the names table is keyed by — while a direct read of the struct converts it, which is why every unit test of the document passed. From the day names existed. Reported as BMC-Firmware#59 by a reader whose interface greyed out Try it and Apply and told him his board could not check a layout; reproduced on a board with the same document twice.

    Names are now read from their wire form — string keys, parsed here — so both paths agree, and a key that is not a VLAN id is refused by name rather than as "no variant matched". A test feeds a named document through Proposal and through the flattened PUT body; on the old code it fails with the reporter's exact message.


Every release of the firmware · the roadmap · follow by feed