sliver-openvswitch.git
11 years agotargets shownodes and showslice
Thierry Parmentelat [Wed, 5 Sep 2012 12:51:23 +0000 (14:51 +0200)]
targets shownodes and showslice

11 years agomake room for a private myexp/ dir
Thierry Parmentelat [Wed, 5 Sep 2012 12:51:01 +0000 (14:51 +0200)]
make room for a private myexp/ dir

11 years agoremove extraneous sequel from merge
Thierry Parmentelat [Wed, 5 Sep 2012 11:49:06 +0000 (13:49 +0200)]
remove extraneous sequel from merge

11 years agoMerge branch 'master' of ssh://git.onelab.eu/git/sliver-openvswitch
Giuseppe Lettieri [Wed, 5 Sep 2012 10:36:29 +0000 (12:36 +0200)]
Merge branch 'master' of ssh://git.onelab.eu/git/sliver-openvswitch

11 years agoMerge branch 'forward-port'
Giuseppe Lettieri [Wed, 5 Sep 2012 10:35:36 +0000 (12:35 +0200)]
Merge branch 'forward-port'

Conflicts:
planetlab/exp-tool/Makefile

11 years agoimprove make nodes
Thierry Parmentelat [Wed, 5 Sep 2012 08:56:39 +0000 (10:56 +0200)]
improve make nodes

11 years agolib/ofp-util: preparation for OF12 of ofp-util
Simon Horman [Tue, 4 Sep 2012 01:32:48 +0000 (10:32 +0900)]
lib/ofp-util: preparation for OF12 of ofp-util

Add necessary macros to ofp-util for OF12 support.
This is just a placeholder.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofp-errors: Use standardised code for OFPERR_OFPBMC_BAD_VALUE
Simon Horman [Tue, 4 Sep 2012 06:52:03 +0000 (15:52 +0900)]
ofp-errors: Use standardised code for OFPERR_OFPBMC_BAD_VALUE

Use standardised code for Open Flow 1.1 OFPERR_OFPBMC_BAD_VALUE

OFPERR_OFPBMC_BAD_VALUE is defined in Open Flow 1.1 as (4,7),
so use that code instead of a non-standard one.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofp-errors: Remove OFPERR_NXFMFC_GROUPS_NOT_SUPPORTED
Simon Horman [Tue, 4 Sep 2012 06:52:00 +0000 (15:52 +0900)]
ofp-errors: Remove OFPERR_NXFMFC_GROUPS_NOT_SUPPORTED

OFPERR_NXFMFC_GROUPS_NOT_SUPPORTED is currently only used in paths which
are part of a non-NX extension portions of the Open Flow 1.1+
implementation.

After recent discussion it has been decided to attempt to only use
standardised, albeit lest-specify, errors unless errors arise from use of
an NX extension.

With the above in mind it seems appropriate to:
* Use OFPERR_OFPFMFC_UNKNOWN in place of OFPERR_NXFMFC_GROUPS_NOT_SUPPORTED.
* Remove OFPERR_NXFMFC_GROUPS_NOT_SUPPORTED as it is no longer used.

An unfortunate side-effect of this change is that the error for
the case in question is now less-specific.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofp-errors: Remove OFPERR_NXBIC_DUP_TYPE
Simon Horman [Tue, 4 Sep 2012 06:51:59 +0000 (15:51 +0900)]
ofp-errors: Remove OFPERR_NXBIC_DUP_TYPE

OFPERR_NXBIC_DUP_TYPE is currently only used in
decode_openflow11_instructions() which is part of a non-NX extension
portion of the Open Flow 1.1+ implementation.

After recent discussion it has been decided to attempt to only use
standardised, albeit less-specific, errors unless errors arise from use of
an NX extension.

With the above in mind it seems appropriate to:
* Use OFPERR_OFPIT_BAD_INSTRUCTION in place of OFPERR_NXBIC_DUP_TYPE.
* Remove OFPERR_NXBIC_DUP_TYPE as it is no longer used.

An unfortunate side-effect of this change is that the error for
the case in question is now less-specific.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoIntroduce sparse flows and masks, to reduce memory usage and improve speed.
Ben Pfaff [Tue, 4 Sep 2012 19:43:53 +0000 (12:43 -0700)]
Introduce sparse flows and masks, to reduce memory usage and improve speed.

A cls_rule is 324 bytes on i386 now.  The cost of a flow table lookup is
currently proportional to this size, which is going to continue to grow.
However, the required cost of a flow table lookup, with the classifier that
we currently use, is only proportional to the number of bits that a rule
actually matches.  This commit implements that optimization by replacing
the match inside "struct cls_rule" by a sparse representation.

This reduces struct cls_rule to 100 bytes on i386.

There is still some headroom for further optimization following this
commit:

    - I suspect that adding an 'n' member to struct miniflow would make
      miniflow operations faster, since popcount() has some cost.

    - It's probably possible to replace the "struct minimatch" in cls_rule
      by just a "struct miniflow", since the cls_rule's cls_table has a
      copy of the minimask.

    - Some of the miniflow operations aren't well-optimized.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agohash: Introduce an implementation of murmurhash.
Ben Pfaff [Tue, 21 Aug 2012 21:26:23 +0000 (14:26 -0700)]
hash: Introduce an implementation of murmurhash.

Murmurhash is generally superior to the Jenkins lookup3 hash according to
the available figures.  Perhaps we should generally replace our current
hashes by murmurhash.

For now, I'm introducing a parallel implementation to allow it to be used
in cases where an incremental one-word-at-a-time hash is desirable.  The
first user will be added in an upcoming commit.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
11 years agoutil: New function raw_ctz().
Ben Pfaff [Tue, 21 Aug 2012 17:47:22 +0000 (10:47 -0700)]
util: New function raw_ctz().

This will acquire a user in an upcoming commit.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoclassifier: Optimize iteration with a catch-all target rule.
Ben Pfaff [Fri, 20 Jul 2012 21:46:15 +0000 (14:46 -0700)]
classifier: Optimize iteration with a catch-all target rule.

When cls_cursor_init() is given a NULL target, it can skip an expensive
step comparing the rule against the target for every table and every rule
in the classifier.  collect_rule_loose() and other callers could take
advantage of this optimization, except that they actually pass in a rule
that matches everything instead of a NULL rule (e.g. for "ovs-ofctl
dump-flows <bridge>" without specifying a matching rule).

This optimizes that case.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoclassifier: Prepare for "struct cls_rule" needing to be destroyed.
Ben Pfaff [Mon, 20 Aug 2012 18:29:43 +0000 (11:29 -0700)]
classifier: Prepare for "struct cls_rule" needing to be destroyed.

Until now, "struct cls_rule" didn't own any data outside its own memory
block.  An upcoming commit will make "struct cls_rule" sometimes own blocks
of memory, so it needs "destroy" and to a lesser extent "clone" functions.
This commit adds these in advance, even though they are mostly no-ops, to
make it possible to separately review the memory management.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoclassifier: Break cls_rule 'flow' and 'wc' members into new "struct match".
Ben Pfaff [Tue, 7 Aug 2012 22:28:18 +0000 (15:28 -0700)]
classifier: Break cls_rule 'flow' and 'wc' members into new "struct match".

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoclassifier: Fix typo in comment.
Ben Pfaff [Fri, 20 Jul 2012 21:54:30 +0000 (14:54 -0700)]
classifier: Fix typo in comment.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoutil: New function popcount().
Ben Pfaff [Fri, 20 Jul 2012 19:38:59 +0000 (12:38 -0700)]
util: New function popcount().

This is the fastest portable implementation among the ones below, as
measured with GCC 4.4 on a Xeon X3430.  The measeured times were, in
seconds:

popcount1    25.6
popcount2     6.9 (but is not portable)
popcount3    31.4
popcount4    25.6
popcount5    61.6 (and is buggy)
popcount6    64.6
popcount7    32.3
popcount8    11.2

int
popcount1(unsigned int x)
{
    return __builtin_popcount(x);
}

int
popcount2(unsigned int x)
{
    unsigned int y;
    asm("popcnt %1, %0" : "=r" (y) : "g" (x));
    return y;
}

int
popcount3(unsigned int x)
{
    unsigned int n;

    n = (x >> 1) & 033333333333;
    x -= n;
    n = (n >> 1) & 033333333333;
    x -= n;
    x = (x + (x >> 3)) & 030707070707;
    return x % 63;
}

int
popcount4(unsigned int x)
{
    x -= (x >> 1) & 0x55555555;
    x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
    x = (x + (x >> 4)) & 0x0f0f0f0f;
    x += x >> 8;
    x += x >> 16;
    return x & 0x3f;
}

int
popcount5(unsigned int x)
{
    int n;

    n = 0;
    while (x) {
        if (x & 0xf) {
            n += ((0xe9949440 >> (x & 0xf)) & 3) + 1;
        }
        x >>= 4;
    }
    return n;
}

int
popcount6(unsigned int x)
{
    int n;

    n = 0;
    while (x) {
        n += (0xe994 >> (x & 7)) & 3;
        x >>= 3;
    }
    return n;
}

int
popcount7(unsigned int x)
{
    static const int table[16] = {
        0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4
    };

    return (table[x & 0xf]
            + table[(x >> 4) & 0xf]
            + table[(x >> 8) & 0xf]
            + table[(x >> 12) & 0xf]
            + table[(x >> 16) & 0xf]
            + table[(x >> 20) & 0xf]
            + table[(x >> 24) & 0xf]
            + table[x >> 28]);
}

static int
popcount8(unsigned int x)
{
    ((((X) & (1 << 0)) != 0) +                  \
     (((X) & (1 << 1)) != 0) +                  \
     (((X) & (1 << 2)) != 0) +                  \
     (((X) & (1 << 3)) != 0) +                  \
     (((X) & (1 << 4)) != 0) +                  \
     (((X) & (1 << 5)) != 0) +                  \
     (((X) & (1 << 6)) != 0) +                  \
     (((X) & (1 << 7)) != 0))

    static const uint8_t popcount8[256] = {
        INIT64(0), INIT64(64), INIT64(128), INIT64(192)
    };

    return (popcount8[x & 0xff] +
            popcount8[(x >> 8) & 0xff] +
            popcount8[(x >> 16) & 0xff] +
            popcount8[x >> 24]);
}

int
main(void)
{
    unsigned long long int x;
    int n;

    n = 0;
    for (x = 0; x <= UINT32_MAX; x++) {
        n += popcount8(x);
    }
    printf("%d\n", n);

    return 0;
}

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoutil: New function zero_rightmost_1bit().
Ben Pfaff [Fri, 20 Jul 2012 18:45:33 +0000 (11:45 -0700)]
util: New function zero_rightmost_1bit().

It's probably easier to understand
x = zero_rightmost_1bit(x);
than
x &= x - 1;

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoflow: Simplify many functions for working with flows and wildcards.
Ben Pfaff [Tue, 7 Aug 2012 20:43:18 +0000 (13:43 -0700)]
flow: Simplify many functions for working with flows and wildcards.

Now that "struct flow" and "struct flow_wildcards" have the same simple
and uniform structure, it's easy to handle common operations by just
iterating over the bits inside them.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoflow: Remove flow_wildcards_is_exact().
Ben Pfaff [Mon, 18 Jun 2012 22:46:13 +0000 (15:46 -0700)]
flow: Remove flow_wildcards_is_exact().

It's only used in a not-very-useful assertion in some test code.  In
general, exact-match flows make very little sense anymore, and they're
basically on their way out.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoflow: Replace flow_wildcards members by a single "struct flow".
Ben Pfaff [Tue, 7 Aug 2012 20:38:38 +0000 (13:38 -0700)]
flow: Replace flow_wildcards members by a single "struct flow".

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoflow: Take advantage of zero-padding in struct flow and flow_wildcards.
Ben Pfaff [Mon, 18 Jun 2012 22:12:57 +0000 (15:12 -0700)]
flow: Take advantage of zero-padding in struct flow and flow_wildcards.

Since we know these bytes are always 0 in both structures, we can use
faster functions that only work with full words.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoflow: Ensure that padding is always zeroed.
Ben Pfaff [Mon, 18 Jun 2012 22:09:49 +0000 (15:09 -0700)]
flow: Ensure that padding is always zeroed.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoflow: Use bit-mask for in_port match, instead of FWW_* flag.
Ben Pfaff [Fri, 3 Aug 2012 20:27:15 +0000 (13:27 -0700)]
flow: Use bit-mask for in_port match, instead of FWW_* flag.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoflow: Use bit-mask for Ethernet type match, instead of FWW_* flag.
Ben Pfaff [Mon, 18 Jun 2012 20:33:13 +0000 (13:33 -0700)]
flow: Use bit-mask for Ethernet type match, instead of FWW_* flag.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoflow: Use bit-mask for IP protocol match, instead of FWW_* flag.
Ben Pfaff [Mon, 18 Jun 2012 21:12:52 +0000 (14:12 -0700)]
flow: Use bit-mask for IP protocol match, instead of FWW_* flag.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoflow: Use bit-mask for TTL match, instead of FWW_* flag.
Ben Pfaff [Mon, 18 Jun 2012 18:36:03 +0000 (11:36 -0700)]
flow: Use bit-mask for TTL match, instead of FWW_* flag.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoflow: Use bit-mask for DSCP and ECN bits, instead of FWW_* flags.
Ben Pfaff [Mon, 18 Jun 2012 21:11:13 +0000 (14:11 -0700)]
flow: Use bit-mask for DSCP and ECN bits, instead of FWW_* flags.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoflow: Fully separate FWW_* from OFPFW10_*.
Ben Pfaff [Mon, 18 Jun 2012 16:55:22 +0000 (09:55 -0700)]
flow: Fully separate FWW_* from OFPFW10_*.

It might have been a useful optimization at one point to have FWW_*
correspond in OFPFW10_* where possible, but it doesn't seem worthwhile for
only 3 corresponding values.  It also makes the code somewhat more
confusing.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofproto: Move ofpacts_check() calls from ofproto-dpif to ofproto.
Ben Pfaff [Fri, 20 Jul 2012 01:25:02 +0000 (18:25 -0700)]
ofproto: Move ofpacts_check() calls from ofproto-dpif to ofproto.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofproto: Move 'max_ports' from ofproto-dpif.c to ofproto.c.
Ben Pfaff [Fri, 20 Jul 2012 01:30:12 +0000 (18:30 -0700)]
ofproto: Move 'max_ports' from ofproto-dpif.c to ofproto.c.

This allows port numbers in actions and elsewhere in OpenFlow messages to
be checked at a higher level.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agosmall improvements
Thierry Parmentelat [Tue, 4 Sep 2012 16:27:41 +0000 (18:27 +0200)]
small improvements

11 years agodatapath: Drop comment describing vport node.
Jesse Gross [Tue, 4 Sep 2012 02:22:03 +0000 (19:22 -0700)]
datapath: Drop comment describing vport node.

Commit f36ff26ac08bcba28b5befba7b1dcff9b963769d (datapath: Remove
vport list node.) removed an unused list node in struct vport but
did not remove the comment describing it.  This does that.

Signed-off-by: Jesse Gross <jesse@nicira.com>
11 years agodatapath: Fix FLOW_BUFSIZE definition.
Jesse Gross [Mon, 3 Sep 2012 22:15:01 +0000 (15:15 -0700)]
datapath: Fix FLOW_BUFSIZE definition.

This is analogous to the change made in userspace with
2508ac16defd417b94fb69689b6b1da4fbc76282 (odp-util: Update
ODPUTIL_FLOW_KEY_BYTES for current kernel flow format.).  The extra
space for vlan encapsulation was not included in the allocation for
maximum length flows.

Found by code inspection and to my knowledge has never been hit, likely
because skb allocations are padded out to a cacheline, making userspace
more susceptible to this problem than the kernel.  In theory, however,
the right combination of flow and packet size could result in a kernel
panic.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Kyle Mestery <kmestery@cisco.com>
11 years agodatapath: Remove vport list node.
Jesse Gross [Tue, 4 Sep 2012 00:15:03 +0000 (17:15 -0700)]
datapath: Remove vport list node.

The datapath list of ports was removed when we switched to using a
hash-based port lookup so the list node is no longer used.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Kyle Mestery <kmestery@cisco.com>
11 years agoadd -t option to ssh, to second sudo forward-port
Giuseppe Lettieri [Mon, 3 Sep 2012 12:36:12 +0000 (14:36 +0200)]
add -t option to ssh, to second sudo

11 years agodatapath: Fix typo
Joe Stringer [Fri, 31 Aug 2012 03:35:49 +0000 (15:35 +1200)]
datapath: Fix typo

Signed-off-by: Joe Stringer <joe@wand.net.nz>
Signed-off-by: Jesse Gross <jesse@nicira.com>
11 years agolockfile: Log more helpful message when locking fails due to a conflict.
Ben Pfaff [Fri, 31 Aug 2012 17:11:15 +0000 (10:11 -0700)]
lockfile: Log more helpful message when locking fails due to a conflict.

Reported-by: rahim entezari <rahim.entezari@gmail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
11 years agolockfile: In tests, also verify log messages.
Ben Pfaff [Fri, 31 Aug 2012 17:10:13 +0000 (10:10 -0700)]
lockfile: In tests, also verify log messages.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
11 years agoupdate to new netdev interface
Giuseppe Lettieri [Thu, 30 Aug 2012 15:31:00 +0000 (17:31 +0200)]
update to new netdev interface

get/set config now use smap's instead of shash's

11 years agofix warnings about unused paramethers
Giuseppe Lettieri [Thu, 30 Aug 2012 15:28:19 +0000 (17:28 +0200)]
fix warnings about unused paramethers

11 years agoMerge branch 'master' into forward-port
Giuseppe Lettieri [Thu, 30 Aug 2012 14:35:26 +0000 (16:35 +0200)]
Merge branch 'master' into forward-port

Conflicts:
lib/automake.mk
lib/dpif-netdev.c
lib/netdev-provider.h
lib/netdev.c

11 years agolist files that do not go into the distribution
Giuseppe Lettieri [Thu, 30 Aug 2012 14:12:25 +0000 (16:12 +0200)]
list files that do not go into the distribution

The Makefile of Open vSwitch checks that all files in the
git repository are also distributed and stops with an error
otherwise. But we have some files in git that are not meant
to be distributed (i.e., installed on a sliver). These files can now
be listed in .non-distfiles and the new Makefile will ignore them.

11 years agofix obnoxiuos warnings
Giuseppe Lettieri [Thu, 30 Aug 2012 14:11:09 +0000 (16:11 +0200)]
fix obnoxiuos warnings

11 years agofix some warnings
Giuseppe Lettieri [Thu, 30 Aug 2012 13:31:57 +0000 (15:31 +0200)]
fix some warnings

11 years agovswitchd: Respect other_config:stp-enable port setting.
Ethan Jackson [Wed, 29 Aug 2012 23:00:31 +0000 (16:00 -0700)]
vswitchd: Respect other_config:stp-enable port setting.

Commit a699f614 (lib: Utilize smaps in the idl.) broke the
other_config:stp-enable port setting in two ways.  First, it
changed the default if the setting was missing to disabled.
Second, if the setting was present, it did the opposite of what the
user configured.

Bug #13122.
Reported-by: Paul Ingram <paul@nicira.com>
Signed-off-by: Ethan Jackson <ethan@nicira.com>
11 years agoofproto-dpif: Make OFPP_TABLE send packet-in on miss.
Isaku Yamahata [Tue, 28 Aug 2012 17:19:03 +0000 (02:19 +0900)]
ofproto-dpif: Make OFPP_TABLE send packet-in on miss.

The OpenFlow specification for OFPP_TABLE implies that a miss
should generate a packet-in, but Open vSwitch has never done
that.  This corrects the behavior.

This also prepares for the goto-table instruction, which will
need to generate a table-miss in some circumstances.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
[blp@nicira.com rebased and updated commit message]
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofp-msgs: Allow encoding and decoding of Open Flow 1.1 & 1.2 Barrier Messages
Simon Horman [Tue, 21 Aug 2012 04:55:38 +0000 (13:55 +0900)]
ofp-msgs: Allow encoding and decoding of Open Flow 1.1 & 1.2 Barrier Messages

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoovs-ofctl: Use vconn as a parameter of dump_stats_transaction()
Simon Horman [Tue, 21 Aug 2012 04:55:37 +0000 (13:55 +0900)]
ovs-ofctl: Use vconn as a parameter of dump_stats_transaction()

In order to form a stats message for the prevailing OpenFlow version
of a vconn the vconn needs to be open at the time the request is
encoded. Thus there is no longer a case where it makes sense to
use dump_stats_transaction() without a vconn already being open and
available to pass as a parameter.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofp-msgs: Split OFPRAW_OFPST_AGGREGATE_REQUEST
Simon Horman [Tue, 21 Aug 2012 04:55:35 +0000 (13:55 +0900)]
ofp-msgs: Split OFPRAW_OFPST_AGGREGATE_REQUEST

Split OFPRAW_OFPST_AGGREGATE_REQUEST into OpenFlow 1.0 and 1.1+
versions.

This should be sufficient to allow adding encoding and decoding of
Open Flow 1.1 and 1.2 Aggregate Stats Request messages.

Encoding and decoding of Open Flow 1.1 and 1.2 Aggregate Stats Response
messages works using the existing code without modification.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofp-util: Allow decoding of Open Flow 1.2 Flow Statistics Request Messages
Simon Horman [Tue, 21 Aug 2012 04:55:34 +0000 (13:55 +0900)]
ofp-util: Allow decoding of Open Flow 1.2 Flow Statistics Request Messages

Allow decoding of Open Flow 1.1 and 1.2 flow statistics request messages.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofproto-dpif: refactor rule_dpif_lookup() for table miss whose id > 0
Isaku Yamahata [Tue, 28 Aug 2012 17:19:02 +0000 (02:19 +0900)]
ofproto-dpif: refactor rule_dpif_lookup() for table miss whose id > 0

The refactored function, rule_dpif_miss_rule(), will be used for
handling table miss whose table_id > 0 by goto-table instruction.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agotests: Fix autopath tests
Joe Stringer [Wed, 29 Aug 2012 03:09:37 +0000 (15:09 +1200)]
tests: Fix autopath tests

With the deprecation of autopath, some tests were broken. This patch fixes
the test breakages.

Signed-off-by: Joe Stringer <joe@wand.net.nz>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agobridge: Deprecate the null interface type.
Ethan Jackson [Tue, 21 Aug 2012 22:44:58 +0000 (15:44 -0700)]
bridge: Deprecate the null interface type.

It's not entirely clear what problem the null interface type is
trying to solve, nor how it could be of use to any controller.
This patch deprecates it, and schedules its removal for February
2013.  If there are concerns, please email dev@openvswitch.org.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
11 years agonicira-ext: Deprecate the autopath action.
Ethan Jackson [Sat, 18 Aug 2012 02:14:02 +0000 (19:14 -0700)]
nicira-ext: Deprecate the autopath action.

The autopath action is an obsolete attempt to replicate
functionality contained in the bundle action.  It is ugly and of
questionable usefulness.  This patch deprecates it and schedules
its removal for February 2013.  If there are concerns, please email
dev@openvswitch.org.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
11 years agobond: Deprecate stable bonds.
Ethan Jackson [Sat, 18 Aug 2012 01:47:43 +0000 (18:47 -0700)]
bond: Deprecate stable bonds.

The stable bond mode is an obsolete attempt to replicate the
functionality contained in the bundle action.  They are ugly and of
questionable usefulness.  This patch deprecates them and schedules
their removal for February 2013.  If there are concerns, please
email dev@openvswitch.org.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
11 years agolib/ofp-actions: improve ofpact_instruction_name_from_type()
Isaku Yamahata [Tue, 28 Aug 2012 17:19:00 +0000 (02:19 +0900)]
lib/ofp-actions: improve ofpact_instruction_name_from_type()

eliminate unnecessary loop.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agodatapath: Fix namespace refcount leak on failed init.
Jesse Gross [Wed, 22 Aug 2012 00:48:54 +0000 (17:48 -0700)]
datapath: Fix namespace refcount leak on failed init.

If a datapath fails to initialze fully (likely due to out-of-memory)
then it's possible that we can take a reference to a network
namespace but never release it.  This fixes the problem by releasing
any resources in the event of an error.

Found by code inspection, it's likely to be extremely rare in practice.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Pravin B Shelar <pshelar@nicira.com>
11 years agostp: port_no counter is off by one
Ansis Atteka [Tue, 21 Aug 2012 23:48:36 +0000 (16:48 -0700)]
stp: port_no counter is off by one

This counter was off by one, because port_num
should be less than STP_MAX_PORTS.

This caused an assert hit later in stp_get_port().

Issue: 13059
Signed-off-by: Ansis Atteka <aatteka@nicira.com>
Reported-by: Ram Jothikumar <rjothikumar@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
11 years agoofproto-dpif: Make sure one-packet flows have zero duration (again).
Ben Pfaff [Sat, 18 Aug 2012 06:27:40 +0000 (23:27 -0700)]
ofproto-dpif: Make sure one-packet flows have zero duration (again).

commit 6a0a5bbbc (ofproto-dpif: Make sure one-packet flows have zero
duration.) was supposed to fix failures in the "ofproto-dpif - NetFlow
flow expiration" test, but it didn't fix the whole problem.  That commit
eliminated one reason why a one-packet flow might be shown as having an
nonzero duration, but missed another.

The other reason was that the call to dpif_flow_stats_extract() could
obtain a time later than the time that a new facet was created.  (This
wasn't obvious because dpif_flow_stats_extract() obtained the time
internally instead of taking it from the caller.)  This commit fixes that
problem, by using the facet creation there too for the first packet in
a facet.

This problem has suddenly started showing up in a lot of builds.  I think
it's probably because of the recent change that makes x86-64 skip the timer
optimizations, so that the return value of time_msec() changes every 1 ms,
not just every 100 ms.

I've tested this by running the test in question in a loop for several
minutes, without any failures.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agodpif: Add 'used' argument to dpif_flow_stats_extract().
Ben Pfaff [Sat, 18 Aug 2012 06:27:39 +0000 (23:27 -0700)]
dpif: Add 'used' argument to dpif_flow_stats_extract().

The following commit will need to use a value other than a literal
time_msec() in one case.  This commit is just preparation.

Factoring the time_msec() call out of the loop in
handle_flow_miss_without_facet() is a really minor optimization.  It isn't
the main point here.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agobond: Tag flows according to their hash bucket, not just their slave.
Ben Pfaff [Tue, 21 Aug 2012 20:51:01 +0000 (13:51 -0700)]
bond: Tag flows according to their hash bucket, not just their slave.

The bonding code is supposed to tag flows two ways:

    - According to the chosen bond slave, to make it easy to invalidate all
      of the flows assigned to a given slave.

    - According to the hash value for a flow, to make it easy to invalidate
      all of the flows that hash into the same bucket.

However, the code wasn't actually applying the hash-based tags.  This
meant that rebalancing didn't take effect immediately, and so after
rebalancing we could get log messages like this:

   inconsistency in subfacet (actions were: 5) (correct actions: 4)

specifying some flow that was moved by the rebalance.

This commit fixes the problem by applying the hash-based tags.

Bug #12847.
Reported-by: Pratap Reddy <preddy@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
11 years agoofp-actions: Correct copyright statement.
Ethan Jackson [Tue, 21 Aug 2012 20:28:49 +0000 (13:28 -0700)]
ofp-actions: Correct copyright statement.

This patch changes the name of Nicira from "Nicira Networks" which
is incorrect, to "Nicira, Inc." which is correct.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
11 years agoofproto-dpif: Kill off test-netflow daemon if test fails.
Ben Pfaff [Mon, 20 Aug 2012 17:30:05 +0000 (10:30 -0700)]
ofproto-dpif: Kill off test-netflow daemon if test fails.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agotests: New m4 macro ON_EXIT to add a cleanup action.
Ben Pfaff [Mon, 20 Aug 2012 17:29:39 +0000 (10:29 -0700)]
tests: New m4 macro ON_EXIT to add a cleanup action.

Several of the tests start daemons and then need to make sure that the
daemons get killed when the test completes, even if it completes in the
middle due to an early failure.  Until now, they have been using manual
shell "trap" calls to do this.  This works well enough for simple cases,
but sometimes multiple macros start daemons in a single test, and then
each "trap" has to be carefully written to kill off the daemons for the
previously invoked macros.

This commit introduces a new macro ON_EXIT whose use is composable: each
call appends a new action to the ones already specified.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agobonding: Update bonding documentation in INTERNALS.
Ethan Jackson [Fri, 17 Aug 2012 22:54:01 +0000 (15:54 -0700)]
bonding: Update bonding documentation in INTERNALS.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
11 years agoovs-ofctl: Fix memory leak in "check-vlan" test command.
Ben Pfaff [Fri, 17 Aug 2012 20:59:46 +0000 (13:59 -0700)]
ovs-ofctl: Fix memory leak in "check-vlan" test command.

Found by valgrind.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofp-print: Fix memory leak printing flow stats replies.
Ben Pfaff [Fri, 17 Aug 2012 20:59:15 +0000 (13:59 -0700)]
ofp-print: Fix memory leak printing flow stats replies.

Found by valgrind.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofp-util: Drop unneeded null pointer tests.
Ben Pfaff [Thu, 16 Aug 2012 19:24:01 +0000 (12:24 -0700)]
ofp-util: Drop unneeded null pointer tests.

The functions being called already do nothing if passed a null pointer.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoDo not include zeroed metadata fields in NXM/OXM packet-in messages.
Ben Pfaff [Wed, 15 Aug 2012 17:16:49 +0000 (10:16 -0700)]
Do not include zeroed metadata fields in NXM/OXM packet-in messages.

NXM and OpenFlow 1.2+ allow including the values of arbitrary flow metadata
in "packet-in" messages.  Open vSwitch has until now always included all
the values of the metadata fields that it implements in NXT_PACKET_IN
messages.

However, this has at least two disadvantages:

    - Most of the metadata fields tend to be zero most of the time, which
      wastes space in the message.

    - It means that controllers must be very liberal about accepting
      fields that they know nothing about in packet-in messages, since any
      switch upgrade could cause new fields to appear even if the
      controller does nothing to give them nonzero values.  (Controllers
      have to be prepared to tolerate unknown fields in any case, but this
      property makes unknown fields more likely to appear than otherwise.)

This commit changes Open vSwitch so that metadata fields whose values are
zero are not reported in packet-ins, fixing both problems.  (This is
explicitly allowed by OpenFlow 1.2+.)

This commit mainly fixes a sort of internal conceptual dissonance centering
around struct flow_metadata.  This structure is supposed to report the
metadata for a given flow.  If you look at a flow, it has particular
metadata values; it doesn't have masks, and the idea of a mask for a
particular flow doesn't really make sense.  However, struct flow_metadata
did have masks.  This led to internal confusion; one can see this in, for
example, the following code removed by this commit in ofproto-dpif.c to
handle misses in the OpenFlow flow table:

    /* Registers aren't meaningful on a miss. */
    memset(pin.fmd.reg_masks, 0, sizeof pin.fmd.reg_masks);

What this code was really trying to say is that on a flow miss, the
registers are zero, so they shouldn't be included in the packet-in message.
It did manage to omit the registers, by marking them as "wild", but it is
conceptually more correct to simply omit them because they are zero (and
that's one effect of this commit).

Bug #12968.
Reported-by: Igor Ganichev <iganichev@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoman-pages: Add missing entry for matching metadata
Joe Stringer [Fri, 17 Aug 2012 08:06:29 +0000 (20:06 +1200)]
man-pages: Add missing entry for matching metadata

Signed-off-by: Joe Stringer <joe@wand.net.nz>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agotests: Put AT_CAPTURE_FILE on its own line.
Ben Pfaff [Thu, 16 Aug 2012 22:54:16 +0000 (15:54 -0700)]
tests: Put AT_CAPTURE_FILE on its own line.

This is a harmless typo, but the file is more readable with AT_CAPTURE_FILE
on its own line.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Kyle Mestery <kmestery@cisco.com>
11 years agotests: Invoke daemons with --no-chdir so core files appear in test dir.
Ben Pfaff [Tue, 14 Aug 2012 20:18:03 +0000 (13:18 -0700)]
tests: Invoke daemons with --no-chdir so core files appear in test dir.

The OVS daemons "cd" to / as a normal part of their startup, since this is
traditional for daemons under Unix.  But this also means that, if the
daemons happen to terminate with a core in the unit tests, then the core
file won't be written because / has too-restrictive permissions.  (Unless
you run the unit tests as root, or you've got cores configured to go to a
non-standard location.)

This commit fixes the problem by invoking most daemons with --no-chdir so
that the core files go to a test-specific directory.  I didn't change
invocations of the Python daemons, since Python doesn't normally terminate
with a core.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Kyle Mestery <kmestery@cisco.com>
11 years agotests: Factor "seq" shell function out into common infrastructure.
Ben Pfaff [Fri, 10 Aug 2012 22:15:24 +0000 (15:15 -0700)]
tests: Factor "seq" shell function out into common infrastructure.

An upcoming patch will introduce a second user.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agovswitch.xml: balance-tcp can be rebalanced too.
Ben Pfaff [Tue, 14 Aug 2012 20:26:16 +0000 (13:26 -0700)]
vswitch.xml: balance-tcp can be rebalanced too.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agovswitch.xml: Generalize "carrier" to cover miimon also.
Ben Pfaff [Tue, 14 Aug 2012 20:25:32 +0000 (13:25 -0700)]
vswitch.xml: Generalize "carrier" to cover miimon also.

I believe that saying "carrier" here excludes the miimon case, which we'd
like to include also.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agovswitch.xml: Document that active-backup works OK with multiple switches.
Ben Pfaff [Tue, 14 Aug 2012 20:23:59 +0000 (13:23 -0700)]
vswitch.xml: Document that active-backup works OK with multiple switches.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agovswitch.xml: active-backup and balance-slb bonds must be one-sided.
Ben Pfaff [Tue, 14 Aug 2012 20:23:22 +0000 (13:23 -0700)]
vswitch.xml: active-backup and balance-slb bonds must be one-sided.

It doesn't work to hook up an active-backup bond on one switch to an
active-backup bond on another switch, because they might pick different
active interfaces and therefore not pass any traffic.

The same is true of balance-slb because multicast and broadcast
traffic is dropped on ingress to any interface other than the active
interface.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofproto-dpif: Avoid dereferencing possibly null or wild pointer.
Ben Pfaff [Thu, 16 Aug 2012 18:33:21 +0000 (11:33 -0700)]
ofproto-dpif: Avoid dereferencing possibly null or wild pointer.

If ofpacts_len is 0 then ofpacts->type is a bad reference.

(An early draft of ofpacts used an OFPACT_END sentinel so that there was
always data there in this function, but in review the sentinel got deleted
and I did not notice that this function needed an update.)

Found by valgrind.

Bug #12847.
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoAdd Nicira vendor extension action NXAST_DEC_TTL_CNT_IDS.
Mehak Mahajan [Thu, 16 Aug 2012 21:25:07 +0000 (14:25 -0700)]
Add Nicira vendor extension action NXAST_DEC_TTL_CNT_IDS.

Currently, if a controller having a nonzero id registers to get a
OFPR_INVALID_TTL async message, it will not receive it.  This is because
compose_dec_ttl() only sent the invalid ttl packets to the default controller
id.  NXAST_DEC_TTL_CNT_IDS is a new action that accepts a list of controller
ids, each separated by `,', to which the OFPR_INVALID_TTL packets must be sent.
The earlier requirement of the controller having to explicitly register to
receive these asynchronous messages is retained.
The syntax of this action is:
    dec_ttl(id1,id2)
where id1, id2 are valid controller ids.

Signed-off-by: Mehak Mahajan <mmahajan@nicira.com>
11 years agoofproto-dpif: Increase recursion limit.
Ethan Jackson [Thu, 16 Aug 2012 21:16:06 +0000 (14:16 -0700)]
ofproto-dpif: Increase recursion limit.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
11 years agobond: Correct comment.
Ben Pfaff [Tue, 14 Aug 2012 20:41:01 +0000 (13:41 -0700)]
bond: Correct comment.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agodpif-netdev: Eliminate two malloc() calls per packet sent to "userspace".
Ben Pfaff [Wed, 15 Aug 2012 23:05:31 +0000 (16:05 -0700)]
dpif-netdev: Eliminate two malloc() calls per packet sent to "userspace".

This is easy enough, so it seems worthwhile now that FreeBSD is starting
to make more use of the "userspace switch".

CC: Ed Maste <emaste@freebsd.org>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agodpif-netdev: Fix memory leak.
Ben Pfaff [Wed, 15 Aug 2012 22:19:18 +0000 (15:19 -0700)]
dpif-netdev: Fix memory leak.

upcall->packet is allocated with malloc(), via ofpbuf_new(), but nothing
ever frees it.

Found by valgrind.

CC: Ed Maste <emaste@freebsd.org>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofproto-dpif: Fix typo in comment.
Ben Pfaff [Thu, 16 Aug 2012 16:31:23 +0000 (09:31 -0700)]
ofproto-dpif: Fix typo in comment.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoovsdb-idl: Fix memory leak.
Ben Pfaff [Wed, 15 Aug 2012 23:19:47 +0000 (16:19 -0700)]
ovsdb-idl: Fix memory leak.

Found by valgrind.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofproto-dpif: Make sure one-packet flows have zero duration.
Ben Pfaff [Mon, 13 Aug 2012 16:41:59 +0000 (09:41 -0700)]
ofproto-dpif: Make sure one-packet flows have zero duration.

A Nicira internal build recently failed the "ofproto-dpif - NetFlow flow
expiration" test because of the following difference in output:

     header: v5, seq 0, engine 2,1
    -rec: [...], 1 pkts, 60 bytes, ICMP 8:0, time <moment>
    +rec: [...], 1 pkts, 60 bytes, ICMP 8:0, time <range>

Looking at the actual output, it is:
    rec: 192.168.0.1 > 192.168.0.2, if 1 > 65535, 1 pkts, 60 bytes,
    ICMP 8:0, time 8...9

That is, a one-packet flow was shown to have more than a momentary
duration, which doesn't make sense.

This commit fixes the problem by making sure that creating a facet and then
its initial subfacet only checks the current time once.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofproto-dpif: Avoid searching all subfacets when creating first in a facet.
Ben Pfaff [Mon, 13 Aug 2012 16:30:26 +0000 (09:30 -0700)]
ofproto-dpif: Avoid searching all subfacets when creating first in a facet.

When we create the first subfacet within a facet, we know that there
cannot be an existing subfacet with the same key, so we can skip the search
through the ofproto's table of subfacets.

This is a small optimization, but it should not affect the flow setup rate
in most benchmarks, because in the stressful situations that benchmarks
create, OVS does not set up flows.

Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agonetdev: Map to OpenFlow port for flow lookup
Ed Maste [Wed, 15 Aug 2012 22:00:34 +0000 (22:00 +0000)]
netdev: Map to OpenFlow port for flow lookup

In the flow hash special ports are stored using OpenFlow constants.
For example the "local port" is stored as 0xfffe (OFPP_LOCAL).

Signed-off-by: Ed Maste <emaste@freebsd.org>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agobridge: Write certain statistics to the database instantly.
Ethan Jackson [Tue, 14 Aug 2012 21:08:09 +0000 (14:08 -0700)]
bridge: Write certain statistics to the database instantly.

Traditionally the bridge has written interface and port statistics
to the database in a rate limited fashion.  This makes a lot of
sense for statistics which are either constantly changing, or are
expensive to collect.  However, some statistics were rate limited
which have neither of these properties.  Furthermore some of these
statistics (most notably carrier) could be very useful to a
controller if updated promptly.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
11 years agoCorrect number of bytes to allocated for slaves in bundle action.
Mehak Mahajan [Wed, 15 Aug 2012 18:19:35 +0000 (11:19 -0700)]
Correct number of bytes to allocated for slaves in bundle action.

The size of each slave is a uint16_t.  This means that each slave needs 2 bytes
at the end of nx_action_bundle.  Earlier, the size of each slave was not being
factored in when allocating space.  This commit corrects that by allocating 2
bytes for each slave when calculating the total number of bytes to be allocated
at the end of nx_action_bundle.

Signed-off-by: Mehak Mahajan <mmahajan@nicira.com>
11 years agoofp-actions/instruction: helper functions for intructions
Isaku Yamahata [Wed, 1 Aug 2012 15:24:10 +0000 (00:24 +0900)]
ofp-actions/instruction: helper functions for intructions

This patch introduces helper functions
- to cast
- to convert from/to text

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofp-actions: sort OVSINST_OFPIT11_xxx value in execution order
Isaku Yamahata [Wed, 1 Aug 2012 15:24:09 +0000 (00:24 +0900)]
ofp-actions: sort OVSINST_OFPIT11_xxx value in execution order

This order is used by parser from text string to check if the instruction
is given in this order.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agoofp-actions: export OVSINST_OFPIT11_xxx
Isaku Yamahata [Wed, 1 Aug 2012 15:24:08 +0000 (00:24 +0900)]
ofp-actions: export OVSINST_OFPIT11_xxx

They will be used by ofp-parser.c.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agotests: Add delay in NetFlow unit tests before killing processes.
Jesse Gross [Tue, 7 Aug 2012 22:26:33 +0000 (15:26 -0700)]
tests: Add delay in NetFlow unit tests before killing processes.

At the end of the NetFlow unit tests we warp time to force any
remaining flows to expire and then immediately kill OVS and the
collector.  However, this creates a race where sometimes these
processes are killed before the last records are sent or collected.
It's possible to force OVS to go through the run loop one last time
before exiting but it's harder to enforce that the collector receives
the packet.  This simply avoids the problem by adding a 1 second delay
before killing the processes, which should be more than enough time.

Signed-off-by: Jesse Gross <jesse@nicira.com>
11 years agocfm: Expose remote CFM opstate in the database.
Ethan Jackson [Fri, 10 Aug 2012 23:14:45 +0000 (16:14 -0700)]
cfm: Expose remote CFM opstate in the database.

A controller may want to know the remote CFM opstate of a given CFM
enabled interface.  This patch makes this data available in the
database.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
11 years agocfm: Report opup as undefined if not in extended mode.
Ethan Jackson [Fri, 10 Aug 2012 23:36:18 +0000 (16:36 -0700)]
cfm: Report opup as undefined if not in extended mode.

The cfm_get_opup() function's result doesn't make sense when CFM is
not configured in extended mode.  This patch makes it report -1 in
this case.  Future patches will rely on this behavior.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
11 years agostream-ssl: Change "bootstrap race" log message from ERR to INFO.
Ben Pfaff [Mon, 13 Aug 2012 17:54:31 +0000 (10:54 -0700)]
stream-ssl: Change "bootstrap race" log message from ERR to INFO.

This situation can and will happen, and we handle it successfully, so it's
not an error.

Bug #12922.
Reported-by: Scott Hendricks <shendricks@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
11 years agonetdev-dummy: New appctl command netdev-dummy/set-admin-state.
Ethan Jackson [Fri, 10 Aug 2012 01:08:40 +0000 (18:08 -0700)]
netdev-dummy: New appctl command netdev-dummy/set-admin-state.

There's currently no way to set the admin state on dummy netdevs.
This patch provides a mechanism to do so which will be used in
future unit tests.

Signed-off-by: Ethan Jackson <ethan@nicira.com>