Hello, Zdenek, There's a typo (and it's mine originally):
enable_intf_serial=yes Needed: xenable_intf_serial=yes Regards, Dmitry 28.05.2013 10:35, Zdenek Styblik пишет: > On Fri, May 24, 2013 at 9:24 AM, Dmitry Bazhenov <dim...@pigeonpoint.com> > wrote: >> Zdenek, >> >> Here it is. >> >> Regards, >> Dmitry >> > > @@ -195,6 +196,23 @@ > > ORIG_CPPFLAGS=$CPPFLAGS > > +dnl enable serial interface > +AC_ARG_ENABLE([intf-serial], > + [AC_HELP_STRING([--enable-intf-serial], > + [enable direct Serial Basic/Terminal mode > interface [default=yes]])], > + [xenable_intf_serial=$enableval], [xenable_intf_serial=yes]) > +if test "x$enable_intf_serial" = "xstatic" || test > "x$enable_intf_serial" = "xplugin"; then > + enable_intf_serial=yes > +fi > +if test "x$xenable_intf_serial" = "xyes"; then > + AC_DEFINE(IPMI_INTF_SERIAL, [1], [Define to 1 to enable serial > interface.]) > + AC_SUBST(INTF_SERIAL, [serial]) > + AC_SUBST(INTF_SERIAL_LIB, [libintf_serial.la]) > + IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB serial/libintf_serial.la" > +else > + xenable_intf_serial=no > +fi > + > dnl look for OpenIPMI header files > AC_ARG_WITH([kerneldir], > [AC_HELP_STRING([--with-kerneldir=DIR], > @@ -583,7 +601,8 @@ > > Agreed? > > Z. > > >> 24.05.2013 13:14, Dmitry Bazhenov пишет: >>> >>> Hello, Zdenek, >>> >>> >>> I'll provide the updated patch in a minute with your comments addressed. >>> I'll add the double check you're talking about and remove the assert >>> since they are redundant. >>> >>> Regards, >>> Dmitry >>> >>> 22.05.2013 14:55, Zdenek Styblik пишет: >>>> >>>> On Tue, May 21, 2013 at 4:18 PM, Dmitry Bazhenov >>>> <dim...@pigeonpoint.com> wrote: >>>> [...] >>>>> >>>>> I would like not to place excessive check there in order not to >>>>> overload the >>>>> code. The surrounding context pretty much ensures that the conversion >>>>> goes >>>>> smoothly without errors. >>>>> >>>> >>>> Dmitry, >>>> >>>> I still disagree, because there is no reason why not to double check >>>> it. I guess I'm paranoid like that. However, this was a suggestion not >>>> condition. If you say it's sufficient, then it's sufficient. >>>> >>>>> >>>>>> Is there some extra documentation necessary/required (and available) >>>>>> so this can be used/implemented/supported by other parties? But I >>>>>> pretty much guessed this is just shoveling IPMI packets over serial >>>>>> line, am I correct? >>>>> >>>>> >>>>> You are correct. It's just a way to interact with IPM Controllers. I >>>>> don't >>>>> think that anything more than the help string is required here. >>>>> >>>> >>>> Alright. >>>> >>>>> >>>>> Good. Can you acknowledge that the patch will be submitted into the >>>>> mainline? >>>>> >>>> >>>> I don't know what exactly you meant by this question. If I'm the one >>>> doing the commit, then yes. I have no problem to commit this into >>>> ipmitool. >>>> >>>> Ok, I have one more question. serial_read_line() and >>>> serial_write_line() have assert(str). Is this on purpose? Why? Are you >>>> aware it's going to crash the program? I'm not in favour of doing such >>>> thing. Since both functions return int, couldn't it be possible to do >>>> without assert()? >>>> >>>> Thanks, >>>> Z. >>>> >>>>> >>>>> No more comments below. >>>>> >>>>> Regards, >>>>> Dmitry >>>>> >>>>>> >>>>>> Thanks, >>>>>> Z. >>>>>> >>>>>>> >>>>>>> Regards, >>>>>>> Dmitry >>>>>>> >>>>>>> 20.05.2013 19:32, Zdenek Styblik пишет: >>>>>>> >>>>>>>> On Mon, May 20, 2013 at 3:07 PM, Dmitry Bazhenov >>>>>>>> <dim...@pigeonpoint.com> >>>>>>>> wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Zdenek, >>>>>>>>> >>>>>>>>> I agree with the first fragment changes (probably, it is worth >>>>>>>>> making >>>>>>>>> "rv" >>>>>>>>> an unsigned long). >>>>>>>>> >>>>>>>> >>>>>>>> Dmitry, >>>>>>>> >>>>>>>> it was just a quick modification to show what I meant. >>>>>>>> >>>>>>>>> As for the second fragment, I suggest we remove any check at all. >>>>>>>>> The >>>>>>>>> surrounding context ensures that the converted string is a 2-digit >>>>>>>>> hexadecimal (see the isxdigit(ch) check upper to the fragment). >>>>>>>>> >>>>>>>> >>>>>>>> Uh. I'd be rather safe than sorry. My $0.02 USD. >>>>>>>> >>>>>>>> Best regards, >>>>>>>> Z. >>>>>>>> >>>>>>>>> Regards, >>>>>>>>> Dmitry >>>>>>>>> >>>>>>>>> 20.05.2013 18:50, Zdenek Styblik пишет: >>>>>>>>> >>>>>>>>>> On Mon, May 20, 2013 at 2:17 PM, Dmitry Bazhenov >>>>>>>>>> <dim...@pigeonpoint.com> >>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Hello, Zdenek, >>>>>>>>>>> >>>>>>>>>>> I've addressed your comments. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> I see. Well, this sucks. Two solutions come to my mind. The >>>>>>>>>>>> first is >>>>>>>>>>>> to extend str2*() calls which, I admit, is going to be a bit of >>>>>>>>>>>> work. >>>>>>>>>>>> The second is to check 'errno', endptr and '#include >>>>>>>>>>>> <limits.h>'. In >>>>>>>>>>>> other words, do what str2*() calls do. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> I added checks of endptr and errno after the strtol() calls. In >>>>>>>>>>> the >>>>>>>>>>> context >>>>>>>>>>> of these two calls these checks look sufficient to me. Please, >>>>>>>>>>> review. >>>>>>>>>>> >>>>>>>>>>> Regards, >>>>>>>>>>> Dmitry >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Dmitry, >>>>>>>>>> >>>>>>>>>> please, see changes I've made/I propose. Lines which don't >>>>>>>>>> being/aren't prefixed with '+' got either changed or added. >>>>>>>>>> Also, some >>>>>>>>>> parts of the code are missing, but since you have written it, it >>>>>>>>>> shouldn't be a problem. >>>>>>>>>> If you have any questions regarding changes I've made, please, ask. >>>>>>>>>> >>>>>>>>>> +static int >>>>>>>>>> +recv_response(struct ipmi_intf * intf, unsigned char *data, int >>>>>>>>>> len) >>>>>>>>>> +{ >>>>>>>>>> + char hex_rs[IPMI_SERIAL_MAX_RESPONSE * 3]; >>>>>>>>>> int i, j, resp_len = 0; >>>>>>>>>> /* This shouldn't matter since rv isn't used further >>>>>>>>>> in the >>>>>>>>>> code, is it? */ >>>>>>>>>> long int rv = 0; >>>>>>>>>> unsigned long int hex_tmp = 0; >>>>>>>>>> [...] >>>>>>>>>> + if (strncmp(p, "ERR ", 4) == 0) { >>>>>>>>>> + serial_write_line(intf, "\r\r\r\r"); >>>>>>>>>> + sleep(1); >>>>>>>>>> + serial_flush(intf); >>>>>>>>>> errno = 0; >>>>>>>>>> rv = strtol(p + 4, &p, 16); >>>>>>>>>> + if ((rv && rv < 0x100 && *p == '\0') >>>>>>>>>> + || (rv == 0 && !errno)) { >>>>>>>>>> + /* The message didn't get it through. The upper >>>>>>>>>> + level will have to re-send */ >>>>>>>>>> + return 0; >>>>>>>>>> + } else { >>>>>>>>>> + lprintf(LOG_ERR, "Serial response is invalid"); >>>>>>>>>> + return -1; >>>>>>>>>> + } >>>>>>>>>> + } >>>>>>>>>> + /* parse the response */ >>>>>>>>>> + i = 0; >>>>>>>>>> + j = 0; >>>>>>>>>> + while (*p) { >>>>>>>>>> [...] >>>>>>>>>> + if (j == 2) { >>>>>>>>>> + /* parse the hex number */ >>>>>>>>>> + str_hex[j] = 0; >>>>>>>>>> errno = 0; >>>>>>>>>> hex_tmp = strtoul(str_hex, &pp, 16); >>>>>>>>>> /* I'm not 100% sure about "|| *pp != '\0' " >>>>>>>>>> here. >>>>>>>>>> Please, test it! */ >>>>>>>>>> if (errno != 0 || hex_tmp > UCHAR_MAX || *pp >>>>>>>>>> != '\0') >>>>>>>>>> { >>>>>>>>>> /* TODO - Handle this error */ >>>>>>>>>> } >>>>>>>>>> data[i++] = hex_tmp; >>>>>>>>>> + if (pp == str_hex || *pp != 0) { >>>>>>>>>> + break; >>>>>>>>>> + } >>>>>>>>>> + j = 0; >>>>>>>>>> + } >>>>>>>>>> [...] >>>>>>>>>> >>>>>>>>>> Best regards, >>>>>>>>>> Z. >>>>>>>>>> >>>>>>>>>>> 20.05.2013 10:46, Zdenek Styblik пишет: >>>>>>>>>>> >>>>>>>>>>>> On Mon, May 20, 2013 at 6:31 AM, Dmitry Bazhenov >>>>>>>>>>>> <dim...@pigeonpoint.com> >>>>>>>>>>>> wrote: >>>>>>>>>>>> [...] >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Great. However, please fix the following lines: >>>>>>>>>>>>>> + rate = atol(p + 1); >>>>>>>>>>>>>> + rate = atol(p + 1); >>>>>>>>>>>>>> + rv = strtol(p + 4, &p, 16); >>>>>>>>>>>>>> + data[i++] = (unsigned char) >>>>>>>>>>>>>> strtol(str_hex, >>>>>>>>>>>>>> &pp, >>>>>>>>>>>>>> 16); >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> I have changed atol() calls to str2uint(). >>>>>>>>>>>>> Unfortunately, ipmitool/helper.h does not provide appropriate >>>>>>>>>>>>> API >>>>>>>>>>>>> to >>>>>>>>>>>>> replace >>>>>>>>>>>>> strtol(). In the code strtol() is called with radix=16 that >>>>>>>>>>>>> means >>>>>>>>>>>>> the >>>>>>>>>>>>> input >>>>>>>>>>>>> is read in hexadecimal form only. I think it is best to leave >>>>>>>>>>>>> the >>>>>>>>>>>>> strtol() >>>>>>>>>>>>> calls there as they are. >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> I see. Well, this sucks. Two solutions come to my mind. The >>>>>>>>>>>> first is >>>>>>>>>>>> to extend str2*() calls which, I admit, is going to be a bit of >>>>>>>>>>>> work. >>>>>>>>>>>> The second is to check 'errno', endptr and '#include >>>>>>>>>>>> <limits.h>'. In >>>>>>>>>>>> other words, do what str2*() calls do. >>>>>>>>>>>> >>>>>>>>>>>> [...] >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> I'm also wondering whether /dev/tty or /dev/ttyS couldn't be >>>>>>>>>>>>>> implied >>>>>>>>>>>>>> and whether extending 'struct ipmi_intf' is really >>>>>>>>>>>>>> necessary. But >>>>>>>>>>>>>> it's >>>>>>>>>>>>>> just a silly question, I guess. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> I couldn't find a better solution to provide a device string >>>>>>>>>>>>> to the >>>>>>>>>>>>> drivers. >>>>>>>>>>>>> The implying /dev/tty(s, USB) strings in the command-line is >>>>>>>>>>>>> possible. >>>>>>>>>>>>> I'll >>>>>>>>>>>>> think through how to make it without affecting those users >>>>>>>>>>>>> who get >>>>>>>>>>>>> used >>>>>>>>>>>>> to >>>>>>>>>>>>> specify the full device names. >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> No, you're right. Serial dev can have <whatever> name. I guess >>>>>>>>>>>> it's >>>>>>>>>>>> fine as it's. >>>>>>>>>>>> >>>>>>>>>>>> [...] >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> These two functions both return a pointer to the static data. >>>>>>>>>>>>> Hence, >>>>>>>>>>>>> the >>>>>>>>>>>>> #ifdef guard is unnecessary. >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Hmm :-S Ok. To be honest, I'm disappointed, because this means >>>>>>>>>>>> possible memory leak which "can't" be fixed. >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> Z. >>>>>>>>>>>> >>>>>>>>>>>>> I'll provide the updated patch for serial drivers and separate >>>>>>>>>>>>> patch >>>>>>>>>>>>> for >>>>>>>>>>>>> the >>>>>>>>>>>>> bug soon. >>>>>>>>>>>>> >>>>>>>>>>>>> No more comments below. >>>>>>>>>>>>> >>>>>>>>>>>>> Regards, >>>>>>>>>>>>> Dmitry >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> Z. >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Please, review. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Regards, >>>>>>>>>>>>>>> Dmitry >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 26.04.2013 16:08, Dmitry Bazhenov пишет: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hello, all, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I would like to submit a patch which adds Serial Basic and >>>>>>>>>>>>>>>> Terminal >>>>>>>>>>>>>>>> mode >>>>>>>>>>>>>>>> interface drivers which utilize a direct serial connection in >>>>>>>>>>>>>>>> order >>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>> interact with IPMC. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Both the patches implement single and double bridging. >>>>>>>>>>>>>>>> However, >>>>>>>>>>>>>>>> bridging >>>>>>>>>>>>>>>> is temporarily broken for PICMG systems due to the known >>>>>>>>>>>>>>>> bridging >>>>>>>>>>>>>>>> issues. I'm going to update the patch as soon as these issues >>>>>>>>>>>>>>>> are >>>>>>>>>>>>>>>> resolved. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Regards, >>>>>>>>>>>>>>>> Dmitry >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> ------------------------------------------------------------------------------ >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> AlienVault Unified Security Management (USM) platform delivers >>>>>>>>>>>>>>> complete >>>>>>>>>>>>>>> security visibility with the essential security capabilities. >>>>>>>>>>>>>>> Easily >>>>>>>>>>>>>>> and >>>>>>>>>>>>>>> efficiently configure, manage, and operate all of your >>>>>>>>>>>>>>> security >>>>>>>>>>>>>>> controls >>>>>>>>>>>>>>> from a single console and one unified framework. Download a >>>>>>>>>>>>>>> free >>>>>>>>>>>>>>> trial. >>>>>>>>>>>>>>> http://p.sf.net/sfu/alienvault_d2d >>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>> Ipmitool-devel mailing list >>>>>>>>>>>>>>> Ipmitool-devel@lists.sourceforge.net >>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/ipmitool-devel >>>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>> >>>>> >> ------------------------------------------------------------------------------ Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may _______________________________________________ Ipmitool-devel mailing list Ipmitool-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ipmitool-devel