Mehak Mahajan [Mon, 22 Oct 2012 21:00:35 +0000 (14:00 -0700)]
Change logging format for flows to that accepted by ofproto/trace.
flow_format() logs packets contents. However, the format used is not
the format accepted by ofproto/trace. Hence it becomes difficult to
trace the packets using the debugs printed. With this commit, the
logging of the packet contents is done in a format that is accepted
by ofproto/trace. This will make debugging easier.
Signed-off-by: Mehak Mahajan <mmahajan@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Gurucharan Shetty [Mon, 22 Oct 2012 17:52:41 +0000 (10:52 -0700)]
ovs-pki: Unique subject DNs for certificate requests.
Some applications expect subject DNs to be unique.
Bug #13609.
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Ethan Jackson [Fri, 19 Oct 2012 01:56:48 +0000 (18:56 -0700)]
timeval: Simplify poll interval logging.
log_poll_interval() is a little bit too aggressive, and is
therefore less useful than it could be. This patch removes the
mean interval calculation, and simply logs if the poll loop took
longer than 1 second instead.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Ben Pfaff [Mon, 15 Oct 2012 23:47:49 +0000 (16:47 -0700)]
ovs-vsctl: Do not accept any arguments to "del-manager" command.
It doesn't use them and never has.
Found when I accidentally typed this command with some arguments and it
worked, surprising me.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Pravin B Shelar [Sat, 20 Oct 2012 19:18:05 +0000 (12:18 -0700)]
datapath: Tunnel port without destination IP.
Following patch allow port create without any parameters. This is
required for compatibility with future flow based tunneling
where each type would have single vport with all parameter
wild carded. So that all packet for all ports are received on
the port and same port is used for sending all traffic for
that tunnel type.
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Kyle Mestery <kmestery@cisco.com>
Acked-by: Ben Pfaff <blp@nicira.com>
Pravin B Shelar [Sat, 20 Oct 2012 19:17:15 +0000 (12:17 -0700)]
datapath: Optimize flow key match for non tunnel flows.
Following patch adds start offset for sw_flow-key, so that we can
skip tunneling information in key for non-tunnel flows.
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Kyle Mestery <kmestery@cisco.com>
Acked-by: Ben Pfaff <blp@nicira.com>
Kyle Mestery [Sat, 20 Oct 2012 19:15:24 +0000 (12:15 -0700)]
datapath: Add support for tun_key to Open vSwitch datapath
This is a first pass at providing a tun_key which can be
used as the basis for flow-based tunnelling. The
tun_key includes and replaces the tun_id in both struct
ovs_skb_cb and struct sw_tun_key.
This patch allows all existing tun_id behaviour to still work. Existing
users of tun_id are redirected to tun_key->tun_id to retain compatibility.
However, when the userspace code is updated to make use of the new
tun_key, the old behaviour will be deprecated and removed.
NOTE: With these changes, the tunneling code no longer assumes input and
output keys are symmetric. If they are not, PMTUD needs to be disabled
for tunneling to work.
Signed-off-by: Kyle Mestery <kmestery@cisco.com>
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Reviewed-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
Henry Mai [Fri, 19 Oct 2012 17:22:42 +0000 (10:22 -0700)]
ovs-ctl: Fix implementation of --extra-dbs.
Commit
b4e8d1705 (ovsdb-server: Add support for multiple databases.)
added the --extra-dbs option to ovs-ctl but failed to add a specific
database name to the SSL options passed to ovsdb-server. This meant
that ovsdb-server would fail to start if --extra-dbs were actually
used, because it didn't know which database to look in for the SSL
settings.
Signed-off-by: Henry Mai <hmai@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Joe Stringer [Thu, 18 Oct 2012 17:37:37 +0000 (02:37 +0900)]
ofp-actions: Implement writing to metadata field
In OpenFlow 1.1, we add support for OFPIT_WRITE_METADATA. This allows us to
write to the metadata field. Internally it is represented using ofpact_metadata.
We introduce NXAST_WRITE_METADATA to handle writing to the metadata field in
OpenFlow 1.0+. This structure reflects OFPIT_WRITE_METADATA.
When writing out the structure to OpenFlow 1.1, it uses the OFPIT_WRITE_METADATA
instruction only, and not the new NXAST action (which would be redundant).
Signed-off-by: Joe Stringer <joe@wand.net.nz>
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ben Pfaff [Thu, 18 Oct 2012 18:12:38 +0000 (11:12 -0700)]
ofp-actions: Prefer OFPAT11_DEC_TTL to NXAST_DEC_TTL for OpenFlow 1.1+.
When "dec_ttl" is specified as the name of an action, in OpenFlow 1.1 and
later we should prefer to use the standardized action, rather than the
Nicira extension.
Reported-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Reviewed-by: Isaku Yamahata <yamahata@valinux.co.jp>
Ben Pfaff [Thu, 18 Oct 2012 18:10:55 +0000 (11:10 -0700)]
ofp-parse: Remove unreachable code.
OFPUTIL_OFPAT11_DEC_NW_TTL does not have a name in the table of actions'
names, so this code in parse_named_action() can never be reached.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Reviewed-by: Isaku Yamahata <yamahata@valinux.co.jp>
Ben Pfaff [Tue, 16 Oct 2012 18:01:27 +0000 (11:01 -0700)]
nicira-ext: Clarify behavior of overlapping src and dst for NXAST_REG_MOVE.
Reported-by: Pankaj Thakkar <thakkar@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Isaku Yamahata [Wed, 17 Oct 2012 18:51:58 +0000 (03:51 +0900)]
ofpaction: support OF11 pop_vlan
This patch adds support of OF11+ pop_vlan.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
[blp@nicira.com added a test]
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ben Pfaff [Wed, 17 Oct 2012 20:29:34 +0000 (13:29 -0700)]
ofp-util: Again allow OpenFlow port 0 in commands and actions.
Commit
c6100d92142b (ovs-ofctl: Accept port keywords, OF1.1 port numbers,
reject port number 0.) intentionally prohibited using port 0, which is not
a valid OpenFlow port number, in OpenFlow commands and actions. However,
since then we have discovered that the NVP controller uses port 0 in
"resubmit" actions and hence in flow matches as well. This seems like a
valid enough use case; after all, the port number in a resubmit action is
really just an arbitrary number that need not (and preferably does not)
refer to an actual OpenFlow port. Therefore, this commit restores the
ability to use port 0.
(Only functions that parse OpenFlow commands and actions from strings, not
those that interpret binary OpenFlow coming in on OpenFlow connections,
were affected by this prohibition, so this only comes up in corner cases
anyhow.)
Reported-by: Gurucharan Shetty <gshetty@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ben Pfaff [Wed, 17 Oct 2012 20:10:08 +0000 (13:10 -0700)]
ofp-util: Separate output, error reporting in ofputil_port_from_string().
When I wrote this function I didn't think that port 0 was important (it's
not a valid OpenFlow port number) so I used a return value of 0 to indicate
an error. However, my assumption turns out to be wrong, so this commit
changes the interface to use the return value only for error reporting
and store the parsed port number into a pointer passed in as a parameter.
This commit doesn't change the behavior of ofputil_port_from_string().
Signed-off-by: Ben Pfaff <blp@nicira.com>
Isaku Yamahata [Wed, 17 Oct 2012 22:02:04 +0000 (07:02 +0900)]
lib: support OF11 dec_nw_ttl
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
[blp@nicira.com changed code to use "dec_ttl" instead of "dec_nw_ttl"]
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ethan Jackson [Mon, 15 Oct 2012 19:42:48 +0000 (12:42 -0700)]
utilities: New helper ovs-parse-backtrace.
The new ovs-parse-backtrace utility makes the output of ovs-appctl
backtrace more human readable by removing duplicate traces and
converting addresses to function names.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Ethan Jackson [Wed, 17 Oct 2012 01:16:16 +0000 (18:16 -0700)]
timeval: Optionally enable cached timing at configure time.
Often when developing, it would be convenient to force OVS to
either enable or disable cached timing so that a feature can be
tested under both strategies.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Ethan Jackson [Wed, 17 Oct 2012 01:16:37 +0000 (18:16 -0700)]
m4: Remove trailing whitespace.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Isaku Yamahata [Wed, 17 Oct 2012 18:18:16 +0000 (03:18 +0900)]
stream.py: un-decorator Stream.register_method
c38f8724aeb994fd840fa4283a07e38c3c114d68 made stream.py not use class
decorator. So Stream.register need not to be decorator any more.
So simplify it.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Reid Price [Wed, 17 Oct 2012 00:23:26 +0000 (17:23 -0700)]
stream.py: Don't use class decorators.
Commit 8cc820 (python/ovs/stream: teach stream.py tcp socket) made a
change that used class decorators. Unfortunately, they were not
introduced until Python 2.6. XenServer uses Python 2.4, so the change
caused some Python-based daemons not to start. This commit uses an
alternate syntax suggested by Reid Price.
Bug #13580
Signed-off-by: Justin Pettit <jpettit@nicira.com>
Signed-off-by: Reid Price <reid@nicira.com>
Ethan Jackson [Tue, 16 Oct 2012 22:40:27 +0000 (15:40 -0700)]
ofp-actions: Remove unused variable.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Ethan Jackson [Tue, 16 Oct 2012 00:05:35 +0000 (17:05 -0700)]
timeval: Block SIGALRM when sleeping.
Commit
00a16895 (timeval: Don't require signals for time_alarm().)
Incorrectly disabled signals when when CACHE_TIME was disabled. In
fact, the reverse was correct. As a result of this bug, OVS would
wake once every 100ms unnecessarily. It shouldn't have affected
correctness otherwise.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Isaku Yamahata [Fri, 5 Oct 2012 06:56:57 +0000 (15:56 +0900)]
instruction/clear-actions: string parser/formater, of packet decoder/encoder
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Isaku Yamahata [Fri, 5 Oct 2012 06:56:56 +0000 (15:56 +0900)]
instruction: support goto-table action
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Isaku Yamahata [Mon, 15 Oct 2012 21:57:27 +0000 (06:57 +0900)]
python/ovs/socket_util: don't use Exception, but ValueError
67656b9ff297f305b3bfcca2868e8e870e108283
used Exception, but it should be more specific error.
Use ValueError instread of Exception.
Suggested-by: Reid Price <reid@nicira.com>
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Gurucharan Shetty [Mon, 15 Oct 2012 21:41:31 +0000 (14:41 -0700)]
ovs-pki: Increase the validity days for self-signed certificates.
For self-signed certificates, increase validity from the default
30 days to 6 years.
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Isaku Yamahata [Thu, 27 Sep 2012 09:28:08 +0000 (18:28 +0900)]
python/ovs/stream: teach stream.py tcp socket
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Isaku Yamahata [Thu, 27 Sep 2012 09:28:07 +0000 (18:28 +0900)]
python/ovs/socket_util: add tcp related helper functions which will be used by tcp
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ethan Jackson [Fri, 12 Oct 2012 22:18:26 +0000 (15:18 -0700)]
timeval: Add new "backtrace" appctl command.
Often, it can be quite difficult to debug performance issues in
Open vSwitch. Typically one needs to run something like gprof, but
that requires rebuilding and installing on the affected system
which is often problematic. This patch adds a light weight
profiling solution which can be used in these situations. The
ovs-appctl backtrace command prints out backtraces taken at 100
millisecond intervals over a 5 second period of time. It is
currently only supported on systems which have the execinfo library
and enable time caching.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Ethan Jackson [Fri, 12 Oct 2012 20:19:35 +0000 (13:19 -0700)]
cfm: Scope CFM packets to key zero.
Before this patch, when a tunnel is configured with key=flow, CFM
didn't verify that incoming packets had the appropriate key of
zero. This could cause the CFM module to consume packets which
weren't actually intended for it.
Bug #13542.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Ben Pfaff [Fri, 12 Oct 2012 17:15:11 +0000 (10:15 -0700)]
ofp-errors: Merge OF1.0 "all tables full" with OF1.1+ "table full".
These codes represent essentially the same condition and only one of them
exists in any given version of OpenFlow, so merge them together into a
single OFPERR_* code.
Reported-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ben Pfaff [Fri, 12 Oct 2012 20:18:41 +0000 (13:18 -0700)]
ofproto: Fix typo in macro name.
I like the sound of "evicton" but it isn't a real word.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Simon Horman [Fri, 12 Oct 2012 00:26:28 +0000 (09:26 +0900)]
ofproto: Do not add flow on flow mod if new_cookie is UINT64_MAX
Internally a new_cookie value UINT64_MAX is used for
an OpenFlow 1.2 flow mod whose command is not Add.
Open Flow 1.2 does not permit adding flows for such commands.
Also, UINT64_MAX is a prohibited cookie value, and the
existing code created a flow with that value as for the cookie.
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Simon Horman [Fri, 12 Oct 2012 00:26:29 +0000 (09:26 +0900)]
ofp-print: Do not display flow mod cookie if it is UINT64_MAX
Internally UINT64_MAX is used to denote that the cookie
should not be changed, so it seems appropriate
to omit this value when pretty printing flow mods.
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Simon Horman [Fri, 12 Oct 2012 00:26:27 +0000 (09:26 +0900)]
ofp-util: Correct setting of Flow Mod cookie on encode
When the command of a Flow Mod messages is ADD the cookie should be set as
fm->new_cookie, this is the new cookie value to be set. Otherwise it
should be set as fm->cookie, internally this is the cookie value to match.
Also remove 'XXX' marker from the matching code in the decoder.
I am now comfortable with the implementation.
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Simon Horman [Fri, 12 Oct 2012 04:03:04 +0000 (13:03 +0900)]
ofp-msgs: Open Flow 1.1 and 1.2 Queue Status Messages
This allows for encoding and decoding Open Flow 1.1 and 1.2 Queue Stats
Request and Reply messages.
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Simon Horman [Fri, 12 Oct 2012 04:01:05 +0000 (13:01 +0900)]
ofp-util: Correct comment above ofputil_append_port_stat()
This function changed a few times before it was merged,
unfortunately at some point the comment wasn't kept in sync
with the changes.
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Simon Horman [Fri, 12 Oct 2012 04:00:38 +0000 (13:00 +0900)]
ofp-msgs: Update for OpenFlow 1.1 & 1.2 Port Desc Stats
* Split OFPRAW_OFPST_PORT_DESC_REPLY into OpenFlow 1.0
and OpenFlow 1.1+ versions.
* Allow OFPRAW_OFPST_PORT_DESC_REQUEST to be used for
OpenFlow 1.0+ instead of only OpenFlow 1.0.
This appears to be necessary and sufficient to allow encoding of Port Desc
Stats reply messages and decoding of Port Desc Stats request messages. Or
in other words both the client and server side of ovs-ofctl dump-ports-desc
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Simon Horman [Fri, 12 Oct 2012 00:24:34 +0000 (09:24 +0900)]
Use enum ofperr in ofputil_decode_flow_removed()
The return type of both ofputil_decode_flow_removed() and nx_pull_match()
is enum ofperr so it makes sense for error be of that type too.
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ed Maste [Thu, 11 Oct 2012 20:58:17 +0000 (20:58 +0000)]
lib: Use FreeBSD libc function for proctitle
FreeBSD libc's setproctitle provides the same interface as proctitle_set so
use it directly.
Signed-off-by: Ed Maste <emaste@adaranet.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ed Maste [Thu, 11 Oct 2012 20:49:38 +0000 (20:49 +0000)]
lib: Move addition of program_name to proctitle_set
Signed-off-by: Ed Maste <emaste@adaranet.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ben Pfaff [Thu, 11 Oct 2012 17:56:12 +0000 (10:56 -0700)]
nicira-ext: Correct and improve nx_flow_update_abbrev comment.
Notifications always precede a barrier that follows a given flow_mod,
not a barrier that precedes a flow_mod as the text here previously claimed.
Also, the text about abbreviated notifications is equally applicable
to normal, unabbreviated notifications, so say that explicitly.
Reported-by: Jean Tourrilhes <jt@hpl.hp.com>
Acked-by: Jean Tourrilhes <jt@hpl.hp.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Simon Horman [Sat, 6 Oct 2012 10:39:49 +0000 (19:39 +0900)]
ofp-msgs: Open Flow 1.1 and 1.2 Port Status Messages
This allows for encoding and decoding Open Flow 1.1 and 1.2 Port Stats
Request and Reply message
Signed-off-by: Simon Horman <horms@verge.net.au>
[blp@nicira.com added ofputil_count_port_stas(), simplified
interface of ofputil_decode_port_stats(), style changes]
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ben Pfaff [Wed, 10 Oct 2012 17:09:12 +0000 (10:09 -0700)]
Makefile.am: Distribute INSTALL.Fedora.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ralf Spenneberg [Tue, 2 Oct 2012 18:31:55 +0000 (14:31 -0400)]
build: Add support for building RPMs for Fedora Linux
Add RPM specfiles for building OVS for Fedora Linux. This
allows users of the upstream project the ability to
generate RPMs for their Open vSwitch needs.
Signed-off-by: Ralf Spenneberg <ralf@spenneberg.net>
[kmestery@cisco.com made substantial changes including
writing documentation]
Signed-off-by: Kyle Mestery <kmestery@cisco.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Pravin B Shelar [Wed, 10 Oct 2012 00:13:05 +0000 (17:13 -0700)]
datapath: Allow GRE64 tunnels without any key.
Now GRE64 deals with tunnel with no key and tunnel with zero key
as a same. This behaviour is different than standard GRE.
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
Pravin B Shelar [Tue, 9 Oct 2012 23:08:39 +0000 (16:08 -0700)]
datapath: Fix GRE tunnel without any key.
Commit
2de795adb96 (datapath: 64-bit GRE support) introduced a bug
for tunnels with no key. Following patch fixes it by setting tunnel
type to GRE type.
Bugs: 13511
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Kyle Mestery <kmestery@cisco.com>
Ethan Jackson [Fri, 5 Oct 2012 20:24:21 +0000 (13:24 -0700)]
config: Add explicit support for building on ESX.
The ESX userspace looks quite a bit like linux, but has some key
differences which need to be specially handled in the build. To
distinguish between ESX and systems which use the linux datapath
module, this patch adds two new macros "ESX" and "LINUX_DATAPATH".
It uses these macros to disable building code on ESX which only
applies to a true Linux environment. In addition, it adds a new
route-table-stub implementation which is required for the build to
complete successfully on ESX.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Pravin B Shelar [Sat, 6 Oct 2012 00:55:02 +0000 (17:55 -0700)]
datapath: 64-bit GRE support
Extend GRE to have a 64-bit key. Use GRE sequence number to
store upper 32-bits of the key, but this is not standard way of
using GRE sequence number.
Bug #13186
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
Ethan Jackson [Fri, 5 Oct 2012 01:38:59 +0000 (18:38 -0700)]
timeval: Recover from failed timer_create() calls.
The timer_create() system call is not supported in ESX and returns
an error when called. Aborting when this system call fails seems a
bit extreme. So instead, this patch simply falls back to disabling
the cached time optimization.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Ethan Jackson [Fri, 5 Oct 2012 00:57:16 +0000 (17:57 -0700)]
timeval: Don't require signals for time_alarm().
Before this patch, time_alarm() used the SIGALRM handler to notify
the poll loop that it should exit the program. Instead, this patch
simply implements time_alarm() directly in the pool loop. This
significantly simplifies the code, while removing a call to
timer_create() which is not currently supported on ESX.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Ben Pfaff [Thu, 4 Oct 2012 22:11:39 +0000 (15:11 -0700)]
ofproto-dpif: Avoid zeroing tunnel info in handle_miss_upcalls().
Commit
296e07ace0f (flow: Extend struct flow to contain tunnel outer
header.) changed the tunnel ID parameter of flow_extract() from an integer
passed by value to a structure passed by pointer. Before flow_extract()
reads the tunnel ID, it zeros the entire flow parameter. This means that,
if a caller passes the address of the tunnel member of the flow as the
tunnel ID, then flow_extract() zeros the tunnel data before it reads and
copies the tunnel data (that it just zeroed). The result is that the
tunnel data is ignored.
This commit fixes the problem by making the caller that did this use a
separate flow structure instead of trying to be clever.
Bug #13461.
CC: Pankaj Thakkar <thakkar@nicira.com>
Reported-by: Michael Hu <mhu@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Mehak Mahajan [Thu, 4 Oct 2012 19:33:05 +0000 (12:33 -0700)]
ovsdb/jsonrpc-server: ovsdb-server closes accepted connections immediately.
2012-09-14T05:38:26Z|00001|jsonrpc|WARN|tcp:127.0.0.1:6634: receive error: Con
ovsdb-client: transaction failed (Connection reset by peer)
NOTE: This occurs intermittently depending on how ovsdb-server runs.
Running ovsdb-client on a remote machine increases the possibility.
This is because ovsdb-server closes newly accepted tcp connection.
The following changesets caused it. struct jsonrpc_session::dscp isn't set
based on listening socket's dscp value.
- ovsdb-server creates passive connection and listens on it.
- ovsdb-server accepts connection by ovsdb_jsonrpc_server_run().
The accepted socket inherits from the listening sockets.
ovsdb_jsonrpc_server_run() creates json session, but leaves dscp of
struct jsonrpc_session zero.
- On calling reconfigure_from_db(), it resets dscp value to
all jsonrpc sessions. Eventually jsonrpc_session_set_dscp() is called.
Then jsonrpc_session_force_reconnect() closes the connection.
With this patch,
- struct jsonrpc_session::dscp is correctly set based on
listening sockets dscp value.
- dscp of listening socket is changed dynamically by setsockopt.
This leaves a window where accepted socket may have old dscp.
But it is ignored for now because it would complicates codes
too much.
The related change sets:
-
0442efd9b1a88d923b56eab6b72b6be8231a49f7
Reapplying the dscp changes: No need to restart DB/OVS on changing
dscp value.
-
59efa47adf3234ec51541405726d033173851285
Revert DSCP update changes.
-
b2e18db292cd4962af3248f11e9f17e6eaf9c033
No need to restart DB / OVS on changing dscp value.
-
f125905cdd3dc0339ad968c0a70128807884b400
Allow configuring DSCP on controller and manager connections.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Mehak Mahajan <mmahajan@nicira.com>
Ben Pfaff [Thu, 4 Oct 2012 22:55:43 +0000 (15:55 -0700)]
Avoid requiring autom4te when it won't necessarily be needed.
Commit
7fd3e43db07 (tests: Allow environment specified autom4te.) added a
requirement for Autom4te without anyone noticing it in advance. This
caused a build failure in the XenServer DDK, which doesn't have Autom4te.
Since Autom4te is only needed if the testsuite is modified, this commit
makes it optional.
(Autom4te is part of Autoconf.)
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Ben Pfaff [Thu, 4 Oct 2012 22:53:14 +0000 (15:53 -0700)]
Fix vswitch-idl.ovsidl build rule with separate source and build dirs.
Before commit
e3a880272 (lib: Specify idl location more precisely.), the
files named in VSWITCH_IDL_FILES were relative to the source directory.
That commit made them inconsistent: one remained relative to the source
directory, the other became relative to the build directory. This meant
that if the source and build directories differed, the ovsdb-idlc
invocation had no change of succeeding.
This commit fixes the problem by making the file names consistently
relative to the build directory and then adjusting the ovsdb-idlc
invocation to expect that.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Jesse Gross [Thu, 4 Oct 2012 20:34:36 +0000 (13:34 -0700)]
datapath: Print device when warning about over MTU packets.
If an attempt is made to transmit a packet that is over the device's
MTU then we log it using the datapath's name. However, it is much
more helpful to use the device name instead.
Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Kyle Mestery <kmestery@cisco.com>
Ethan Jackson [Wed, 3 Oct 2012 22:58:54 +0000 (15:58 -0700)]
tests: Allow environment specified autom4te.
In the ESX build system, autom4te is in a funny location specified
by an environment variable. Before this patch, this environment
variable was overridden by the tests automake file.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Ethan Jackson [Wed, 3 Oct 2012 22:58:27 +0000 (15:58 -0700)]
lib: Specify idl location more precisely.
For some reason, the ESX build tools seem to be confused about the
location of 'lib'. This patch specifies it more directly.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Simon Horman [Thu, 4 Oct 2012 02:41:16 +0000 (11:41 +0900)]
ofp-util: Set Packet In Format: Use prevailing OpenFlow version
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Jesse Gross [Wed, 3 Oct 2012 18:29:05 +0000 (11:29 -0700)]
flow: Fix struct flow size build assertion failure.
The new struct flow_tnl contains an extra four bytes of padding on
64-bit machines but we currently assert that the total struct flow
is a fixed size. The size difference isn't actually a problem
because both are multiples of 4 and the build assertion is only
intended to remind people to update FLOW_WC_SEQ when new fields are
added. This changes the assertion to fix just the non-tunnel field
size.
Suggested-by: Ben Pfaff <blp@nicira.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
Jesse Gross [Fri, 14 Sep 2012 03:11:08 +0000 (20:11 -0700)]
flow: Extend struct flow to contain tunnel outer header.
Soon the kernel will begin supplying the information about the outer
IP header for tunneled packets and userspace will need to be able to
track it as part of the flow. For the time being this is only used
internally by OVS and not exposed outwards to OpenFlow. As a result,
this threads the information throughout userspace but simply stores
the existing tun_id in it.
Signed-off-by: Jesse Gross <jesse@nicira.com>
Ed Maste [Tue, 2 Oct 2012 15:45:23 +0000 (15:45 +0000)]
tests: jemalloc debug config for FreeBSD 9 and 10.
Signed-off-by: Ed Maste <emaste@adaranet.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ed Maste [Mon, 1 Oct 2012 21:11:31 +0000 (21:11 +0000)]
tests: Also enable FreeBSD libc debugging
Signed-off-by: Ed Maste <emaste@adaranet.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ben Pfaff [Mon, 1 Oct 2012 20:37:57 +0000 (13:37 -0700)]
tests: Enable glibc malloc debugging features in testsuite.
I don't know of a reason not to use these features for testing.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Kyle Mestery <kmestery@cisco.com>
Ben Pfaff [Mon, 1 Oct 2012 20:37:47 +0000 (13:37 -0700)]
ovs-ctl: Add support for glibc malloc debugging.
Unlike valgrind, glibc's built-in features for malloc debugging are cheap
enough that one can run with them enabled all the time, at least in test
scenarios.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Kyle Mestery <kmestery@cisco.com>
Ben Pfaff [Mon, 1 Oct 2012 20:22:35 +0000 (13:22 -0700)]
FAQ: Describe how bonded ports interact with OpenFlow.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Kyle Mestery <kmestery@cisco.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Simon Horman [Mon, 1 Oct 2012 07:51:49 +0000 (16:51 +0900)]
ofp-util: Use table_id in OF1.1 and OF1.2 Flow Remove Messages
Previously this field was ignored on decode and
set to zero on encode
Signed-off-by: Simon Horman <horms@verge.net.au>
[blp@nicira.com changed "missing" value, removed OFPTT_ALL]
Signed-off-by: Ben Pfaff <blp@nicira.com>
Simon Horman [Mon, 1 Oct 2012 07:24:21 +0000 (16:24 +0900)]
ofproto: Add del-flow based on table-id tests
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ed Maste [Fri, 28 Sep 2012 21:06:41 +0000 (21:06 +0000)]
lib: Add xpipe_nonblocking helper
Signed-off-by: Ed Maste <emaste@adaranet.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Simon Horman [Fri, 28 Sep 2012 05:59:10 +0000 (14:59 +0900)]
ofp-actions: Add parsing of set_field actions
Based heavily on work by Isaku Yamahata <yamahata@valinux.co.jp>
Cc: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Simon Horman <horms@verge.net.au>
[blp@nicira.com adjusted documentation, added test]
Signed-off-by: Ben Pfaff <blp@nicira.com>
Simon Horman [Fri, 28 Sep 2012 06:07:08 +0000 (15:07 +0900)]
ofproto: Rationalise comments in handle_flow_mod().
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ethan Jackson [Thu, 20 Sep 2012 18:13:15 +0000 (11:13 -0700)]
idl: Optionally warn when writing to read-write columns.
ovs-vswitchd should only write to write-only columns. Furthermore,
writing to a column which is not write-only can cause serious
performance degradations. This patch causes ovs-vswitchd to log
and reject writes to read-write columns.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Isaku Yamahata [Thu, 27 Sep 2012 09:29:45 +0000 (18:29 +0900)]
python/ovs/db/idl: getattr(Row) raises TypeError, not AttributeError.
In some cases getattr(Row instance, attrname) doesn't raise AttributeError,
but TypeError
> File "python/ovs/db/idl.py", line 554, in __getattr__
> datum = self._data[column_name]
> TypeError: 'NoneType' object has no attribute '__getitem__'
So getattr(Row instance, attrname, default value) doesn't work.
This occurs when row._changes doesn't include attrname and row._data is None.
So teach Row.__getattr__ _data=None case.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Isaku Yamahata [Thu, 27 Sep 2012 02:18:16 +0000 (11:18 +0900)]
pstream: Add set_dscp method.
Introduce set_dscp method to pstream.
This will be used by dynamic dscp change of listening socket.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Isaku Yamahata [Wed, 26 Sep 2012 07:12:06 +0000 (16:12 +0900)]
socket-util: export set_dscp()
It will be used later for dynamic dscp change to listening socket.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Isaku Yamahata [Wed, 26 Sep 2012 07:12:05 +0000 (16:12 +0900)]
stream-provider: remove stale declaration of stream_set_dscp()
It isn't defined anywhere.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ben Pfaff [Wed, 26 Sep 2012 17:02:40 +0000 (10:02 -0700)]
dpif-netdev: Remove unneeded 'key' parameter from dp_netdev_flow_used().
The 'key' passed to dp_netdev_flow_used() is the same as the 'key' member
in the struct dp_netdev_flow also passed to the function.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Ben Pfaff [Wed, 26 Sep 2012 16:59:21 +0000 (09:59 -0700)]
ofproto-dpif: Report in trace "output" if an "output" action is ignored.
This would have saved some time and puzzlement earlier today.
Reported-by: Paul Ingram <paul@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Ben Pfaff [Wed, 26 Sep 2012 16:57:28 +0000 (09:57 -0700)]
Deprecate referring to ports by name in ovs-ofctl.
This is a necessary step toward supporting full 32-bit OF1.1+ port numbers
in a later version of OVS.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Isaku Yamahata [Mon, 24 Sep 2012 20:11:11 +0000 (13:11 -0700)]
ofp-actions: Add support for OpenFlow 1.2 "set-field" action.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Simon Horman <horms@verge.net.au>
[blp@nicira.com extracted this code from a larger patch by above, so:]
Signed-off-by: Ben Pfaff <blp@nicira.com>
[regarding final version of patch:]
Reviewed-by: Simon Horman <horms@verge.net.au>
Ben Pfaff [Mon, 24 Sep 2012 20:18:38 +0000 (13:18 -0700)]
ofp-actions: Allow OF1.1+ actions to be variable-length.
Previously there was no need for this, because all implemented standard
OpenFlow actions had a fixed length, but the OF1.2 "set-field" action (soon
to be implemented) is variable length.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Reviewed-by: Simon Horman <horms@verge.net.au>
Ben Pfaff [Tue, 25 Sep 2012 17:23:38 +0000 (10:23 -0700)]
ofp-actions: Prepare to treat OF1.2 actions as OF1.1 actions.
The numbering of OpenFlow 1.0 actions overlaps with the numbering
of OpenFlow 1.1+ actions, so the two sets of actions have to be
distinguished for input and output. But OpenFlow 1.1 and 1.2
actions are numbered to avoid this problem, so there is no need
to distinguish them in the same way. Therefore, this commit
prepares to treat them together.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Reviewed-by: Simon Horman <horms@verge.net.au>
Ben Pfaff [Mon, 24 Sep 2012 20:11:37 +0000 (13:11 -0700)]
openflow-1.2: Remove OFPAT12_* definitions that duplicate OFPAT11_* ones.
OpenFlow 1.1 and 1.2 action numbering is compatible, in that no
OpenFlow 1.2 action uses an OpenFlow 1.1 action number in a different
way from OpenFlow 1.1. So it's confusing and unnecessary to have
separate definitions for these numbers.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Reviewed-by: Simon Horman <horms@verge.net.au>
Jesse Gross [Wed, 19 Sep 2012 16:36:19 +0000 (09:36 -0700)]
packets: Add ECN constants.
Upcoming tunnel code will be able to handle ECN encapsulation/
decapsulation in userspace. This adds the necessary constants for ECN
manipulation.
Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Kyle Mestery <kmestery@cisco.com>
Jesse Gross [Tue, 25 Sep 2012 20:22:08 +0000 (13:22 -0700)]
netdev-vport: Fix ToS/TTL mixup in unparsing.
When unparsing the kernel tunnel configuration, TTL was incorrectly
converted to "tos". Although it leads to confusing configuration
output, actual operation is not affected.
Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Kyle Mestery <kmestery@cisco.com>
Ben Pfaff [Fri, 7 Sep 2012 17:07:03 +0000 (10:07 -0700)]
ovsdb-server: Add support for multiple databases.
The OVSDB protocol has supported multiple databases for a long time, but
the ovsdb-server implementation only supported one database at a time.
This commit adds support for multiple databases.
Feature #12353.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Ben Pfaff [Fri, 21 Sep 2012 18:16:34 +0000 (11:16 -0700)]
ovsdb-server: Add --enable-dummy option for unit tests.
This will allow an upcoming unit test to use the "time/warp" ovs-appctl
command with ovsdb-server.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Ben Pfaff [Fri, 21 Sep 2012 18:12:39 +0000 (11:12 -0700)]
ovsdb-server: Fix null pointer deref when bool "is_connected" is empty.
The ovsdb-server supports obtaining its remote connection targets from a
database table and updating that table with connection status information.
One of the supported connection status columns is a boolean column named
"is_connected". The code in ovsdb-server blindly assigned a bool into
this column without checking that it actually had space allocated for one.
This was and is fine with the ovs-vswitchd schema, which always has exactly
one value in this column. However, if a database schema makes this column
optional, and there are actually no values in it, then this assignment
dereferences a null pointer.
This commit fixes the problem by allocating space for a bool if none has
yet been allocated.
Noticed while adding an extra test for the connection status feature.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Ben Pfaff [Thu, 6 Sep 2012 18:11:45 +0000 (11:11 -0700)]
ovsdb-client: Make "list-dbs" print the list of databases in sorted order.
This makes the command's behavior more predictable when there is more than
one database.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Ben Pfaff [Thu, 6 Sep 2012 18:11:12 +0000 (11:11 -0700)]
ovsdb-client: Use svec instead of sset for list of database.
This will make it easier to print a list of databases in sorted order,
which will happen in a followup commit.
This commit should have no effect on visible OVS behavior.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Ben Pfaff [Thu, 6 Sep 2012 23:20:17 +0000 (16:20 -0700)]
ovs-lib: Move DAEMON_CWD initialization to top of file.
All the other variables are initialized at the top and I don't see a reason
that this variable is special.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Ben Pfaff [Thu, 6 Sep 2012 23:15:18 +0000 (16:15 -0700)]
ovsdb-tool: Fix indentation in manpage.
This paragraph is about show-log so it should be indented the same as the
other paragraph about show-log.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Ben Pfaff [Thu, 6 Sep 2012 22:41:11 +0000 (15:41 -0700)]
unixctl: Fix comment on unixctl_command_register().
The arguments to the callback were changed some time ago but the comment
still described the older form.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
Simon Horman [Fri, 21 Sep 2012 00:26:43 +0000 (09:26 +0900)]
flow: Only show IPv4 flow information for IPv4 flows
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Anupam Chanda [Thu, 20 Sep 2012 17:35:52 +0000 (10:35 -0700)]
ofproto: Fix uninitialized field in ofputil_flow_update.
Two instances of ofputil_flow_update had the priority field uninitialized.
This would cause flow updates to contain undefined priority values.
This bug was introduced by commit
81a76618 (classifier: Break cls_rule
'flow' and 'wc' members into new "struct match".)
Signed-off-by: Anupam Chanda <achanda@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Ethan Jackson [Thu, 20 Sep 2012 02:21:06 +0000 (19:21 -0700)]
bridge: Omit alerts on the cfm_remote_opstate column.
This column should be write only, otherwise every call to update it
has to make a trip to the database. Since this column is updated
every time through the run loop as part of refresh_instant_stats(),
this patch fixes a significant performance degradation.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Ben Pfaff [Thu, 20 Sep 2012 15:40:29 +0000 (08:40 -0700)]
ovs-ofctl: Accept port keywords, OF1.1 port numbers, reject port number 0.
OpenFlow 1.0 has special reserved ports in the range 0xfff8 to 0xffff.
OpenFlow 1.1 and later has the same ports in the range 0xfffffff8 to
0xffffffff and allows the OF1.0 range to be used for ordinary ("physical")
switch ports. This means that, naively, the meaning of a port number in
the range 0xfff8 to 0xffff given on the ovs-ofctl command line depends on
the protocol in use. This commit implements something a little smarter:
- Accept keyword names (e.g. LOCAL) for special reserved ports
everywhere that such a port can plausibly be used (previously they
were only accepted in some places).
- Translate 0xfff8...0xffff to 0xfffffff8...0xffffffff for now, since
OF1.1+ isn't in widespread use and those particular ports aren't
likely to be in use in OF1.1+ anyway.
- Log warnings about those ports when they are specified by number, to
allow users to fix their invocations.
Also:
- Accept the OF1.1+ port numbers for these ports, without warning, for
compatibility with the upcoming OF1.1+ support.
- Stop accepting port number 0, which has never been a valid port
number in OpenFlow 1.0 and later. (This required fixing some tests
that inadvertently used this port number).
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Simon Horman <horms@verge.net.au>
Ben Pfaff [Wed, 19 Sep 2012 22:38:29 +0000 (15:38 -0700)]
ofp-actions: Improve explanation of 'compat' member in struct ofpact.
Suggested-by: Justin Pettit <jpettit@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Peter Senna Tschudin [Wed, 19 Sep 2012 00:09:46 +0000 (17:09 -0700)]
datapath: Remove unecessary semicolon
Found by http://coccinelle.lip6.fr/
Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>