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