Thanks, applied.

On Wed, Mar 19, 2014 at 04:18:21PM -0700, Alex Wang wrote:
> Looks good to me,
> 
> Acked-by: Alex Wang <[email protected]>
> 
> 
> On Wed, Mar 19, 2014 at 4:03 PM, Ben Pfaff <[email protected]> wrote:
> 
> > MSVC 2013 finally implements them, 14 years after they became part of C,
> > so we can use them in generic code now.
> >
> > Signed-off-by: Ben Pfaff <[email protected]>
> > ---
> >  CodingStyle                  |    9 ++++-----
> >  lib/odp-util.c               |   11 +++++------
> >  ofproto/ofproto-dpif-xlate.c |   10 +++++-----
> >  3 files changed, 14 insertions(+), 16 deletions(-)
> >
> > diff --git a/CodingStyle b/CodingStyle
> > index 6ac0316..bae8cd6 100644
> > --- a/CodingStyle
> > +++ b/CodingStyle
> > @@ -515,8 +515,7 @@ global variables.
> >
> >  C DIALECT
> >
> > -  Some C99 features are OK because they are widely implemented even in
> > -older compilers:
> > +  Some C99 features are OK because they are widely implemented:
> >
> >      * Flexible array members (e.g. struct { int foo[]; }).
> >
> > @@ -531,12 +530,12 @@ older compilers:
> >        only take on the values 0 or 1, because this behavior can't be
> >        simulated on C89 compilers.
> >
> > +    * Designated initializers (e.g. "struct foo foo = {.a = 1};" and
> > +      "int a[] = {[2] = 5};").
> > +
> >    Don't use other C99 features that are not widely implemented in
> >  older compilers:
> >
> > -    * Don't use designated initializers (e.g. don't write "struct foo
> > -      foo = {.a = 1};" or "int a[] = {[2] = 5};").
> > -
> >      * Don't mix declarations and code within a block.
> >
> >      * Don't use declarations in iteration statements (e.g. don't write
> > diff --git a/lib/odp-util.c b/lib/odp-util.c
> > index 463f008..5cc2757 100644
> > --- a/lib/odp-util.c
> > +++ b/lib/odp-util.c
> > @@ -149,9 +149,8 @@ static void
> >  format_odp_sample_action(struct ds *ds, const struct nlattr *attr)
> >  {
> >      static const struct nl_policy ovs_sample_policy[] = {
> > -        { NL_A_NO_ATTR, 0, 0, false }, /* OVS_SAMPLE_ATTR_UNSPEC */
> > -        { NL_A_U32, 0, 0, false },     /* OVS_SAMPLE_ATTR_PROBABILITY */
> > -        { NL_A_NESTED, 0, 0, false },  /* OVS_SAMPLE_ATTR_ACTIONS */
> > +        [OVS_SAMPLE_ATTR_PROBABILITY] = { .type = NL_A_U32 },
> > +        [OVS_SAMPLE_ATTR_ACTIONS] = { .type = NL_A_NESTED }
> >      };
> >      struct nlattr *a[ARRAY_SIZE(ovs_sample_policy)];
> >      double percentage;
> > @@ -255,9 +254,9 @@ static void
> >  format_odp_userspace_action(struct ds *ds, const struct nlattr *attr)
> >  {
> >      static const struct nl_policy ovs_userspace_policy[] = {
> > -        { NL_A_NO_ATTR, 0, 0, false }, /* OVS_USERSPACE_ATTR_UNSPEC */
> > -        { NL_A_U32, 0, 0, false },     /* OVS_USERSPACE_ATTR_PID */
> > -        { NL_A_UNSPEC, 0, 0, true },   /* OVS_USERSPACE_ATTR_USERDATA */
> > +        [OVS_USERSPACE_ATTR_PID] = { .type = NL_A_U32 },
> > +        [OVS_USERSPACE_ATTR_USERDATA] = { .type = NL_A_UNSPEC,
> > +                                          .optional = true },
> >      };
> >      struct nlattr *a[ARRAY_SIZE(ovs_userspace_policy)];
> >      const struct nlattr *userdata_attr;
> > diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
> > index 1ff80d9..d0b1f47 100644
> > --- a/ofproto/ofproto-dpif-xlate.c
> > +++ b/ofproto/ofproto-dpif-xlate.c
> > @@ -201,9 +201,11 @@ struct xlate_ctx {
> >   * it did not arrive on a "real" port.  'ofpp_none_bundle' exists for
> >   * when an input bundle is needed for validation (e.g., mirroring or
> >   * OFPP_NORMAL processing).  It is not connected to an 'ofproto' or have
> > - * any 'port' structs, so care must be taken when dealing with it.
> > - * The bundle's name and vlan mode are initialized in
> > lookup_input_bundle() */
> > -static struct xbundle ofpp_none_bundle;
> > + * any 'port' structs, so care must be taken when dealing with it. */
> > +static struct xbundle ofpp_none_bundle = {
> > +    .name      = "OFPP_NONE",
> > +    .vlan_mode = PORT_VLAN_TRUNK
> > +};
> >
> >  /* Node in 'xport''s 'skb_priorities' map.  Used to maintain a map from
> >   * 'priority' (the datapath's term for QoS queue) to the dscp bits which
> > all
> > @@ -894,8 +896,6 @@ lookup_input_bundle(const struct xbridge *xbridge,
> > ofp_port_t in_port,
> >      /* Special-case OFPP_NONE, which a controller may use as the ingress
> >       * port for traffic that it is sourcing. */
> >      if (in_port == OFPP_NONE) {
> > -        ofpp_none_bundle.name = "OFPP_NONE";
> > -        ofpp_none_bundle.vlan_mode = PORT_VLAN_TRUNK;
> >          return &ofpp_none_bundle;
> >      }
> >
> > --
> > 1.7.10.4
> >
> > _______________________________________________
> > dev mailing list
> > [email protected]
> > http://openvswitch.org/mailman/listinfo/dev
> >
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to