datapath: Include linux/completion.h

This is needed for compilation against Linux 2.6.19

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Jesse Gross <jesse@nicira.com>
datapath: Use ETH_ALEN instead of VLAN_ETH_ALEN

VLAN_ETH_ALEN will be removed in version 3.5 of the Linux kernel.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Jesse Gross <jesse@nicira.com>
ovs-vsctl: Verify correct record in cmd_get_fail_mode() for VLAN bridges.

A VLAN bridge uses its parent's fail-mode, so checking the fail-mode should
verify the parent's bridge record.

This fixes a bug, but it is unlikely to ever have caused a real problem for
users.

Found by inspection.

Signed-off-by: Ben Pfaff <blp@nicira.com>
ovs-vsctl: Verify VLAN bridge controllers in cmd_get_controller().

A VLAN bridge uses its parent's controllers, so checking the controller
should verify the parent's set of controllers.

The change to verify_controllers() isn't necessary; it just deletes
the check for a null 'bridge' because verify_controllers() can no
longer be called with a null 'bridge'.

This fixes a bug, but it is unlikely to ever have caused a real problem for
users.

Found by inspection.

Signed-off-by: Ben Pfaff <blp@nicira.com>
ovs-vsctl: Merge struct vsctl_info into struct vsctl_context.

To speed up management operations with many ports, we need to preserve the
cache of bridges, ports, and interfaces from one operation to the next.
One necessary step is to push the "struct vsctl_info" that did the caching
up from the individual functions that need it into a more global structure.
This commit does that, merging it into struct vsctl_context.

This commit also modifies do_vsctl(), the top-level control code in
ovs-vsctl, to keep this part of the vsctl_context unchanged from running
one command to the next.

Signed-off-by: Ben Pfaff <blp@nicira.com>
ovs-vsctl: Remove 'fail_mode' member from struct vsctl_bridge.

It's only used in cmd_get_fail_mode(), which can easily look it up for
itself, so there's no benefit to storing it in every vsctl_bridge record.

Signed-off-by: Ben Pfaff <blp@nicira.com>
ovs-vsctl: Remove 'ctrl', 'n_ctrl' from struct vsctl_bridge.

Only the controller commands used these members and they didn't even help
those commands very much.

Signed-off-by: Ben Pfaff <blp@nicira.com>
ovs-vsctl: Speed up port management operations with many ports.

This makes a sequence of 10,000 "add-port" operations on a single ovs-vsctl
command line about 4X faster.  It makes a sequence of 10,000 "del-port"
operations on a single command line over 2X faster.

It works by not repopulating the cache of relationships between bridges,
ports, and interfaces after most operations, instead updating them
incrementally in-place.

Signed-off-by: Ben Pfaff <blp@nicira.com>
documantation: Trivial fix for kvm option error.

Signed-off-by: Yasuhito Takamiya <yasuhito@gmail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
automake: ofp-errors.[c|inc] are actually inside srcdir

This patch fixes a build error when OVS is built inside
"./_debian" directory.

To reproduce this issue run "fakeroot debian/rules binary"
or "debuild binary" inside the git root directory.

Signed-off-by: Ansis Atteka <aatteka@nicira.com>
vswitchd: Make "cfm_fault_status" column ephemeral.

There's no need to log this to the on-disk database.

Spotted while examining "ovsdb-tool show-log" output.

Signed-off-by: Ben Pfaff <blp@nicira.com>
vswitchd: Make "cfm_health" column ephemeral.

There's no need to log this to the on-disk database.

Spotted while examining "ovsdb-tool show-log" output.

Reported-by: Ethan Jackson <ethan@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
ofproto: Fix use-after-free error when ports disappear.

update_port() can delete the port for which it is called, if the underlying
network device has been destroyed, so HMAP_FOR_EACH is unsafe in
ofproto_run().

Less obviously, update_port() can delete unrelated ports.  For example,
suppose that initially device A is port 1 and device B is port 2.  If
update_port("A") runs just after this, then it will ofport_remove() both
ports, then ofport_install() A as the new port 2.

So this commit first assembles a list of ports to update, then updates them
in a separate loop.

Without this commit, running "ovs-dpctl del-dp" while ovs-vswitchd is
running consistently causes a crash for me within a few seconds.

Signed-off-by: Ben Pfaff <blp@nicira.com>
tests: Avoid daemon race between pidfile creation and parent notification.

This was causing "check-valgrind" to sometimes fail in this test.

Signed-off-by: Ben Pfaff <blp@nicira.com>
tests: Generalize 'sed' calls in MAC learning test to more than one digit.

With "check-valgrind" the test can take more than 10 seconds to run, so
replacing only a single trailing digit with ? ends up with 1? which causes
the test to fail.

Signed-off-by: Ben Pfaff <blp@nicira.com>
DESIGN: Describe principles of in-band control.

These principles are drawn from an email I sent to the openflow-spec list
long ago.

Signed-off-by: Ben Pfaff <blp@nicira.com>
vswitchd: Remove unused 'tag' from 'struct iface'.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
bridge: Refactor bridge_reconfigure().

The existing bridge_reconfigure() implementation is suboptimal.
When adding lots of new ports, on every pass through the run loop
it allocates a bunch of "struct iface"s and "struct port"s, only to
destroy them when out of time.  Additionally, when there are errors
adding or deleting ports, it can fail to converge.  Instead it will
attempt and fail to add the same set of ports forever.

This patch rewrites bridge_reconfigure() using a new strategy.
Whenever the database changes, some initial bookkeeping is done,
and a list of future work is compiled.  The bridge begins whittling
down this list, and stops processing database changes until
finished.

Bug #10902.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
vswitch.xml: Document Interface external-ids:iface-status.

This has been implemented for a long time but we forgot to document it.

Signed-off-by: Ben Pfaff <blp@nicira.com>
vswitchd: Report actual port number, not -1, in "added interface" message.

CC: Ethan Jackson <ethan@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>