From eaa1a8bfc7c0f03dbe3f8a117f12a6f55b27bea6 Mon Sep 17 00:00:00 2001 From: Markus Hilger Date: Sun, 16 Aug 2026 21:37:50 +0200 Subject: [PATCH] Let a console work through a forwarded ipmi port A bmc behind a forward answers Activate Payload with the port it listens on itself, and the advertised-port check refused that, so a console failed where command traffic worked. The advertised port is never sent to, so the check now applies only on the default port. A bmc on another port advertising a third one is no longer refused outright, which nothing here could have served anyway. --- confluent_server/aiohmi/ipmi/console.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/confluent_server/aiohmi/ipmi/console.py b/confluent_server/aiohmi/ipmi/console.py index ab463eb5..4fdb49f0 100644 --- a/confluent_server/aiohmi/ipmi/console.py +++ b/confluent_server/aiohmi/ipmi/console.py @@ -148,7 +148,11 @@ class Console(object): # some BMCs disagree on the endianness, so do both valid_ports = (self.port, struct.unpack( 'H', self.port))[0]) - if (data[8] + (data[9] << 8)) not in valid_ports: + solport = data[8] + (data[9] << 8) + # A bmc behind a port forward answers with the port it listens on + # rather than the one it was reached through; payloads ride the + # session, never the advertised port. + if solport not in valid_ports and self.port == 623: # TODO(jbjohnso): support atypical SOL port number raise NotImplementedError("Non-standard SOL Port Number") # ignore data[10:11] for now, the vlan detail, shouldn't matter to this