Follow-up Comment #6, bug #38781 (project freeipmi): Just so you are aware, the still-existing code in ipmi_lan_sendto() is still incorrect for IPMI 1.5 compatibility:
/* Note from Table 12-8, RMCP Packet for IPMI via Ethernet footnote Some LAN adapter chips may have a problem where packets of overall lengths 56, 84, 112, 128, or 156 are not handled correctly. The PAD byte is added as necessary to avoid these overall lengths. Remote console software must use the PAD byte when formatting packets to any 10/100 Ethernet device that accepts RMCP packets. -- Anand Babu */ _len = len; if (_len == 56 || _len == 84 || _len == 112 || _len == 128 || _len == 156) pad_len += IPMI_LAN_PKT_PAD_SIZE; Note the words "overall length" are used here in the comment (and in the specification), yet the length value being compared here is only the UDP payload length (*not* the "overall length"). If you really want this code to be correct, you would need to calculate the "overall length" of the Ethernet frame, which includes Ethernet frame header and CRC, IP header, and UDP header. Or perhaps the "overall length" only includes the UDP/IP portion - the specification just says "packets of overall lengths", so that's a little bit vague. My guess is that this "Legacy PAD" probably isn't needed by whatever broken network controllers required it 10+ years ago and since FreeIPMI isn't padding the correct packets anyway, I suggest just removing this code. It's wrong. -Rob _______________________________________________________ Reply to this item at: <http://savannah.gnu.org/bugs/?38781> _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ _______________________________________________ Freeipmi-devel mailing list Freeipmi-devel@gnu.org https://lists.gnu.org/mailman/listinfo/freeipmi-devel