Hi,

I've been playing around with OVS 1.1 and have a question regarding
emergency mode specified in OpenFlow 1.0.
The specification says,

4.3     Connection Interruption
...
All normal entries are deleted when entering emergency mode.

but if I set a flow with no timeout, it doesn't get deleted.

I went through the code below, and IIUC, fail_open_run() in connmgr.c
seems to clean up the remaining flows, but I realized that
mgr->fail_open was NULL in my environmet.

void
connmgr_run(struct connmgr *mgr,
            void (*handle_openflow)(struct ofconn *, struct ofpbuf *ofp_msg))
{
...
    /* Fail-open maintenance.  Do this after processing the ofconns since
     * fail-open checks the status of the controller rconn. */
    if (mgr->fail_open) {
        fail_open_run(mgr->fail_open);
    }

I'm running the controller in secure mode, and IIUC, the following
code in connmgr.c seems to responsible for this behavior.

static void
update_fail_open(struct connmgr *mgr)
{
    if (connmgr_has_controllers(mgr)
        && mgr->fail_mode == OFPROTO_FAIL_STANDALONE) {
        if (!mgr->fail_open) {
            mgr->fail_open = fail_open_create(mgr->ofproto, mgr);
        }
    } else {
        fail_open_destroy(mgr->fail_open);
        mgr->fail_open = NULL;
    }
}

Is OVS intended to delete flows only if the controller is running in
standalone mode, and not in secure mode?  If so, what are the reasons
for it?

Thanks,

Yoshi
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to