On Tue, May 28, 2013 at 6:39 AM, Dmitry Bazhenov <dim...@pigeonpoint.com> wrote: > Hello, Zdenek, > > There's a typo (and it's mine originally): > > enable_intf_serial=yes > > Needed: > > xenable_intf_serial=yes > > Regards, > Dmitry >
Oh, I see Dmitry. However, the changes I've made seem to be required anyway, otherwise it gets borked. Please, check again. Thanks, Z. > 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