Oh, unfortunately it breaks test 629 "tunnel_push_pop - action".  I
haven't had a chance to fully investigate yet.

On Wed, May 27, 2015 at 09:33:07AM -0700, Ben Pfaff wrote:
> Wow, thanks!
> 
> I added a Tested-by for you also, and I'll apply this to master in a
> minute.
> 
> On Wed, May 27, 2015 at 09:17:23AM -0700, Alex Wang wrote:
> > Tested,
> > 
> > 
> > Acked-by: Alex Wang <al...@nicira.com>
> > 
> > On Tue, May 26, 2015 at 6:48 PM, Ben Pfaff <b...@nicira.com> wrote:
> > 
> > > Until now, when two tunnels had an identical configuration, both of them
> > > were assigned OpenFlow ports, but only one of those OpenFlow ports was
> > > functional.  With this commit, only one of the two (or more) identically
> > > configured tunnels will be assigned an OpenFlow port number.
> > >
> > > Reported-by: Keith Holleman <hollemani...@gmail.com>
> > > Signed-off-by: Ben Pfaff <b...@nicira.com>
> > > ---
> > >  AUTHORS                |  1 +
> > >  ofproto/ofproto-dpif.c |  8 ++++++--
> > >  ofproto/tunnel.c       | 14 ++++++++++----
> > >  ofproto/tunnel.h       |  6 +++---
> > >  4 files changed, 20 insertions(+), 9 deletions(-)
> > >
> > > diff --git a/AUTHORS b/AUTHORS
> > > index 5178b43..60b8cfa 100644
> > > --- a/AUTHORS
> > > +++ b/AUTHORS
> > > @@ -276,6 +276,7 @@ Joan Cirer              j...@ev0.net
> > >  John Darrington         j...@darrington.wattle.id.au
> > >  John Galgay             j...@galgay.net
> > >  John Hurley             john.hur...@netronome.com
> > > +Keith Holleman          hollemani...@gmail.com
> > >  K 華                    k940...@hotmail.com
> > >  Kevin Mancuso           kevin.manc...@rackspace.com
> > >  Kiran Shanbhog          ki...@vmware.com
> > > diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
> > > index d151bb7..532fc4a 100644
> > > --- a/ofproto/ofproto-dpif.c
> > > +++ b/ofproto/ofproto-dpif.c
> > > @@ -1686,9 +1686,13 @@ port_construct(struct ofport *port_)
> > >      port->odp_port = dpif_port.port_no;
> > >
> > >      if (netdev_get_tunnel_config(netdev)) {
> > > +        error = tnl_port_add(port, port->up.netdev, port->odp_port,
> > > +                             ovs_native_tunneling_is_on(ofproto),
> > > namebuf);
> > > +        if (error) {
> > > +            return error;
> > > +        }
> > > +
> > >          atomic_count_inc(&ofproto->backer->tnl_count);
> > > -        tnl_port_add(port, port->up.netdev, port->odp_port,
> > > -                     ovs_native_tunneling_is_on(ofproto), namebuf);
> > >          port->is_tunnel = true;
> > >          if (ofproto->ipfix) {
> > >             dpif_ipfix_add_tunnel_port(ofproto->ipfix, port_,
> > > port->odp_port);
> > > diff --git a/ofproto/tunnel.c b/ofproto/tunnel.c
> > > index 3ea0eb4..d2ac7c6 100644
> > > --- a/ofproto/tunnel.c
> > > +++ b/ofproto/tunnel.c
> > > @@ -1,4 +1,4 @@
> > > -/* Copyright (c) 2013, 2014 Nicira, Inc.
> > > +/* Copyright (c) 2013, 2014, 2015 Nicira, Inc.
> > >   *
> > >   * Licensed under the Apache License, Version 2.0 (the "License");
> > >   * you may not use this file except in compliance with the License.
> > > @@ -203,14 +203,20 @@ tnl_port_add__(const struct ofport_dpif *ofport,
> > > const struct netdev *netdev,
> > >
> > >  /* Adds 'ofport' to the module with datapath port number 'odp_port'.
> > > 'ofport's
> > >   * must be added before they can be used by the module. 'ofport' must be 
> > > a
> > > - * tunnel. */
> > > -void
> > > + * tunnel.
> > > + *
> > > + * Returns 0 if successful, otherwise a positive errno value. */
> > > +int
> > >  tnl_port_add(const struct ofport_dpif *ofport, const struct netdev
> > > *netdev,
> > >               odp_port_t odp_port, bool native_tnl, const char name[])
> > > OVS_EXCLUDED(rwlock)
> > >  {
> > > +    bool ok;
> > > +
> > >      fat_rwlock_wrlock(&rwlock);
> > > -    tnl_port_add__(ofport, netdev, odp_port, true, native_tnl, name);
> > > +    ok = tnl_port_add__(ofport, netdev, odp_port, true, native_tnl, 
> > > name);
> > >      fat_rwlock_unlock(&rwlock);
> > > +
> > > +    return ok ? 0 : EEXIST;
> > >  }
> > >
> > >  /* Checks if the tunnel represented by 'ofport' reconfiguration due to
> > > changes
> > > diff --git a/ofproto/tunnel.h b/ofproto/tunnel.h
> > > index 6181762..b8415ab 100644
> > > --- a/ofproto/tunnel.h
> > > +++ b/ofproto/tunnel.h
> > > @@ -1,4 +1,4 @@
> > > -/* Copyright (c) 2013 Nicira, Inc.
> > > +/* Copyright (c) 2013, 2015 Nicira, Inc.
> > >   *
> > >   * Licensed under the Apache License, Version 2.0 (the "License");
> > >   * you may not use this file except in compliance with the License.
> > > @@ -33,8 +33,8 @@ void ofproto_tunnel_init(void);
> > >  bool tnl_port_reconfigure(const struct ofport_dpif *, const struct netdev
> > > *,
> > >                            odp_port_t, bool native_tnl, const char 
> > > name[]);
> > >
> > > -void tnl_port_add(const struct ofport_dpif *, const struct netdev *,
> > > -                  odp_port_t odp_port, bool native_tnl, const char
> > > name[]);
> > > +int tnl_port_add(const struct ofport_dpif *, const struct netdev *,
> > > +                 odp_port_t odp_port, bool native_tnl, const char 
> > > name[]);
> > >  void tnl_port_del(const struct ofport_dpif *);
> > >
> > >  const struct ofport_dpif *tnl_port_receive(const struct flow *);
> > > --
> > > 2.1.3
> > >
> > > _______________________________________________
> > > dev mailing list
> > > dev@openvswitch.org
> > > http://openvswitch.org/mailman/listinfo/dev
> > >
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to