Commit e503cc199 (ofproto: Optimise OpenFlow flow expiry) optimized OpenFlow flow expiration by putting expirable flows on a list. However, the list is only configured at rule creation time. If the rule is created without a timeout, but is later set by the fin_timeout action, it will never expire. This commit adds the rule to the list when the action is triggered.
Bug #18584. Signed-off-by: Justin Pettit <jpet...@nicira.com> --- ofproto/ofproto-dpif-xlate.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c index 0507f8e..bd96910 100644 --- a/ofproto/ofproto-dpif-xlate.c +++ b/ofproto/ofproto-dpif-xlate.c @@ -1835,6 +1835,10 @@ xlate_fin_timeout(struct xlate_ctx *ctx, if (ctx->xin->tcp_flags & (TCP_FIN | TCP_RST) && ctx->rule) { struct rule_dpif *rule = ctx->rule; + if (list_is_empty(&rule->up.expirable)) { + list_insert(&rule->up.ofproto->expirable, &rule->up.expirable); + } + reduce_timeout(oft->fin_idle_timeout, &rule->up.idle_timeout); reduce_timeout(oft->fin_hard_timeout, &rule->up.hard_timeout); } -- 1.7.5.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev