hindex: New data structure for hashed multimaps.

Signed-off-by: Ben Pfaff <blp@nicira.com>
ofproto: Index flows by cookie.

The simplest way for an OpenFlow controller to refer to a (set of) flows
is by a controller-issued flow cookie.  Make this fast by inserting flows
to a hash index, and use that when flows are queried, deleted, or modified
with a full cookie mask.

Signed-off-by: Jarno Rajahalme <jarno.rajahalme@nsn.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
hmap: Use is_pow2() instead of open-coding it.

Also, SIZE_MAX + 1 is 0, which is not a power of 2, so the following assert
is redundant and this commit removes it.

Signed-off-by: Ben Pfaff <blp@nicira.com>
ofproto-dpif: Reconfigure tunnel in port_modified().

This seems like the logical place to do it.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
ofproto-dpif: Store patch port peer in struct ofport_dpif.

This removes ofproto-dpif-xlate's dependency on ofport_get_peer()
which, while cleaner in-and-of itself, will become more important
as ofproto-dpif_xlate modularizes.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
ovs-xapi-sync: Cache the bridge-id value for non nicira-bridge-id too.

Currently we connect to xapi in case there are multiple
external_ids:xs-network-uuids to get the single bridge id everytime
we have a change in the database for all the interested columns in
ovs-xapi-sync. The xs-network-uuids value can also change whenever
new VLANs are added or deleted, which is a common use case. The
disadvantage with this approach is that we query XAPI more often
and set the bridge-id as "" if we don't get a valid response for
our query. This can take down the logical connectivity for all the
VMs on that xenserver.

Instead of looking at the PIF records for all the xs-network-uuids,
we can instead just look at the xapi record which has the same bridge
name as the OVS bridge name and then cache its uuid. This value will
hold true till the OVS bridge is recreated in which case we will re-read
the value.

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
tests: Add test-hindex to gitignore.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
ovs-xapi-sync: Make bridge-id caching logic easier to understand.

The previous code had many subtleties that were easy to miss.  This code
is intended to be more obviously correct.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Tested-by: Gurucharan Shetty <shettyg@nicira.com>
ofproto-dpif: Reconfigure when netflow is enabled/disabled.

The presence or absence of netflow affects wildcarding, and
therefore need to cause a revalidation when changed.

Found by inspection.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
ofproto-dpif: Revalidate on ofproto removal.

When an ofproto is removed, this will likely require revalidation
of flows owned by other ofprotos under the same backer.

Found by inspection.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
Merge git://git.openvswitch.org/openvswitch