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

Reply via email to