Dmitry,

I've committed your changes. However, I'm wondering about single/dual
bridging functionality. Does fixing of ID#3611226 ``bridging code
cleanup for PICMG platforms'' by Jim Mank imply it will work
auto-magically now, or is there some work left to be done to make it
work?

Thanks for clarification,
Z.

--
Zdenek Styblik
email: zdenek.styb...@gmail.com
jabber: zdenek.styb...@gmail.com


On Tue, May 28, 2013 at 6:44 AM, Dmitry Bazhenov <dim...@pigeonpoint.com> wrote:
> 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