Hi Sam,

As of now i made changes to provide basic netlink apis so that everyone is 
unblocked.

I'll be making one more checkin which will be specific for nested attributes 
(both get and put).

Thanks.

Regards,
Ankur
________________________________________
From: Samuel Ghinet <sghi...@cloudbasesolutions.com>
Sent: Saturday, September 6, 2014 6:28 PM
To: dev@openvswitch.org; Ankur Sharma
Cc: Alin Serdean; Eitan Eliahu; Nithin Raju; Saurabh Shah
Subject: Re: [ovs-dev] [PATCH v2 2/6] NetlinkBuf.c: Netlink buffer         mgmt 
apis.

Hello Ankur,

I've got one questions about the buffer management and netlink put functions:
Do we have here some netlink put functions to use for nested netlink attributes?

Thanks,
Samuel

________________________________________

Date: Thu, 4 Sep 2014 09:44:45 -0700
From: Ben Pfaff <b...@nicira.com>
To: Ankur Sharma <ankursha...@vmware.com>
Cc: dev@openvswitch.org
Subject: Re: [ovs-dev] [PATCH v2 2/6] NetlinkBuf.c: Netlink buffer
        mgmt apis.
Message-ID: <20140904164445.gp...@nicira.com>
Content-Type: text/plain; charset=us-ascii

On Wed, Sep 03, 2014 at 04:38:43PM -0700, Ankur Sharma wrote:
> In this change we have introduced buffer mgmt apis which will be
> used while creating netlink messages. The basic functionality provided
> by apis is on similar lines to ofpbuf in userspace with an exception
> that it will not do run time buffer reallocation.
>
> Signed-off-by: Ankur Sharma <ankursha...@vmware.com>
> Tested-by: Ankur Sharma <ankursha...@vmware.com>
> Reported-at: 
> https://urldefense.proofpoint.com/v1/url?u=https://github.com/openvswitch/ovs-issues/issues/37&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=f6EhnZ0ORGZNt5QbYmRaOxfWfx%2Bqd3KEiPf3%2FYaollU%3D%0A&m=UpCR8mn9r%2B8zVqFI7fAVsss8DnqY6otYy6MkU2TMvo4%3D%0A&s=566d569e1e23cb9a93f1577dd0e098ba5fa58c5b8ef5011af4e45b35fbb94160
> Acked-by: Eitan Eliahu <elia...@vmware.com>
> Acked-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>

This was posted twice.  I applied the other version.


------------------------------

Message: 5
Date: Thu, 4 Sep 2014 09:51:00 -0700
From: Jarno Rajahalme <jrajaha...@nicira.com>
To: Ben Pfaff <b...@nicira.com>
Cc: dev@openvswitch.org
Subject: Re: [ovs-dev] [PATCH 1/2] ofp-errors: Fix bugs in treatment
        of      OpenFlow experimenter errors.
Message-ID: <70989f86-f7a3-4aa7-aa26-b0e55e80c...@nicira.com>
Content-Type: text/plain; charset=us-ascii

Acked-by: Jarno Rajahalme <jrajaha...@nicira.com>

On Aug 21, 2014, at 10:45 AM, Ben Pfaff <b...@nicira.com> wrote:

> OpenFlow 1.2 and later have "experimenter errors".  The OVS implementation
> was buggy in a few ways.  First, a bug in extract-ofp-errors prevented
> OF1.2+ experimenter errors from being properly decoded.  Second,
> OF1.2+ experimenter errors have only a type, not a code, whereas all other
> types of errors (standard errors, OF1.0/1.1 Nicira extension errors) have
> both, but extract-ofp-errors didn't properly enforce that.
>
> This commit fixes both problems and improves existing tests to verify that
> encoding and decoding of experimenter errors now works properly.
>
> This commit also fixes the definition of OFPBIC_DUP_INST.  It claimed to
> have an OF1.1 experimenter error value although OF1.1 didn't have
> experimenter errors.  This commit changes it to use a Nicira extension
> error in OF1.1 instead.
>
> Signed-off-by: Ben Pfaff <b...@nicira.com>
> ---
> build-aux/extract-ofp-errors |   30 +++++++++++++++++++++------
> lib/ofp-errors.h             |    2 +-
> tests/ofp-errors.at          |   47 ++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 72 insertions(+), 7 deletions(-)
>
> diff --git a/build-aux/extract-ofp-errors b/build-aux/extract-ofp-errors
> index 89dd31a..16bfbc7 100755
> --- a/build-aux/extract-ofp-errors
> +++ b/build-aux/extract-ofp-errors
> @@ -300,14 +300,34 @@ def extract_ofp_errors(fn):
>                       % (version1_name, version2_name,
>                          version2_name, version1_name))
>
> -            if vendor == vendor_map['NX']:
> +            if vendor == vendor_map['OF']:
> +                # All standard OpenFlow errors have a type and a code.
> +                if code is None:
> +                    fatal("%s: %s domain requires code" % (dst, vendor_name))
> +            elif vendor == vendor_map['NX']:
> +                # Before OpenFlow 1.2, OVS used a Nicira extension to
> +                # define errors that included a type and a code.
> +                #
> +                # In OpenFlow 1.2 and later, Nicira extension errors
> +                # are defined using the OpenFlow experimenter error
> +                # mechanism that includes a type but not a code.
> +                if v1 < version_map['1.2'] or v2 < version_map['1.2']:
> +                    if code is None:
> +                        fatal("%s: NX1.0 and NX1.1 domains require code"
> +                              % (dst, vendor_name))
>                 if v1 >= version_map['1.2'] or v2 >= version_map['1.2']:
>                     if code is not None:
>                         fatal("%s: NX1.2+ domains do not have codes" % dst)
> -                    code = 0
> -            elif vendor != vendor_map['OF']:
> +            else:
> +                # Experimenter extension error for OF1.2+ only.
> +                if v1 < version_map['1.2']:
> +                    fatal("%s: %s domain not supported before OF1.2"
> +                          % (dst, vendor_name))
>                 if code is not None:
> -                    fatal("%s: %s domains do not have codes" % vendor_name)
> +                    fatal("%s: %s domains do not have codes"
> +                          % (dst, vendor_name))
> +            if code is None:
> +                code = 0
>
>             for version in range(v1, v2 + 1):
>                 domain[version].setdefault(vendor, {})
> @@ -376,8 +396,6 @@ static enum ofperr
>             if enum not in map:
>                 continue
>             vendor, type_, code = map[enum]
> -            if code is None:
> -                continue
>             value = (vendor << 32) | (type_ << 16) | code
>             if value in found:
>                 continue
> diff --git a/lib/ofp-errors.h b/lib/ofp-errors.h
> index 643fa72..0d5bb3a 100644
> --- a/lib/ofp-errors.h
> +++ b/lib/ofp-errors.h
> @@ -262,7 +262,7 @@ enum ofperr {
>     /* OF1.2+(3,8).  Permissions error. */
>     OFPERR_OFPBIC_EPERM,
>
> -    /* ONF1.1-1.3(2600), OF1.4+(3,9).  Duplicate instruction. */
> +    /* NX1.1(3,256), ONF1.2-1.3(2600), OF1.4+(3,9).  Duplicate instruction. 
> */
>     OFPERR_OFPBIC_DUP_INST,
>
> /* ## --------------- ## */
> diff --git a/tests/ofp-errors.at b/tests/ofp-errors.at
> index f8c5cc4..daf7ddd 100644
> --- a/tests/ofp-errors.at
> +++ b/tests/ofp-errors.at
> @@ -163,10 +163,29 @@ AT_CHECK([ovs-ofctl ofp-print '0301001855555555 
> ffff0004 00002320 01020008111111
> OFPT_ERROR (OF1.2) (xid=0x55555555): NXBRC_MUST_BE_ZERO
> OFPT_ECHO_REQUEST (xid=0x11111111): 0 bytes of payload
> ])
> +
> +AT_CHECK([ovs-ofctl ofp-print '0301001812345678 ffff0a28 4f4e4600 
> 0300000812345678'], [0], [dnl
> +OFPT_ERROR (OF1.2) (xid=0x12345678): OFPBIC_DUP_INST
> +OFPT_HELLO (OF1.2) (xid=0x12345678):
> + version bitmap: 0x01, 0x02, 0x03
> +])
> +AT_CHECK([ovs-ofctl ofp-print '0401001812345678 ffff0a28 4f4e4600 
> 0400000812345678'], [0], [dnl
> +OFPT_ERROR (OF1.3) (xid=0x12345678): OFPBIC_DUP_INST
> +OFPT_HELLO (OF1.3) (xid=0x12345678):
> + version bitmap: 0x01, 0x02, 0x03, 0x04
> +])
> +AT_CHECK([ovs-ofctl ofp-print '0501001412345678 00030009 0500000812345678'], 
> [0], [dnl
> +OFPT_ERROR (OF1.4) (xid=0x12345678): OFPBIC_DUP_INST
> +OFPT_HELLO (OF1.4) (xid=0x12345678):
> + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05
> +])
> AT_CLEANUP
>
> AT_SETUP([encoding experimenter errors])
> AT_KEYWORDS([ofp-print ofp-errors])
> +# Demonstrate that a Nicira extension error gets encoded correctly
> +# using the Nicira error extension format in OF1.0 and OF1.1, and
> +# correctly using the standard experimenter format in OF1.2.
> AT_CHECK(
>   [ovs-ofctl encode-error-reply NXBRC_MUST_BE_ZERO 0100000812345678], [0], 
> [dnl
> 00000000  01 01 00 1c 12 34 56 78-b0 c2 00 00 00 00 23 20 @&t@
> @@ -182,4 +201,32 @@ AT_CHECK(
> 00000000  03 01 00 18 12 34 56 78-ff ff 00 04 00 00 23 20 @&t@
> 00000010  03 00 00 08 12 34 56 78-
> ])
> +
> +# Check that OFPERR_OFPBIC_DUP_INST is:
> +#    - not encodable in OF1.0 (OF1.0 doesn't have instructions, after all).
> +#    - encoded as a Nicira extension in OF1.1.
> +#    - encoded as an ONF extension in OF1.2 and OF1.3.
> +#    - encoded in the standard form in OF1.4.
> +AT_CHECK(
> +  [ovs-ofctl '-vPATTERN:console:%c|%p|%m' encode-error-reply OFPBIC_DUP_INST 
> 0100000812345678], [0], [dnl
> +00000000  01 01 00 1c 12 34 56 78-b0 c2 00 00 00 00 23 20 @&t@
> +00000010  00 01 02 09 01 00 00 08-12 34 56 78 @&t@
> +], [ofp_errors|ERR|cannot encode OFPBIC_DUP_INST for OpenFlow 1.0
> +])
> +AT_CHECK([ovs-ofctl encode-error-reply OFPBIC_DUP_INST 0200000812345678], 
> [0],
> +[00000000  02 01 00 1c 12 34 56 78-b0 c2 00 00 00 00 23 20 @&t@
> +00000010  00 03 01 00 02 00 00 08-12 34 56 78 @&t@
> +])
> +AT_CHECK([ovs-ofctl encode-error-reply OFPBIC_DUP_INST 0300000812345678], 
> [0],
> +[00000000  03 01 00 18 12 34 56 78-ff ff 0a 28 4f 4e 46 00 @&t@
> +00000010  03 00 00 08 12 34 56 78-
> +])
> +AT_CHECK([ovs-ofctl encode-error-reply OFPBIC_DUP_INST 0400000812345678], 
> [0],
> +[00000000  04 01 00 18 12 34 56 78-ff ff 0a 28 4f 4e 46 00 @&t@
> +00000010  04 00 00 08 12 34 56 78-
> +])
> +AT_CHECK([ovs-ofctl encode-error-reply OFPBIC_DUP_INST 0500000812345678], 
> [0],
> +[00000000  05 01 00 14 12 34 56 78-00 03 00 09 05 00 00 08 @&t@
> +00000010  12 34 56 78 @&t@
> +])
> AT_CLEANUP
> --
> 1.7.10.4
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://urldefense.proofpoint.com/v1/url?u=http://openvswitch.org/mailman/listinfo/dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=f6EhnZ0ORGZNt5QbYmRaOxfWfx%2Bqd3KEiPf3%2FYaollU%3D%0A&m=UpCR8mn9r%2B8zVqFI7fAVsss8DnqY6otYy6MkU2TMvo4%3D%0A&s=535e29ef7e8e22790244d0f216980d1c4318cfd23e37d1b5e8e7f00ac70f2a84



------------------------------

Subject: Digest Footer

_______________________________________________
dev mailing list
dev@openvswitch.org
https://urldefense.proofpoint.com/v1/url?u=http://openvswitch.org/mailman/listinfo/dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=f6EhnZ0ORGZNt5QbYmRaOxfWfx%2Bqd3KEiPf3%2FYaollU%3D%0A&m=UpCR8mn9r%2B8zVqFI7fAVsss8DnqY6otYy6MkU2TMvo4%3D%0A&s=535e29ef7e8e22790244d0f216980d1c4318cfd23e37d1b5e8e7f00ac70f2a84


------------------------------

End of dev Digest, Vol 62, Issue 55
***********************************
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to