On Tue, Aug 16, 2016 at 11:11 AM, <b_b_si...@dell.com> wrote: > Dell - Internal Use - Confidential > > >>From: Albert Chu [mailto:ch...@llnl.gov] >>Sent: Monday, August 8, 2016 10:27 PM >>To: Zdenek Styblik <zdenek.styb...@gmail.com> >>Cc: Singh, B B <b_b_si...@dell.com>; ipmitool-devel >><ipmitool-devel@lists.sourceforge.net> >>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 Ipmitool-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ipmitool-devel