lib/ofp: Consolidate some struct field orders

Avoid "holes" in structs by moving "small" members together.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
lib/random: Make some functions in random.c inline

random_range, random_uint8 and random_uint16 are basically just wrappers
around random_uint32. Hence, don't export these functions so the compiler
can be smarter when it comes to optimizations.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
lib/mac-learning: Add missing semicolon

Does not matter as long as ovs_assert is a simple macro but if ovs_assert
is converted to a function this will fail.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
lib/util: Make some functions in util.c inline

str_to_uint, str_to_ulong and str_to_ullong are just wrappers
around the corresponding signed functions. Move these to util.h
and make them inline saving some library exports and letting
the compiler do some more magic.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
compiler: Add OVS_CONSTRUCTOR to mark functions as init functions

Functions marked with OVS_CONSTRUCTOR are called unconditionally
before main.

Tested with GCC. Untested with MSVC.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
vlog: Use OVS_CONSTRUCTOR for vlog initialization

This allows to get rid of some special segment handling to allow
distributed registering of vlog modules.

Instead use a global list and vlog module constructor functions to
build up the list. That means vlog modules reside within the
compilation unit they are defined in and can be iterated upon
by using the global list vlog_modules.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
coverage: Use OVS_CONSTRUCTOR to initialize the coverage counter array

Use a static array in coverage.c that gets initialized by constructor
functions per coverage definition.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Remove unused USE_LINKER_SECTIONS and OVS_LINK2_IFELSE

They are unused and can be removed.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
flow: New function flow_unwildcard_tp_ports().

This patch adds a new function flow_unildcard_tp_ports() which doesn't
unwildcard the upper half of tp_src and tp_dst with ICMP packets.
Unfortunately, this matters in future patches when we compare masks
carefully to determine if flows should be evicted from the datapath.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
ovs-ofctl: Replace TODO with XXX.

In accordance with the style guidelines.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
ofproto: Simplify thread creation API.

There's no particular reason for the function controlling the number
of threads to be bound up with dpif_recv_set().  This patch breaks
them up, but as a side effect means threads will run doing nothing
when datapath upcall receiving is disabled.  By doing this, the udpif
thread creation API becomes a bit easier to reason about once there
are multiple types of thread introduced in future patches.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
configure: Add macros to check for #include_next and add a workaround.

This will be used for the #include_next in string.h in the following
commit.

Signed-off-by: Ben Pfaff <blp@nicira.com>
string: Use workaround for #include_next when it is not available.

Signed-off-by: Ben Pfaff <blp@nicira.com>
coverage:  Use size_t for coverage counter array lengths.

Fixes the following warning on my system.

../lib/coverage.c:54:40: error: incompatible pointer types passing
'unsigned int *' to parameter of type 'size_t *' (aka 'unsigned long
*')

Signed-off-by: Ethan Jackson <ethan@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
cfm: Notify connectivity_seq on cfm_set_fault

Commit f23d157c ("ofproto-dpif: Don't poll ports when nothing changes"
changed how cfm information is propagated to ovsdb, but did not ensure
that this happened when users made "appctl cfm/set_fault" calls. This
patch fixes this case.

Signed-off-by: Joe Stringer <joestringer@nicira.com>
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
ovs-thread: Break recursion for coverage counters.

For systems that do not have either HAVE_THREAD_LOCAL or
HAVE___THREAD (ex: windows using MSVC), a COVERAGE_INC() calls xmalloc
which inturn calls COVERAGE_INC() creating a recursion that causes a
stack overflow.

This commit breaks the recursion by calling malloc() instead of
xmalloc().

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
cfm: Refine the cfm_extended manual.

Commit 348f01e3e3 (cfm: Eight byte MPIDs in extended mode.) allows
eight byte MPIDs when running in extended mode.  This commit explains
this change in the vswitch.conf.db.

Signed-off-by: Alex Wang <alexw@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
ovsdb-client: Make "monitor" command able to monitor all tables.

Users may find this feature useful, but the reason to add this feature is
to allow a test to use it in an upcoming commit.

Signed-off-by: Ben Pfaff <blp@nicira.com>
jsonrpc-server: Add test for disconnecting connections with too long queues.

Signed-off-by: Ben Pfaff <blp@nicira.com>
dpif-linux: Factor out port dumping helper functions.

These helpers simplify new code to be added in an upcoming commit.

Signed-off-by: Ben Pfaff <blp@nicira.com>