On Tue, Aug 16, 2016 at 11:11 AM, <[email protected]> wrote: > Dell - Internal Use - Confidential > > >>From: Albert Chu [mailto:[email protected]] >>Sent: Monday, August 8, 2016 10:27 PM >>To: Zdenek Styblik <[email protected]> >>Cc: Singh, B B <[email protected]>; ipmitool-devel >><[email protected]> >>Subject: Re: [Ipmitool-devel] Can't Disable VLAN ID!!! > >>As a fellow IPMI project maintainer, I would side with the opinion the bug is >>on the BMC. The BMC should not care what the VLAN ID is when it is being >>disabled, only when it's being enabled. > >>That said, it would perhaps be nice to get a workaround into ipmitool to deal >>with this. Perhaps nothing more than a "--vlan-id" or something like that >>option to allow the user to override the default. > >>Al > > Hi Albert, > > The issue of validating the VLAN ID during a disable command has been > corrected in the BMC firmware, but there is another incongruency related to > this defect that may cause headaches for ipmitool users. > > Currently, when a LAN parameter set command is sent through ipmitool, the > corresponding parameter data is requested and compared to the command to > verify that the data was written correctly: > > > set_lan_param_wait > > > > if (memcmp(data, p->data, len) != 0) { > sleep(IPMI_LANP_TIMEOUT); > if (retry-- == 0) { > lprintf(LOG_WARNING, "LAN Parameter Data does > not match! " > "Write may have failed."); > return -1; > } > continue; > } > > > Since we do send the VLAN ID in this return data, regardless of whether VLAN > is disabled or not, this mismatch between requested and received parameters > causes ipmitool to retry the command 10 times and return an error. > > In the interest of resolving this issue for all users of the tool, have made > these below changes in ipmitool. Please review it & let me know the comments. > > --- ipmi_lanp.c 2016-08-09 15:29:56.000000000 +0530 > +++ ipmi_lanp_with_changes.c 2016-08-09 15:29:56.000000000 +0530 > @@ -1319,10 +1319,20 @@ > { > uint8_t data[2]; > int rc; > + struct lan_param * p; //handling for vlan disable, get the vlan id > before sending > > if (string == NULL) { > - data[0] = 0; > - data[1] = 0; > + lprintf(LOG_NOTICE, "get vlan id ."); > + p = get_lan_param(intf, chan, IPMI_LANP_VLAN_ID); > + if (p != NULL && p->data != NULL) { > + int id = ((p->data[1] & 0x0f) << 8) + p->data[0]; > + if (id < 1 || id > 4094) { > + lprintf(LOG_NOTICE, "vlan id retrieved is > not 1 and 4094."); > + return -1; > + } > + data[0] = p->data[0]; > + data[1] = p->data[1]; > + } > } > else { > int id = 0; > > Regards > Balaji Singh
Hello Balaji, I'm glad to hear you've managed to BMC patched. As for the other finding, please, open ticket at sf.net and attach the patch. Thanks, Z. ------------------------------------------------------------------------------ _______________________________________________ Ipmitool-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ipmitool-devel
