Agreed.

28.05.2013 10:41, Zdenek Styblik пишет:
> 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

Reply via email to