rconn: Be pickier about what constitutes a successful connection.
authorBen Pfaff <blp@nicira.com>
Fri, 10 Oct 2008 17:13:12 +0000 (10:13 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 10 Oct 2008 17:13:12 +0000 (10:13 -0700)
commite10dfcf357301f359acea912f3efd652c8208b3e
treee52f617dddb4d1521bf6f27ba96153d0e32589f9
parentd7da8505f29e73083d0ce3ddf87ddcbc0c7e4454
rconn: Be pickier about what constitutes a successful connection.

When secchan is configured to "fail open" after failing to connect to
a controller for a period of time, it needs a heuristic for what
constitutes a successful connection.  Until now, that heuristic was
simply that when it received an OpenFlow message from the controller
(any OpenFlow message), it considered the connection successful.

However, this is no longer good enough, because NOX performs
admission control on connections after sending a number of OpenFlow
messages, in particular after doing OpenFlow version negotiation and
requesting the switch features (and receiving the reply).  Thus, this
commit adjusts the heuristic by only considering certain OpenFlow
messages to demonstrate that admission control checks have passed and
thus that the connection should be considered successful.

As a fallback, any connection that persists for 30 seconds or longer is
also considered successful.

An alternate and complementary approach (that this commit does not
implement) would be to use an OpenFlow error message to indicate why
the connection is closing.

Fixes bug #239.
include/rconn.h
lib/rconn.c
secchan/secchan.c