OpenFlow 1.0 through 1.3 have a message OFPT_QUEUE_GET_CONFIG_REQUEST and
its corresponding reply, for fetching a description of the queues
configured on a given port. OpenFlow 1.4 changes this message to a
multipart message OFPMP_QUEUE_DESC, which Open vSwitch has not until now
implemented. This commit adds an implemntation of that message. Because
the message is a replacement for the former one, this commit implements it
using the same ofp-util functions as the former message, so that the client
code doesn't have to distinguish a difference between versions.
The ovs-ofctl command queue-get-config was previously undocumented (due
only to an oversight). This commit corrects that and documents the new
feature available with OpenFlow 1.4.
Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Jarno Rajahalme <jarno@ovn.org>
Ben Pfaff [Tue, 29 Dec 2015 14:44:16 +0000 (06:44 -0800)]
ofp-prop: New module for working with OpenFlow 1.3+ properties.
Several OpenFlow 1.3+ messages use TLV-based properties that take a
common form. Until now, ofp-util has had some static functions for
dealing with properties. Because properties will start to be needed
outside of ofp-util, this commit breaks them out into a new library,
renaming them to begin with ofpprop_.
The following commit will add a few new interfaces that add new
functionality.
Ben Pfaff [Mon, 18 Jan 2016 23:06:54 +0000 (15:06 -0800)]
ofp-errors: Add extension error codes for OF1.3+ property errors.
Upcoming commits will introduce uses of the "property" message formats,
which are used in OF1.3 and especially in OF1.4+, in Nicira extension
messages for earlier versions of OpenFlow. Thus, it's best to also
support the appropriate error codes in those versions of OpenFlow, so that
errors can be reported in a useful way.
Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Jarno Rajahalme <jarno@ovn.org>
Ben Pfaff [Thu, 24 Dec 2015 23:44:31 +0000 (15:44 -0800)]
ovs-ofctl: Merge dump_stats_transaction() into dump_transaction().
The callers call dump_stats_transaction() for OFPST_* messages and
dump_transaction() for other messages, but the callee can easily
distinguish the two types, so this commit eliminates the difference for the
callers to simplify use.
This will be more valuable in an upcoming commit in which a single
ofputil_encode_*() function can produce an OFPT_* request for some
OpenFlow versions and an OFPST_* request for others. (Specifically, OF1.4
changes OFPT_QUEUE_GET_CONFIG_REQUEST into OFPST_QUEUE_DESC.)
Also merges dump_trivial_stats_transaction() into
dump_trivial_transaction() for the same reason.
Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Jarno Rajahalme <jarno@ovn.org>
Ben Pfaff [Wed, 20 Jan 2016 16:16:09 +0000 (08:16 -0800)]
netdev-dummy: Add a dummy queue.
Until now it's been pretty hard to properly test any of the queue support,
because the dummy network device doesn't have any queues. By adding one
queue to the dummy network device (queue 0), we can get slightly higher
confidence that OVS queue support works correctly. I suppose we could do
even better if we made the dummy network device support modifying the
queues, but that's a job for another day.
At first glance, OF1.4 queue properties look a lot like those for OF1.0
to OF1.3, but in fact their different padding makes them incompatible. In
addition, OF1.4 switches from using regular OpenFlow messages to request
queue properties, to using multipart messages. Thus, we really need to
use separate code to deal with OF1.4 queues.
OF1.0, OF1.1, and OF1.2 all have slightly different queue config reply
messages, but only OF1.0 and OF1.2 had tests, so this adds tests. (There
is no test for OF1.3 because it's the same as OF1.2.)
Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Jarno Rajahalme <jarno@ovn.org>
Ben Pfaff [Thu, 24 Dec 2015 23:29:26 +0000 (15:29 -0800)]
ofp-print: Improve formatting of queue stat requests and port_mods.
Without this, OFPST_QUEUE requests are formatted as:
OFPST_QUEUE request:port=LOCAL queue=5
With this commit, OFPST_QUEUE requests are formatted as:
OFPST_QUEUE request: port=LOCAL queue=5
which looks better.
Similarly for OFPT_PORT_MOD.
Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Jarno Rajahalme <jarno@ovn.org>
Ben Pfaff [Tue, 5 Jan 2016 19:42:51 +0000 (11:42 -0800)]
pinsched: Remove obsolete ofpbuf_trim().
This call to ofpbuf_trim() comes from a time when the packets passed to
pinsched came directly from a dpif. For some time now that's no longer
true--now they are messages generated by ofputil_encode_packet_in(), which
generally are well sized and do not benefit from trimming.
This is not a bug fix--the code is equally correct either way, it's only
the rationale for trimming that's obsolete.
Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Jarno Rajahalme <jarno@ovn.org>
Ben Pfaff [Wed, 6 Jan 2016 21:38:20 +0000 (13:38 -0800)]
ofp-msgs: Fix definitions of OF1.4 OFPT_GET_ASYNC_REPLY and OFPT_SET_ASYNC.
The structures declared in ofp-msgs.h for messages definitions should not
include an OpenFlow header (its presence is implied), but the definition of
these messages did. This commit fixes the definitions.
The visible bug was really minor here: messages of these kinds without any
TLVs would be rejected by the OpenFlow parser. But OVS never sends these
messages without TLVs, so probably no one ever noticed this. (Also, the
OVS support for OF1.4 is still incomplete and experimental.)
Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Jarno Rajahalme <jarno@ovn.org>
Ben Pfaff [Mon, 18 Jan 2016 22:49:47 +0000 (14:49 -0800)]
learning-switch: Use "if"s instead of "switch" to reduce maintenance.
This code only cares about a very few kinds of OpenFlow messages, and it's
unlikely that it will care about new ones, so replace the "switch" by "if"
statements so that GCC won't complain about every new message.
Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Jarno Rajahalme <jarno@ovn.org>
Ben Pfaff [Thu, 14 Jan 2016 06:15:09 +0000 (22:15 -0800)]
ofproto: Fix memory leak and memory exhaustion bugs in group_mod.
In handle_group_mod() cases where adding a group failed, nothing freed the
list of buckets, causing a leak. The same was true in every case of
modifying a group. This commit fixes the problem by changing add_group()
to never steal or free the buckets (modify_group() already acted this way)
and then making handle_group_mod() always free the buckets when it's done.
This approach might at first raise objections, because it makes add_group()
copy the buckets instead of just take the existing ones. But it actually
fixes a worse problem too: when OF1.4+ REQUESTFORWARD is enabled, the
group_mod is reused for the request forwarding. Until now, for a group_mod
that adds a new group and that has some buckets, the previous stealing of
buckets in add_group() meant that the group_mod's buckets were no longer
valid; in practice, the list of buckets became linked in a way that
iteration never terminated, which caused memory to be exhausted while
composing the requestforward message. By making add_group() no longer
modify the group_mod, we also fix this problem.
The requestforward test in the testsuite did not find the latter problem
because it only added a group without any buckets. This commit also
updates the testsuite to include a bucket in its group_mod, which would
have found the problem.
Found by pain and suffering.
Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Jarno Rajahalme <jarno@ovn.org>
Haggai Eran [Thu, 14 Jan 2016 11:29:08 +0000 (13:29 +0200)]
ofproto: Wildcard TTL on IP tunnels
There is no need to set the mask on the outer header IP TTL [1]. The only requirement
is that the TTL will be non-zero. Clear the mask in tnl_wc_init().
[1] OVS VXLAN decap rule has full match on TTL for the outer headers?
http://www.spinics.net/lists/netdev/msg351961.html
Cc: Jesse Gross <jesse@kernel.org> Cc: Joe Stringer <joe@ovn.org> Signed-off-by: Haggai Eran <haggaie@mellanox.com> Signed-off-by: Jesse Gross <jesse@kernel.org>
Haggai Eran [Thu, 14 Jan 2016 11:29:07 +0000 (13:29 +0200)]
odp-util: Accept fields with zero mask
It is possible to pass some fields to the kernel with a zero mask, but
ovs-dpctl doesn't currently allow it. Change the code to allow it to
mimic what vswitchd is allowed to do.
Signed-off-by: Haggai Eran <haggaie@mellanox.com> Signed-off-by: Jesse Gross <jesse@kernel.org>
Russell Bryant [Thu, 14 Jan 2016 20:36:17 +0000 (15:36 -0500)]
tests: Update ovn localnet test case.
The OVN localnet port test case did not cover having 2 ports on the same
network and on the same hypervisor. It also turns out that this case is
broken. Update the test case to demonstrate the problem. A solution
should be able to uncomment these additional test_packet lines and have
the test case still pass.
Reported-at: http://openvswitch.org/pipermail/dev/2016-January/064413.html Signed-off-by: Russell Bryant <russell@ovn.org> Acked-by: Han Zhou <zhouhan@gmail.com>
Pravin B Shelar [Thu, 14 Jan 2016 00:42:10 +0000 (16:42 -0800)]
datapath: STT: Fix nf-hook softlockup.
nf-hook is not unregistered on STT device delete, But when
second time it was created it nf-hook is again registered.
which causes following softlockup.
Following patch fixes it by registering nf-hook only on very
first stt device.
Joe Stringer [Tue, 12 Jan 2016 19:32:41 +0000 (11:32 -0800)]
netdev-dpdk: Fix thread_is_pmd() symbol conflict.
DPDK build was broken after commit 2f8932e8403a ("poll: Suppress logging
for pmd threads.") due to the following error:
lib/netdev-dpdk.c:245:13: error: static declaration of ‘thread_is_pmd’
follows non-static declaration
lib/ovs-thread.h:526:6: note: previous declaration of ‘thread_is_pmd’
was here
The version used in this file operates in the fastpath, so it cannot
switch to using the newly introduced version; the new version lives
outside of the dpdk portions of OVS so its implementation cannot be
shared with this function. Rename it to resolve the conflict.
Fixes: 2f8932e8403a ("poll: Suppress logging for pmd threads.") Suggested-by: Flavio Leitner <fbl@sysclose.org> Signed-off-by: Joe Stringer <joe@ovn.org> Acked-by: Flavio Leitner <fbl@sysclose.org>
Pravin B Shelar [Tue, 12 Jan 2016 19:45:18 +0000 (11:45 -0800)]
datapath: Fix deadlock on STT device destroy.
STT unregisters nf-hook when there are no other STT devices
left in the namespace. On some kernel versions the nf-unreg API
take RTNL lock, but it is already taken in the tunnel device
destroy code path which results in deadlock. To fix the issue
I moved the unreg call into net-exit.
VMware-BZ: #1582410 Reported-by: Joe Stringer <joe@ovn.org> Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Acked-by: Joe Stringer <joe@ovn.org>
Shad Ansari [Thu, 10 Dec 2015 09:12:31 +0000 (01:12 -0800)]
ovsdb-idl: Add support for column tracking in IDL.
Recent IDL change tracking patches allow quick traversal of changed
rows. This patch adds additional support to track changed columns.
It allows an IDL client to efficiently check if a specific column
of a row was updated by IDL.
Signed-off-by: Shad Ansari <shad.ansar@hpe.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
Ben Pfaff [Tue, 12 Jan 2016 18:37:48 +0000 (10:37 -0800)]
xml2nroff: Fix build breakage when srcdir differs from builddir.
When the source directory and build directory differ, xml2nroff needs
to pull include files from the source directory, but it was blindly
using the current working directory (the build directory) instead.
Signed-off-by: Ben Pfaff <blp@ovn.org> Fixes: 7ba0c32f610 ("ovn-nbctl: add db commands help and manpage") Tested-by: Joe Stringer <joe@ovn.org> Acked-by: Joe Stringer <joe@ovn.org>
Russell Bryant [Mon, 14 Dec 2015 15:21:53 +0000 (10:21 -0500)]
python: Fix print function compatibility.
The print statement from Python 2 is a function in Python 3. Enable
print function support for Python 2 and convert print statements to
function calls.
Enable the H233 flake8 warning. If the hacking plugin is installed,
this will generate warnings for print statement usage not compatible
with Python 3.
H233 Python 3.x incompatible use of print operator
Signed-off-by: Russell Bryant <russell@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
Terry Wilson [Thu, 30 Jul 2015 02:12:45 +0000 (21:12 -0500)]
python: Start fixing some Python 3 issues.
This patch fixes just the Python 3 problems found by running:
python3 setup.py install
There are still many other issues to be fixed, but this is a start.
Signed-off-by: Terry Wilson <twilson@redhat.com>
[russell@ovn.org resolved conflicts with current master] Signed-off-by: Russell Bryant <russell@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
Simon Horman [Mon, 11 Jan 2016 05:00:25 +0000 (14:00 +0900)]
flow: fix compilation of MINIFLOW_ASSERT
Often MINIFLOW_ASSERT is a no-op and compilation of code that uses
it is optimised out. This patch fixes compilation errors that occur
when that is not the case:
* FLOWMAP_MAX does not exist. Use MAP_MAP instead.
* FLOWMAP_IS_SET does not exist. Use flowmap_is_set instead.
Signed-off-by: Simon Horman <simon.horman@netronome.com> Acked-by: Jarno Rajahalme <jarno@ovn.org>
William Tu [Tue, 5 Jan 2016 21:38:43 +0000 (13:38 -0800)]
ofproto: Fix memory leak reported by valgrind.
Test case 757: ofproto - table description (OpenFlow 1.4)
Call stacks:
parse_ofp_table_vacancy (ofp-parse.c:896)
parse_ofp_table_mod (ofp-parse.c:978)
ofctl_mod_table (ovs-ofctl.c:2011)
ovs_cmdl_run_command (command-line.c:121)
main (ovs-ofctl.c:135)
Reason: return without freeing memory
Signed-off-by: William Tu <u9012063@gmail.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Co-authored-by: Daniele Di Proietto <diproiettod@vmware.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
William Tu [Tue, 5 Jan 2016 21:38:42 +0000 (13:38 -0800)]
rstp: Fix memory leak reported by valgrind.
test case: 1650 RSTP Single bridge, call stacks
hmap_insert_at (hmap.h:235)
rstp_port_set_port_number__ (rstp.c:744)
rstp_add_port (rstp.c:1164)
new_bridge (test-rstp.c:123)
test_rstp_main (test-rstp.c:514)
ovstest_wrapper_test_rstp_main__ (test-rstp.c:714)
ovs_cmdl_run_command (command-line.c:121)
main (ovstest.c:132)
fix it by adding hmap_destroy() at rstp_unref()
Signed-off-by: William Tu <u9012063@gmail.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Co-authored-by: Daniele Di Proietto <diproiettod@vmware.com> Acked-by: Daniele Venturino <daniele.venturino@m3s.it> Signed-off-by: Ben Pfaff <blp@ovn.org>
William Tu [Tue, 5 Jan 2016 21:38:41 +0000 (13:38 -0800)]
ovs-ofctl: Fix memory leak reported by valgrind.
Reported by 348: ovs-ofctl parse-flows (skb_priority)
Reason: return without freeing memory
Signed-off-by: William Tu <u9012063@gmail.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Co-authored-by: Daniele Di Proietto <diproiettod@vmware.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
William Tu [Thu, 7 Jan 2016 23:59:34 +0000 (15:59 -0800)]
stream-ssl: Fix memory leak reported by valgrind.
test case 1628: peer ca cert
ASN1_item_dup
do_ca_cert_bootstrap (stream-ssl.c:413)
ssl_connect (stream-ssl.c:468)
scs_connecting (stream.c:297)
stream_connect (stream.c:320)
Fix by removing the X509_dup().
Signed-off-by: William Tu <u9012063@gmail.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
William Tu [Thu, 7 Jan 2016 23:53:08 +0000 (15:53 -0800)]
ovsdb-client: Fix memory leak reported by valgrind.
test case 1427: ovsdb-server combines updates on backlogged connections.
ovsdb_column_set_add (column.c:233)
add_column (ovsdb-client.c:730)
parse_monitor_columns (ovsdb-client.c:787)
add_monitored_table (ovsdb-client.c:872)
do_monitor__ (ovsdb-client.c:945)
Reported-by: William Tu <u9012063@gmail.com>
Reported-at: http://openvswitch.org/pipermail/dev/2016-January/064161.html Signed-off-by: Andy Zhou <azhou@ovn.org> Signed-off-by: Ben Pfaff <blp@ovn.org>
William Tu [Thu, 7 Jan 2016 02:35:23 +0000 (18:35 -0800)]
test-aa: Fix memory leak reported by valgrind.
test case 1698: auto-attach - packet tests
Report several leaks at lldp_create_dummy(), the patch fixes the
following 3 leaks:
{lldp_send (lldp.c:334), lldp_decode (lldp.c:374),
lldp_create_dummy (ovs-lldp.c:890)}
test_aa_send (test-aa.c:252)
test_aa_main (test-aa.c:281)
Comments:
1. Create a new function "lldp_destroy_dummy()" because
many structures and its elements, ex: lldp_hardware and lldp_chassis,
are from stack not heap (see test_aa_send). As a result, calling
lldpd_cleanup() is incorrect.
2. Remove lchassis->c_id = xmalloc(ETH_ADDR_LEN);
because it is overwritten at test_aa_send()
3. remove memcpy(&hw->h_lport.p_element.system_id.system_mac,
lchassis->c_id, lchassis->c_id_len);
because the source buf is empty
Signed-off-by: William Tu <u9012063@gmail.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
William Tu [Wed, 6 Jan 2016 18:49:38 +0000 (10:49 -0800)]
test-ovsdb: Fix memory leak reported by valgrind.
Test case 1205: generate and apply diff -- set -- size (ovsdb-data.at:827)
Call stack:
ovsdb_error_valist (ovsdb-error.c:40)
ovsdb_error (ovsdb-error.c:55)
do_diff_data (test-ovsdb.c:427)
ovs_cmdl_run_command (command-line.c:121)
main (test-ovsdb.c:72)
Fix by calling ovsdb_error_destroy() before ovs_fatal()
Signed-off-by: William Tu <u9012063@gmail.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
William Tu [Wed, 6 Jan 2016 18:49:37 +0000 (10:49 -0800)]
ovsdb-client: Fix memory leak reported by valgrind.
Test case 1508-1514: OVSDB -- ovsdb-server monitors, call stacks:
ovsdb_schema_create (ovsdb.c:34)
ovsdb_schema_from_json (ovsdb.c:196)
fetch_schema (ovsdb-client.c:375)
do_monitor__ (ovsdb-client.c:920)
main (ovsdb-client.c:152)
Fix by adding ovsdb_schema_destroy().
Signed-off-by: William Tu <u9012063@gmail.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Co-authored-by: Daniele Di Proietto <diproiettod@vmware.com Signed-off-by: Ben Pfaff <blp@ovn.org>
William Tu [Wed, 6 Jan 2016 18:49:35 +0000 (10:49 -0800)]
test-netflow: Fix memory leak reported by valgrind.
Test case 890: ofproto-dpif - NetFlow flow expiration - IPv4 collector
Valgrind reports two leaks below:
unixctl_server_create (unixctl.c:250)
test_netflow_main (test-netflow.c:200)
ovstest_wrapper_test_netflow_main__ (test-netflow.c:301)
ovs_cmdl_run_command (command-line.c:121)
main (ovstest.c:132)
and
ofpbuf_init (ofpbuf.c:124)
test_netflow_main (test-netflow.c:208)
ovstest_wrapper_test_netflow_main__ (test-netflow.c:301)
ovs_cmdl_run_command (command-line.c:121)
main (ovstest.c:132)
Signed-off-by: William Tu <u9012063@gmail.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Co-authored-by: Daniele Di Proietto <diproiettod@vmware.com Signed-off-by: Ben Pfaff <blp@ovn.org>
Broadly, there are two cases that are handled during revalidator_sweep__:
- Ukeys which had their corresponding datapath flows deleted during the
most recent dump phase need to be deleted.
- If a flow for a ukey still exists in the datapath, the flow may need
to be removed or updated. This depends on a variety of factors such as
whether the datapath is being flushed, whether individual flows were
recently dumped, and whether those flows are valid for the current
revalidation generation.
Previously, the logic was written such that the first of these cases
would be handled under the "UKEY_KEEP" case to ensure that
revalidator_sweep__() will not attempt to delete flows that already
exist. In this case, ukey->flow_exists would be false, which would
trigger ukey cleanup.
While correct, this is misleading and difficult to follow. Since commit 83b03fe05e7a ("ofproto-dpif-upcall: Avoid double-delete of ukeys."),
this logic is no longer required to prevent double-deletion of such
flows, so we can now make this codepath more straightforward.
Joe Stringer [Thu, 7 Jan 2016 19:47:46 +0000 (11:47 -0800)]
ofproto-dpif-upcall: Don't delete modified ukeys.
If revalidation returns the result UKEY_DELETE, then both the ukey and
its corresponding flow should be deleted. However, if revalidation
returns UKEY_MODIFY, the ukey itself should be modified in-place and
should not be deleted.
Fix this by only applying the ukey deletion to ukeys whose datapath
operations delete a flow.
This may fix statistics accounting issues in rare cases involving
OpenFlow rule modification where actions are updated but flows remain
the same.
Found by inspection.
Signed-off-by: Joe Stringer <joe@ovn.org> Acked-by: Jarno Rajahalme <jarno@ovn.org>
Ben Pfaff [Mon, 21 Dec 2015 23:39:10 +0000 (15:39 -0800)]
Better abstract OFPT_SET_CONFIG and OFPT_GET_CONFIG_REPLY, make stricter.
The OFPT_SET_CONFIG and OFPT_GET_CONFIG_REPLY messages, which have the
same format, have a 'flags' field in which OpenFlow defines some bits,
which change somewhat from one version to another, and does not define
others. Until now, Open vSwitch has not abstracted these messages at all
and has ignored the bits that OpenFlow leaves undefined. This commit
abstracts the messages in the same way as other OpenFlow messages and
validates in OFPT_SET_CONFIG messages that the undefined bits are set to
zero.
OpenFlow 1.1 and 1.2, but not OpenFlow 1.0, define a flag named
OFPC_INVALID_TTL_TO_CONTROLLER. Open vSwitch has until now also
implemented this as an extension to OpenFlow 1.0, and this commit retains
that extension.
Reported-by: Manpreet Singh <er.manpreet25@gmail.com> Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Andy Zhou <azhou@ovn.org>
Ben Pfaff [Wed, 6 Jan 2016 23:44:39 +0000 (15:44 -0800)]
ofproto-dpif-upcall: Avoid double-delete of ukeys.
revalidate_sweep__() has two cases where it calls ukey_delete() to
remove a ukey from the umap via cmap_remove(). The first case is a direct
call to ukey_delete(), when !flow_exists. The second case is an indirect
call via push_ukey_ops(), when result != UKEY_KEEP. If both of these
conditions are simultaneously true, however, the code would call
ukey_delete() twice, causing an assertion failure in the second call. This
commit fixes the problem by eliminating one of the calls.
The version tested by Ben Warren differs from this version, see:
http://openvswitch.org/pipermail/dev/2016-January/064117.html
Reported-by: Keith Holleman <keith.holleman@gmail.com>
Reported-at: http://openvswitch.org/pipermail/discuss/2015-December/019772.html CC: Joe Stringer <joe@ovn.org>
VMware-BZ: #1579057 Signed-off-by: Ben Pfaff <blp@ovn.org> Tested-by: Ben Warren <ben@skyportsystems.com>
Russell Bryant [Wed, 6 Jan 2016 16:50:21 +0000 (11:50 -0500)]
python: Ignore all D,H warnings from flake8.
A previous patch added the list of warnings emitted by the docstrings
and hacking plugins for flake8. Switch to ignoring all warnings from
those plugins. We can use --select to enable specific ones that we want
if needed later on.
Signed-off-by: Russell Bryant <russell@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
Numan Siddique [Wed, 6 Jan 2016 11:29:15 +0000 (16:59 +0530)]
Add some more flake8 types to ignore list to fix the compilation errors
with the flake8 check enabled, ovs compilation is failing. This
patch adds few more flake8 types to the igore list. These warnings
come from the hacking and docstrings flake8 plugins.
Signed-off-by: Numan Siddique <nusiddiq@redhat.com>
[russell@ovn.org added comments, also ignore W503] Signed-off-by: Russell Bryant <russell@ovn.org>
Ben Pfaff [Wed, 6 Jan 2016 00:51:54 +0000 (16:51 -0800)]
ofproto-dpif-rid: Fix memory leak in recirc_state.
recirc_state_clone() copies the stack and actions and nothing ever freed
them.
CC: Jarno Rajahalme <jarno@ovn.org> CC: Andy Zhou <azhou@ovn.org> Reported-by: William Tu <u9012063@gmail.com>
Reported-at: http://openvswitch.org/pipermail/dev/2016-January/064040.html Signed-off-by: Ben Pfaff <blp@ovn.org>
Russell Bryant [Sun, 13 Dec 2015 04:11:47 +0000 (23:11 -0500)]
python: Inherit from object.
class Vlog now inherits from "object". This is a "new style" Python
class, which isn't new at all at this point. This was introduced back
in Python 2.2, and some Python 2 code won't work as expected without it.
Signed-off-by: Russell Bryant <russell@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
Russell Bryant [Tue, 22 Dec 2015 16:30:32 +0000 (11:30 -0500)]
python: Resolve a deprecation warning.
Resolve the following deprecation warning. This deprecation warning
advises to use an alternative syntax which is also compatible with
Python 3, where has_key() was removed.
W601 .has_key() is deprecated, use 'in'
Also fix this related error:
E713 test for membership should be 'not in'
Signed-off-by: Russell Bryant <russell@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
Russell Bryant [Tue, 5 Jan 2016 23:16:20 +0000 (18:16 -0500)]
python: Fix several pep8 whitespace errors.
Fix the following pep8 errors:
E201 whitespace after '('
E203 whitespace before ','
E222 multiple spaces after operator
E225 missing whitespace around operator
E226 missing whitespace around arithmetic operator
E231 missing whitespace after ':'
E241 multiple spaces after ':'
E251 unexpected spaces around keyword / parameter equals
E261 at least two spaces before inline comment
E262 inline comment should start with '# '
E265 block comment should start with '# '
E271 multiple spaces after keyword
Signed-off-by: Russell Bryant <russell@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
Russell Bryant [Sat, 12 Dec 2015 17:54:31 +0000 (12:54 -0500)]
python: Resolve pep8 comparison errors.
Resolve pep8 errors:
E711 comparison to None should be 'if cond is None:'
The reason comparing against None with "is None" is preferred over
"== None" is because a class can define its own equality operator and
produce bizarre unexpected behavior. Using "is None" has a very
explicit meaning that can not be overridden.
E721 do not compare types, use 'isinstance()'
This one is actually a mistake by the tool in most cases.
'from ovs.db import types' looks just like types from the Python stdlib.
In those cases, use the full ovs.db.types name. Fix one case where it
actually was types from the stdlib.
Signed-off-by: Russell Bryant <russell@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
Russell Bryant [Mon, 4 Jan 2016 21:02:51 +0000 (16:02 -0500)]
CONTRIBUTING: Add example Submitted-at header.
Document a Submitted-at header to be used for GitHub pull request URLs,
or any other case where a patch was submitted somewhere other than the
OVS dev mailing list.
Signed-off-by: Russell Bryant <russell@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
openvswitch-switch.init: Redirect error to /dev/null.
The latest Open vSwitch kernel module from Upstream linux does not
list "version". During debian package installation, we would see
a non-harmful error in the log. This patch suppresses it.
Signed-off-by: Gurucharan Shetty <guru@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
openvswitch-switch.init: Redirect error to /dev/null.
The latest Open vSwitch kernel module from Upstream linux does not
list "version". During debian package installation, we would see
a non-harmful error in the log. This patch suppresses it.
Signed-off-by: Gurucharan Shetty <guru@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
William Tu [Tue, 5 Jan 2016 00:18:41 +0000 (16:18 -0800)]
odp-util: Fix memory leak reported by valgrind.
Test case: OVS datapath key parsing and formatting (377)
Return without freeing buf:
xmalloc(util.c:112)
ofpbuf_init(ofpbuf.c:124)
parse_odp_userspace_action(odp-util.c:987)
parse_odp_action(odp-util.c:1552)
odp_actions_from_string(odp-util.c:1721)
parse_actions(test-odp.c:132)
Test case: OVS datapath actions parsing and formatting (380)
Exit withtou uninit in test-odp.c
xrealloc(util.c:123)
ofpbuf_resize__(ofpbuf.c:243)
ofpbuf_put_uninit(ofpbuf.c:364)
nl_msg_put_uninit(netlink.c:178)
nl_msg_put_unspec_uninit(netlink.c:216)
nl_msg_put_unspec(netlink.c:243)
parse_odp_key_mask_attr(odp-util.c:3974)
odp_flow_from_string(odp-util.c:4151)
parse_keys(test-odp.c:49)
test_odp_main(test-odp.c:237)
ovstest_wrapper_test_odp_main__(test-odp.c:251)
ovs_cmdl_run_command(command-line.c:121)
main(ovstest.c:132)
Signed-off-by: William Tu <u9012063@gmail.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Co-authored-by: Daniele Di Proietto <diproiettod@vmware.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
William Tu [Tue, 5 Jan 2016 00:18:40 +0000 (16:18 -0800)]
ovs-ofctl: Fix memory leak reported by valgrind.
Test case: ovs-ofctl replace-flows with --bundle(376) reports two leaks:
ofpbuf_new(ofpbuf.c:151)
ofpraw_alloc_xid(ofp-msgs.c:533)
ofpraw_alloc(ofp-msgs.c:525)
ofputil_encode_flow_mod(ofp-util.c:2290)
bundle_flow_mod__(ovs-ofctl.c:1312)
ofctl_flow_mod__(ovs-ofctl.c:1331)
ofctl_flow_mod_file.isra.13(ovs-ofctl.c:1365)
ovs_cmdl_run_command(command-line.c:121)
main(ovs-ofctl.c:135)
and
ofpraw_alloc(ofp-msgs.c:525)
ofputil_encode_flow_mod(ofp-util.c:2290)
fte_make_flow_mod(ovs-ofctl.c:2936)
ofctl_replace_flows(ovs-ofctl.c:2981)
ovs_cmdl_run_command(command-line.c:121)
main(ovs-ofctl.c:135)
Signed-off-by: William Tu <u9012063@gmail.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Co-authored-by: Daniele Di Proietto <diproiettod@vmware.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
William Tu [Tue, 5 Jan 2016 00:18:39 +0000 (16:18 -0800)]
ovsdb-client: Fix memory leak reported by valgrind.
Free memory allocated from table_add_column and table_add_row.
Test case: vsctl-bashcomp - basic verification/argument completion(7,8)
Call stack is below:
xrealloc (util.c:123)
table_add_column (table.c:146) or table_add_row (table.c:172)
do_list_tables (ovsdb-client.c:449)
main (ovsdb-client.c:151)
Signed-off-by: William Tu <u9012063@gmail.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Co-authored-by: Daniele Di Proietto <diproiettod@vmware.com>
[blp@ovn.org removed an unneeded "if"] Signed-off-by: Ben Pfaff <blp@ovn.org>
Ben Pfaff [Sun, 29 Nov 2015 19:48:43 +0000 (11:48 -0800)]
physical: Improve treatment of localnet non-VLAN logical ports.
Until now, the flow table treated localnet logical ports that have a VLAN
quite differently from those that don't. The ones without a VLAN were
essentially trunk ports: any packets that came in, that weren't picked off
by a localnet port with a VLAN, were passed to the ones without a VLAN.
This wasn't the intended behavior.
This commit changes behavior to the intended behavior. Now, localnet ports
without a specific VLAN only receive packets without a VLAN header or those
with VLAN ID 0 (with that header stripped off).
Found by inspection.
Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Russell Bryant <russell@ovn.org>