[prev in list] [next in list] [prev in thread] [next in thread]
List: openvswitch-dev
Subject: [ovs-dev] [PATCH] ofproto: Delete fail-open flow when turning off fail-open mode.
From: blp () nicira ! com (Ben Pfaff)
Date: 2010-02-24 0:48:09
Message-ID: 20100224004809.GC15995 () nicira ! com
[Download RAW message or body]
I tested that this superficially does what it claims to do, and then
pushed it.
On Tue, Feb 23, 2010 at 03:30:02PM -0800, Justin Pettit wrote:
> Looks good to me.
>
> --Justin
>
>
> On Feb 23, 2010, at 3:14 PM, Ben Pfaff wrote:
>
> > fail_open_destroy() was not deleting the fail-open flow, so turning off
> > fail-open mode did not work if fail-open had already been triggered.
> > This commit fixes the problem.
> >
> > Reported by Paul Ingram <paul at nicira.com>.
> > ---
> > ofproto/fail-open.c | 15 +++++++++++++--
> > ofproto/ofproto.c | 4 +++-
> > 2 files changed, 16 insertions(+), 3 deletions(-)
> >
> > diff --git a/ofproto/fail-open.c b/ofproto/fail-open.c
> > index 54a91cd..ff77de8 100644
> > --- a/ofproto/fail-open.c
> > +++ b/ofproto/fail-open.c
> > @@ -1,5 +1,5 @@
> > /*
> > - * Copyright (c) 2008, 2009 Nicira Networks.
> > + * Copyright (c) 2008, 2009, 2010 Nicira Networks.
> > *
> > * Licensed under the Apache License, Version 2.0 (the "License");
> > * you may not use this file except in compliance with the License.
> > @@ -76,6 +76,8 @@ struct fail_open {
> > struct rconn_packet_counter *bogus_packet_counter;
> > };
> >
> > +static void fail_open_recover(struct fail_open *);
> > +
> > /* Returns true if 'fo' should be in fail-open mode, otherwise false. */
> > static inline bool
> > should_fail_open(const struct fail_open *fo)
> > @@ -155,7 +157,15 @@ fail_open_run(struct fail_open *fo)
> > void
> > fail_open_maybe_recover(struct fail_open *fo)
> > {
> > - if (fail_open_is_active(fo) && rconn_is_admitted(fo->controller)) {
> > + if (rconn_is_admitted(fo->controller)) {
> > + fail_open_recover(fo);
> > + }
> > +}
> > +
> > +static void
> > +fail_open_recover(struct fail_open *fo)
> > +{
> > + if (fail_open_is_active(fo)) {
> > flow_t flow;
> >
> > VLOG_WARN("No longer in fail-open mode");
> > @@ -235,6 +245,7 @@ void
> > fail_open_destroy(struct fail_open *fo)
> > {
> > if (fo) {
> > + fail_open_recover(fo);
> > /* We don't own fo->controller. */
> > switch_status_unregister(fo->ss_cat);
> > rconn_packet_counter_destroy(fo->bogus_packet_counter);
> > diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
> > index a431cc7..b1f022f 100644
> > --- a/ofproto/ofproto.c
> > +++ b/ofproto/ofproto.c
> > @@ -679,6 +679,9 @@ ofproto_destroy(struct ofproto *p)
> > return;
> > }
> >
> > + /* Destroy fail-open early, because it touches the classifier. */
> > + ofproto_set_failure(p, false);
> > +
> > ofproto_flush_flows(p);
> > classifier_destroy(&p->cls);
> >
> > @@ -697,7 +700,6 @@ ofproto_destroy(struct ofproto *p)
> > switch_status_destroy(p->switch_status);
> > in_band_destroy(p->in_band);
> > discovery_destroy(p->discovery);
> > - fail_open_destroy(p->fail_open);
> > pinsched_destroy(p->miss_sched);
> > pinsched_destroy(p->action_sched);
> > netflow_destroy(p->netflow);
> > --
> > 1.6.6.1
> >
> >
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev_openvswitch.org
>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic