sliver-openvswitch.git
12 years agopackets: Add more utility functions for IPv4 and IPv6 addresses.
Ben Pfaff [Wed, 17 Aug 2011 17:55:15 +0000 (10:55 -0700)]
packets: Add more utility functions for IPv4 and IPv6 addresses.

We had these functions scattered around the source tree anyway.  packets.h
is a good place to centralize them.

I do plan to introduce some additional callers.

12 years agoclassifier: Change cls_rule_set_nd_target() to take a pointer.
Ben Pfaff [Mon, 12 Sep 2011 17:57:28 +0000 (10:57 -0700)]
classifier: Change cls_rule_set_nd_target() to take a pointer.

The other cls_rule_*() functions that take IPv6 addresses take a pointer
to an in6_addr, so cls_rule_set_nd_target() should as well for consistency.
Possibly this is more efficient also, although I guess it doesn't really
make much of a difference either way.

12 years agobridge: Don't update CFM on synthetic interfaces.
Ethan Jackson [Tue, 13 Sep 2011 05:39:01 +0000 (22:39 -0700)]
bridge: Don't update CFM on synthetic interfaces.

Synthetic interfaces don't have database records so it doesn't make
sense to update them.  In some situations this could cause a
segmentation fault.

Reported-by: Paul Ingram <paul@nicira.com>
Bug #7278.

12 years agotests: Test ofproto-dpif set_tunnel translation.
Ethan Jackson [Tue, 13 Sep 2011 00:19:13 +0000 (17:19 -0700)]
tests: Test ofproto-dpif set_tunnel translation.

This patch adds a unit test which would have caught the issue fixed
in Commit 2446268e "ofproto-dpif: set_tunnel when required to."

12 years agoofproto-dpif: Emit set_tunnel when required to.
Ethan Jackson [Mon, 12 Sep 2011 23:56:21 +0000 (16:56 -0700)]
ofproto-dpif: Emit set_tunnel when required to.

ofproto-dpif assumed that the datapath initialized the tun_id of a
flow on egress, to its tun_id on ingress.  For this reason, if
OpenFlow actions set the tun_id to a flow's ingress tun_id,
ofproto-dpif would fail to emit a set_tunnel action.

Reported-by: Igor Ganichev <iganichev@nicira.com>
Reported-by: Pankaj Thakkar <thakkar@nicira.com>
12 years agodatapath: Strip down vport interface : OVS_VPORT_ATTR_MTU
Pravin Shelar [Tue, 13 Sep 2011 00:12:52 +0000 (17:12 -0700)]
datapath: Strip down vport interface : OVS_VPORT_ATTR_MTU

There is no need to have vport attribute MTU (OVS_VPORT_ATTR_MTU) as
linux net-dev-ioctl can be used to get/set MTU for linux device.
Following patch removes OVS_VPORT_ATTR_MTU from datapath protocol.

This patch also adds netdev_set_mtu interface. So that MTU adjustments
can be done from OVS userspace. get_mtu() interface is also changed, now
get_mtu() returns EOPNOTSUPP rather than returning 0 and setting *pmtu
to INT_MAX in case there is no MTU attribute for given device.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
12 years agoofproto-dpif: Fix check for 802.1Q header in commit_odp_actions().
Ben Pfaff [Mon, 12 Sep 2011 17:49:55 +0000 (10:49 -0700)]
ofproto-dpif: Fix check for 802.1Q header in commit_odp_actions().

The 'vlan_tci' member of struct flow has value 0, not OFP_VLAN_NONE, when
there is no 802.1Q header.

Fixes a problem introduced in commit d9065a90b6b "datapath: VLAN actions
should use push/pop semantics."

Found by sparse.

CC: Pravin Shelar <pshelar@nicira.com>
12 years agoNEWS: Mention support for keys in CAPWAP.
Jesse Gross [Mon, 12 Sep 2011 17:43:46 +0000 (10:43 -0700)]
NEWS: Mention support for keys in CAPWAP.

12 years agoDebian: fail gracefully if modules can't be loaded on install
Simon Horman [Sat, 10 Sep 2011 06:09:31 +0000 (15:09 +0900)]
Debian: fail gracefully if modules can't be loaded on install

By registering an error-handler for the init script used
in openvswitch-switch.postinst and detecting if module insertion fails,
it is possible to avoid failure to install in the case where the
openvswitch_mod module is not available.

This is done without altering the behaviour that the start target
of the openvswitch-switch init script will fail if module insertion fails.

This patch also adds a friendly hint as as to why starting
openvswitch-switch has failed if it is due to failure to insert
the openvswtich_mod. This message is displayed as necessary both
on package install and other calls to the start target of the
init script.

[Ben Pfaff fixed up == to = in postinst]

12 years agodatapath: add key support to CAPWAP tunnel
Valient Gough [Wed, 24 Aug 2011 06:12:06 +0000 (15:12 +0900)]
datapath: add key support to CAPWAP tunnel

Add tunnel key support to CAPWAP vport.  Uses the optional WSI field in a
CAPWAP header to store a 64bit key.  It can also be used without keys, in which
case it is backward compatible with the old code.  Documentation about the
WSI field format is in CAPWAP.txt.

Signed-off-by: Valient Gough <vgough@pobox.com>
[horms@verge.net.au: Various minor fixes (v4.1)]
Signed-off-by: Simon Horman <horms@verge.net.au>
[jesse: Additional parsing fixes]
Signed-off-by: Jesse Gross <jesse@nicira.com>
12 years agodatapath: Improve kernel hash table
Pravin Shelar [Sat, 10 Sep 2011 02:09:47 +0000 (19:09 -0700)]
datapath: Improve kernel hash table

 Currently OVS uses its own hashing implmentation for hash tables
which has some problems, e.g. error case on deletion code.
Following patch replaces that with hlist based hash table which is
consistent with other kernel hash tables. As Jesse suggested, flex-array
is used for allocating hash buckets, So that we can have large
hash-table without large contiguous kernel memory.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
12 years agodatapath: VLAN actions should use push/pop semantics
Pravin Shelar [Sat, 10 Sep 2011 01:13:26 +0000 (18:13 -0700)]
datapath: VLAN actions should use push/pop semantics

Currently the kernel vlan actions mirror those used by OpenFlow 1.0.
i.e. MODIFY and STRIP. More flexible approach is to have an action to
push a tag and pop a tag off, so that it can handle multiple levels of vlan
tags. Plus it aligns with newer version of OpenFlow.
        As this patch replaces MODIFY with PUSH semantic, action
mapping done in userpace is fixed accordingly.
        GSO handling for multiple levels of vlan tags is also added as
Jesse suggested before.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
12 years agodatapath: Fix br_nlmsg_size
Pravin Shelar [Sat, 10 Sep 2011 00:07:35 +0000 (17:07 -0700)]
datapath: Fix br_nlmsg_size

I missed this in last vport iflink patch.
    As IFLA_LINK is not be passed in netlink msg there is no need to
allocate space for it.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
12 years agonetlink-socket: Avoid use-after-free in nl_lookup_genl_mcgroup().
Ben Pfaff [Fri, 9 Sep 2011 17:21:49 +0000 (10:21 -0700)]
netlink-socket: Avoid use-after-free in nl_lookup_genl_mcgroup().

Commit e408762f "netlink-socket: New function nl_lookup_genl_mcgroup()"
modified do_lookup_genl_family() to return the Netlink attributes to the
caller, but it still freed the Netlink message itself, which meant that
the attributes pointed into freed memory.  This commit fixes the problem.

This commit is not a minimal fix.  It refactors do_lookup_genl_family(),
changing the return value from "negative errno value or positive genl
family id" to the more common "zero or positive errno value".

Found by valgrind.

12 years agobridge: Avoid reading uninitialized data in bridge_pick_local_hw_addr().
Ben Pfaff [Fri, 9 Sep 2011 17:12:32 +0000 (10:12 -0700)]
bridge: Avoid reading uninitialized data in bridge_pick_local_hw_addr().

Commit 3a48ace3 "bridge: Make bridge_pick_local_hw_addr() easier to reason"
didn't initialize 'ea' before trying to compare against it.  We need to
check that an address has been found.

Found by valgrind.

12 years agocfm: Write remote MPIDs to the database.
Ethan Jackson [Fri, 26 Aug 2011 21:54:34 +0000 (14:54 -0700)]
cfm: Write remote MPIDs to the database.

A controller may want to know which MPIDs are reachable from an
interface configured with CFM.  This patch regularly writes this
information to the database.

Bug #7014.

12 years agocfm: Eight byte MPIDs in extended mode.
Ethan Jackson [Thu, 1 Sep 2011 20:28:25 +0000 (13:28 -0700)]
cfm: Eight byte MPIDs in extended mode.

802.1ag only allows for MPIDs in the range [1, 8191].  This is
restrictive enough to make assignment of MPIDs to instances of OVS
awkward.  This patch allows eight byte MPIDs when running in
extended mode.

Bug #7014.

12 years agocfm: Allow accurate transmission intervals in extended mode.
Ethan Jackson [Wed, 31 Aug 2011 00:37:15 +0000 (17:37 -0700)]
cfm: Allow accurate transmission intervals in extended mode.

The standard CFM protocol only allows a handful of transmission
rates.  This is particularly problematic if you want to support a
transmission rate slower than 100 ms and faster than 1000 ms.

This patch allows arbitrary transmission rates (between 1 ms and
65535 ms).  It does this by commandeering parts of a reserved
"zero" field in the ccm message.  This breaks wire compatibility
with standard 802.1ag implementations, and thus is only supported
in extended mode.

Bug #7014.

12 years agocfm: New cfm extended mode.
Ethan Jackson [Wed, 31 Aug 2011 00:37:06 +0000 (17:37 -0700)]
cfm: New cfm extended mode.

The new extended mode introduced in this patch will be used for
features which break wire compatibility with 802.1ag compliant
implementations.

Bug #7014.

12 years agocfm: Remove cfm_remote_mpid configuration.
Ethan Jackson [Fri, 19 Aug 2011 20:58:56 +0000 (13:58 -0700)]
cfm: Remove cfm_remote_mpid configuration.

According to the 802.1ag specification, users should be able to
configure the CFM module with a list of remote endpoints with which
the local endpoint should have connectivity.  Commit 93b8df3853
"cfm: Remove Maintenance_Point and Monitor tables." changed the
behavior so that only one remote endpoint could be specified.  This
commit takes it further, by disallowing specification of any
remote endpoints.

Due to this change, the semantics of the fault flag are slightly
different.  Before, a fault was triggered if any of the configured
remote endpoints were unreachable (or with RDI), or if any
unconfigured remote endpoints were reachable.  Now a fault is
triggered if no remote endpoints are reachable at all, or if
reachable endpoints have set their RDI.

Bug #7014.

12 years agocfm: Trigger fault on unexpected CCM reception.
Ethan Jackson [Tue, 30 Aug 2011 01:56:28 +0000 (18:56 -0700)]
cfm: Trigger fault on unexpected CCM reception.

12 years agobridge: Clear fault when CFM is not configured.
Ethan Jackson [Wed, 7 Sep 2011 00:13:24 +0000 (17:13 -0700)]
bridge: Clear fault when CFM is not configured.

12 years agobridge: Write CFM changes more aggressively.
Ethan Jackson [Thu, 8 Sep 2011 23:15:36 +0000 (16:15 -0700)]
bridge: Write CFM changes more aggressively.

This patch no longer rate limits database updates due to CFM
changes.  Due to recent changes, the fault status of CFM only
changes once per 3.5 tx_interval seconds.  There doesn't seem to be
a good reason to add an additional rate limit on top of this.

12 years agobridge: ovsdb_idl_omit_alert() on additional columns.
Ethan Jackson [Thu, 8 Sep 2011 23:19:10 +0000 (16:19 -0700)]
bridge: ovsdb_idl_omit_alert() on additional columns.

The bridge owns the lacp_current and cfm_fault columns and should
not be alerted when they change.

12 years agoofproto: Document that ->rule_construct() should uninitialize victim rules.
Ben Pfaff [Fri, 9 Sep 2011 19:45:15 +0000 (12:45 -0700)]
ofproto: Document that ->rule_construct() should uninitialize victim rules.

The comments didn't say how this should work, so this clarifies it.

12 years agoofproto: Fix documentation for calls to ->rule_destruct().
Ben Pfaff [Thu, 8 Sep 2011 23:22:38 +0000 (16:22 -0700)]
ofproto: Fix documentation for calls to ->rule_destruct().

This documented what I intended to implement and what I thought I had
implemented, but not what the code actually did.  It is a little easier to
fix the documentation to match the implementation than vice versa, so this
commit does so.

Reported-by: Hao Zheng <hzheng@nicira.com>
12 years agoofproto-dpif: Drop special packets more judiciously.
Ethan Jackson [Wed, 31 Aug 2011 01:19:48 +0000 (18:19 -0700)]
ofproto-dpif: Drop special packets more judiciously.

Before this patch, ofproto-dpif would not forward any LACP or CFM
packets regardless of whether or not the relevant modules were
configured on the in_port.

Feature #6316.

12 years agolacp: Clean up LACP module interface.
Ethan Jackson [Wed, 31 Aug 2011 01:17:27 +0000 (18:17 -0700)]
lacp: Clean up LACP module interface.

There's no particular reason to force users of the LACP module to
be aware of the lacp_pdu structure.  This patch hides that
information in the LACP module implementation.  This results in
slightly cleaner code which is more consistent with the CFM
module.

12 years agovswitch.xml: Whitespace cleanup.
Ethan Jackson [Wed, 31 Aug 2011 01:46:50 +0000 (18:46 -0700)]
vswitch.xml: Whitespace cleanup.

12 years agodatapath: Allow a packet with no input port to omit OVS_KEY_ATTR_IN_PORT.
Ben Pfaff [Thu, 8 Sep 2011 23:30:20 +0000 (16:30 -0700)]
datapath: Allow a packet with no input port to omit OVS_KEY_ATTR_IN_PORT.

When ovs-vswitchd executes actions on a synthesized packet, that is, on a
packet that is not being forwarded from any particular port but is being
generated by ovs-vswitchd itself or by an OpenFlow controller (using a
OFPT_PACKET_OUT message with an in_port of OFPP_NONE), there is no good
choice for the in_port to pass to the kernel in the flow in the
OVS_PACKET_CMD_EXECUTE message.  This commit allows ovs-vswitchd to omit
the in_port entirely in this case.

This fixes a bug in OFPT_PACKET_OUT: using an in_port of OFPP_NONE would
cause the packet to be dropped by the kernel, since that's an invalid
input port.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
Reported-by: Aaron Rosen <arosen@clemson.edu>
12 years agodatapath: Calculate flow hash after extracting metadata.
Jesse Gross [Thu, 8 Sep 2011 22:32:24 +0000 (15:32 -0700)]
datapath: Calculate flow hash after extracting metadata.

When we execute a packet from userspace we first extract the header
fields from the packet and then add supplied metadata.  However, we
compute the hash of the packet in between these two steps despite
the fact that the metadata can affect the hash.  This can lead to
two separate hashes for packets of the same flow.

Found by code inspection, not an actual real-world problem.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
12 years agoStrip down vport interface : iflink
Pravin Shelar [Thu, 8 Sep 2011 22:18:42 +0000 (15:18 -0700)]
Strip down vport interface : iflink

Remove iflink from vport interface. iflink is not used anywhere in
OVS. So there is not need to have iflink as vport attribute.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
12 years agoovs-ctl: Add load-kmod command
Simon Horman [Wed, 7 Sep 2011 01:10:30 +0000 (10:10 +0900)]
ovs-ctl: Add load-kmod command

On Debian there is a need for the init scripts to die gracefully
if module insertion fails. In such a case it is desirable to print
some sort of informative message.

By adding the load-kmod sub-command to ovs-ctl init scripts
may try to load modules and take appropriate action on failure
or then try to start the daemons.

12 years agorhel: add ability to build kmod packages for arbitrary kernel version/variant(s)
Alexey I. Froloff [Wed, 7 Sep 2011 09:02:58 +0000 (13:02 +0400)]
rhel: add ability to build kmod packages for arbitrary kernel version/variant(s)

Usage:

rpmbuild --rebuild \
  -D 'kversion KERNEL_VERSION' \
  -D 'kflavors FLAVORS TO BUILD' \
  openvswitch-kmod-VERSION-RELEASE.src.rpm

Signed-off-by: Alexey I. Froloff <raorn@altlinux.org>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agorhel: rename RHEL6 kmod source package
Alexey I. Froloff [Thu, 1 Sep 2011 14:56:29 +0000 (18:56 +0400)]
rhel: rename RHEL6 kmod source package

Rename RHEL6 source package to openvswitch-kmod, so it doesn't intersect
with main package.

Signed-off-by: Alexey I. Froloff <raorn@altlinux.org>
Signed-off-by: Ben Pfaff <blp@nicira.com>
12 years agonetlink-protocol: Move CTRL_ATTR_MCAST definitions for consistency.
Ben Pfaff [Tue, 6 Sep 2011 16:33:26 +0000 (09:33 -0700)]
netlink-protocol: Move CTRL_ATTR_MCAST definitions for consistency.

One of the current goals of netlink-protocol.h, for better or for worse, is
to ensure that the same definitions are available whether a Linux kernel is
in use or not.  One of the ways it accomplishes this is by putting the
conditional definitions that test for features missing in old kernels at
the very end, after the dummy definitions used on non-Linux platforms.
However, commit b0025c8389f "netlink-protocol: Define missing symbols"
added new conditional definitions only in the Linux platform case, which
means that those definitions won't be available on non-Linux platforms.
This commit moves them to the end, instead.

The symbols that are moved are only used from netlink-socket.c, which is
only built on Linux platforms, so this does not change an actual bug.  It
only makes the location of the definitions consistent with prior practice.

12 years agonetlink-protocol: Define missing symbols.
Ethan Jackson [Fri, 2 Sep 2011 01:48:29 +0000 (18:48 -0700)]
netlink-protocol: Define missing symbols.

OVS fails to build with xenddk-56100build3926 because it has an
outdated genetlink header.

12 years agodpif-linux: Stop listening for RTNL notifications.
Ethan Jackson [Wed, 24 Aug 2011 23:21:10 +0000 (16:21 -0700)]
dpif-linux: Stop listening for RTNL notifications.

Currently dpif-linux listens for vport change events using
rtnetlink notifications.  This patch switches to the ovs genl
notification system.

Feature #6809.

12 years agodatapath: genl_notify() on port disappearances.
Ethan Jackson [Wed, 24 Aug 2011 00:20:00 +0000 (17:20 -0700)]
datapath: genl_notify() on port disappearances.

Before this patch, if a vport detached itself from the datapath
without interaction from userspace, rtnetlink notifications would
be sent, but genl notifications would not.

Feature #6809.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
12 years agonetlink-socket: New function nl_lookup_genl_mcgroup().
Ethan Jackson [Tue, 23 Aug 2011 20:13:34 +0000 (13:13 -0700)]
netlink-socket: New function nl_lookup_genl_mcgroup().

12 years agonetlink-notifier: Rename rtnetlink code.
Ethan Jackson [Wed, 24 Aug 2011 22:17:32 +0000 (15:17 -0700)]
netlink-notifier: Rename rtnetlink code.

This patch renames the rtnetlink module's code to "nln" for
"netlink notifier".  Callers are now required to pass in the
netlink protocol to he newly renamed nln_create() function.

12 years agolib: Rename rtnetlink.[ch] files.
Ethan Jackson [Thu, 25 Aug 2011 21:06:54 +0000 (14:06 -0700)]
lib: Rename rtnetlink.[ch] files.

The only rtnetlink specific functionality contained in the
rtnetlink module is the use of the NETLINK_ROUTE protocol.  This
can easily be passed in by callers.

In preparation for generalization, this patch renames
rtnetlink.[ch] to netlink-notifier.[ch].  Future patches will
complete the transition.

12 years agolacp: Clarify documentation.
Ethan Jackson [Wed, 31 Aug 2011 22:18:17 +0000 (15:18 -0700)]
lacp: Clarify documentation.

Requested-by: Dan Wendlandt <dan@nicira.com>
12 years agorhel: Poke iptables hole for gre in init scripts.
Ethan Jackson [Thu, 1 Sep 2011 00:56:07 +0000 (17:56 -0700)]
rhel: Poke iptables hole for gre in init scripts.

12 years agorhel: Add ovs-pki to rpm.
Ethan Jackson [Wed, 31 Aug 2011 19:33:21 +0000 (12:33 -0700)]
rhel: Add ovs-pki to rpm.

12 years agorhel: Don't delete bridges on boot.
Ethan Jackson [Wed, 31 Aug 2011 18:23:21 +0000 (11:23 -0700)]
rhel: Don't delete bridges on boot.

Before this patch, the RHEL init scripts would remove all bridges
configured on the system at boot.

12 years agodatapath: Disable LRO from userspace instead of the kernel.
Justin Pettit [Sat, 27 Aug 2011 06:34:40 +0000 (23:34 -0700)]
datapath: Disable LRO from userspace instead of the kernel.

Whenever a port is added to the datapath, LRO is automatically disabled.
In the future, we may want to enable LRO in some circumstances, so have
userspace disable LRO through the ethtool ioctls.

As part of this change, the MTU and LRO checks are moved to
netdev-vport's send(), which is where they're actually needed.

Feature #6810

Signed-off-by: Justin Pettit <jpettit@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
12 years agonetdev-linux: Introduce netdev_linux_ethtool_set_flag().
Justin Pettit [Wed, 17 Aug 2011 21:38:08 +0000 (14:38 -0700)]
netdev-linux: Introduce netdev_linux_ethtool_set_flag().

There will be a caller added soon.

12 years agocfm: Zero out empty field as required.
Ethan Jackson [Sat, 27 Aug 2011 00:12:21 +0000 (17:12 -0700)]
cfm: Zero out empty field as required.

Found with valgrind.

12 years agosocket-util: Suppress valgrind uninitialized use warning.
Ethan Jackson [Fri, 26 Aug 2011 23:55:07 +0000 (16:55 -0700)]
socket-util: Suppress valgrind uninitialized use warning.

12 years agoovs-monitor-ipsec: Don't abort if syslog is not available.
Ben Pfaff [Fri, 26 Aug 2011 23:46:16 +0000 (16:46 -0700)]
ovs-monitor-ipsec: Don't abort if syslog is not available.

If /dev/log doesn't exist or cannot be contacted, ovs-monitor-ipsec would
abort with an exception.  This allows it to start up and run.

It's pretty common for a chroot used for testing not to have a syslogd
instance set up and running, so this limitation caused testing problems.

Reported-by: Simon Horman <horms@verge.net.au>
Tested-by: Simon Horman <horms@verge.net.au>
12 years agobridge: Make bridge_pick_local_hw_addr() easier to reason.
Justin Pettit [Fri, 26 Aug 2011 22:05:53 +0000 (15:05 -0700)]
bridge: Make bridge_pick_local_hw_addr() easier to reason.

The use of eth_addr_is_multicast() to see if a reasonable address was
found always caused me momentary confusion.  This commit uses a flag
instead, and also saves a bit of unnecessary array reading and writing.

12 years agodebian: Transition to dh_python2
Simon Horman [Fri, 26 Aug 2011 09:03:42 +0000 (18:03 +0900)]
debian: Transition to dh_python2

dh_pysupport that the packaging used until now is deprecated, with
dh_python2 as its successor.

This commit removes the PYTHONPATH setting from
debian/openvswitch-ipsec.init because it is not needed, as the Python
packaging is public.  In fact, the Python packaging was public,
unintentionally, before, so the PYTHONPATH could have been removed earlier.

12 years agogitignore: Add manpage-check.
Ethan Jackson [Thu, 25 Aug 2011 23:03:25 +0000 (16:03 -0700)]
gitignore: Add manpage-check.

12 years agoovs.db.types: Remove write-only variable from constraintsToEnglish().
Ben Pfaff [Thu, 25 Aug 2011 00:09:27 +0000 (17:09 -0700)]
ovs.db.types: Remove write-only variable from constraintsToEnglish().

Found by pychecker.

12 years agopython: Remove unused imports.
Ben Pfaff [Thu, 25 Aug 2011 00:08:50 +0000 (17:08 -0700)]
python: Remove unused imports.

Found by pychecker.

12 years agoovs.stream: Remove unused parameter from usage().
Ben Pfaff [Thu, 25 Aug 2011 00:08:24 +0000 (17:08 -0700)]
ovs.stream: Remove unused parameter from usage().

This function has no callers.  We could delete it entirely, instead.

12 years agoovs.ovsuuid: Fix UUID.cInitUUID invocation of re.match with too few params.
Ben Pfaff [Thu, 25 Aug 2011 00:07:32 +0000 (17:07 -0700)]
ovs.ovsuuid: Fix UUID.cInitUUID invocation of re.match with too few params.

Found by pychecker.

12 years agoovs.jsonrpc: Fix static method Session.open() reference to 'self'.
Ben Pfaff [Thu, 25 Aug 2011 00:06:37 +0000 (17:06 -0700)]
ovs.jsonrpc: Fix static method Session.open() reference to 'self'.

Found by pychecker.

12 years agoovs.jsonrpc: Fix static method Message.__validate_arg reference to 'self'.
Ben Pfaff [Thu, 25 Aug 2011 00:06:11 +0000 (17:06 -0700)]
ovs.jsonrpc: Fix static method Message.__validate_arg reference to 'self'.

This method needs to be an instance method because it refers to 'self'.

Found by pychecker.

12 years agoovs.json: Use Exception, which exists, instead of Error, which doesn't.
Ben Pfaff [Thu, 25 Aug 2011 00:04:20 +0000 (17:04 -0700)]
ovs.json: Use Exception, which exists, instead of Error, which doesn't.

Found by pychecker.

12 years agoovs.db.idl: Fix error message format arguments.
Ben Pfaff [Thu, 25 Aug 2011 00:03:42 +0000 (17:03 -0700)]
ovs.db.idl: Fix error message format arguments.

There's no variable table_name.

Found by pychecker.

12 years agoovs.daemon: Add missing format string argument.
Ben Pfaff [Thu, 25 Aug 2011 00:01:14 +0000 (17:01 -0700)]
ovs.daemon: Add missing format string argument.

Found by pychecker.

12 years agoovs.daemon: Fix name of EALREADY error.
Ben Pfaff [Thu, 25 Aug 2011 00:00:46 +0000 (17:00 -0700)]
ovs.daemon: Fix name of EALREADY error.

Found by pychecker.

12 years agoovs.daemon: Add missing 'global' when setting _pidfile_dev, _pidfile_ino.
Ben Pfaff [Thu, 25 Aug 2011 00:00:15 +0000 (17:00 -0700)]
ovs.daemon: Add missing 'global' when setting _pidfile_dev, _pidfile_ino.

Found by pychecker.

12 years agoovs.db.idl: Fix call to ovs.db.parser.Parser constructor.
Ben Pfaff [Thu, 25 Aug 2011 18:06:53 +0000 (11:06 -0700)]
ovs.db.idl: Fix call to ovs.db.parser.Parser constructor.

This bug was introduced by commit 4c0f62718f "ovs.db.idl: Improve error
reporting for bad <row-update>s."

Found by pychecker.
Bug #7006.

12 years agodebian: Apply Ubuntu patch to add DKMS support.
Chuck Short [Tue, 23 Aug 2011 22:37:11 +0000 (15:37 -0700)]
debian: Apply Ubuntu patch to add DKMS support.

I tested that installing openvswitch-datapath-dkms worked OK on my own
Debian machine.

The bulk of this patch is taken from downstream Ubuntu DKMS support written
by Chuck Short <zulcss@ubuntu.com>, version 1.2.0-1ubuntu1.  I made the
following changes:

  * Update debian/.gitignore.

  * Update debian/automake.mk.

  * Correct description in debian/control (it was a cut-and-paste from
    the openvswitch-datapath-source description without editing).

  * Fix up for --with-l26 to --with-linux and datapath/linux-2.6 to
    datapath/linux transitions.

CC: Chuck Short <zulcss@ubuntu.com>
CC: Dave Walker <DaveWalker@ubuntu.com>
Acked-by: Simon Horman <horms@verge.net.au>
12 years agodocs: Add Makefile rule to check syntax of manpages.
Ben Pfaff [Wed, 24 Aug 2011 17:45:32 +0000 (10:45 -0700)]
docs: Add Makefile rule to check syntax of manpages.

This should catch future nroff syntax errors immediately, instead of much
later.

12 years agodocs: Fix some manpage syntax errors found with "groff".
Ben Pfaff [Wed, 24 Aug 2011 17:43:41 +0000 (10:43 -0700)]
docs: Fix some manpage syntax errors found with "groff".

12 years agopython: Use enumerate() builtin function to simplify counted iteration.
Ben Pfaff [Tue, 23 Aug 2011 21:43:54 +0000 (14:43 -0700)]
python: Use enumerate() builtin function to simplify counted iteration.

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.stream: Simplify logic in Stream.wait().
Ben Pfaff [Tue, 23 Aug 2011 18:16:57 +0000 (11:16 -0700)]
ovs.stream: Simplify logic in Stream.wait().

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.stream: Drop Stream.get_name() since clients can use 'name' directly.
Ben Pfaff [Tue, 23 Aug 2011 18:16:27 +0000 (11:16 -0700)]
ovs.stream: Drop Stream.get_name() since clients can use 'name' directly.

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.stream: Use %d in place of %ld since the two are equivalent in Python.
Ben Pfaff [Tue, 23 Aug 2011 17:47:53 +0000 (10:47 -0700)]
ovs.stream: Use %d in place of %ld since the two are equivalent in Python.

Reported-by: Reid Price <reid@nicira.com>
12 years agoovs.reconnect: Fix typo in documentation.
Ben Pfaff [Tue, 23 Aug 2011 18:33:08 +0000 (11:33 -0700)]
ovs.reconnect: Fix typo in documentation.

Reported-by: Reid Price <reid@nicira.com>
12 years agoovs.reconnect: Make Reconnect.Reconnect inherit from object.
Ben Pfaff [Tue, 23 Aug 2011 17:45:43 +0000 (10:45 -0700)]
ovs.reconnect: Make Reconnect.Reconnect inherit from object.

Reported-by: Reid Price <reid@nicira.com>
12 years agoovs.jsonrpc: Use "not X" in place of "len(X) == 0" for testing strings.
Ben Pfaff [Tue, 23 Aug 2011 17:43:26 +0000 (10:43 -0700)]
ovs.jsonrpc: Use "not X" in place of "len(X) == 0" for testing strings.

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.jsonrpc: Remove Connection.get_name()--clients can use 'name' directly.
Ben Pfaff [Tue, 23 Aug 2011 17:40:24 +0000 (10:40 -0700)]
ovs.jsonrpc: Remove Connection.get_name()--clients can use 'name' directly.

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.jsonrpc: Remove dead class variable Message.__next_id.
Ben Pfaff [Tue, 23 Aug 2011 17:37:39 +0000 (10:37 -0700)]
ovs.jsonrpc: Remove dead class variable Message.__next_id.

Reported-by: Reid Price <reid@nicira.com>
12 years agoovs.json: Optimize __dump_string().
Ben Pfaff [Wed, 24 Aug 2011 19:05:13 +0000 (12:05 -0700)]
ovs.json: Optimize __dump_string().

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.fatal_signal: Remove unnecessary "global" statement.
Ben Pfaff [Tue, 23 Aug 2011 17:31:22 +0000 (10:31 -0700)]
ovs.fatal_signal: Remove unnecessary "global" statement.

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.fatal_signal: Reorder definitions to be more easily readable.
Ben Pfaff [Tue, 23 Aug 2011 17:29:40 +0000 (10:29 -0700)]
ovs.fatal_signal: Reorder definitions to be more easily readable.

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.db.types: Introduce DEFAULT_MIN, DEFAULT_MAX as Type class members.
Ben Pfaff [Tue, 23 Aug 2011 17:06:04 +0000 (10:06 -0700)]
ovs.db.types: Introduce DEFAULT_MIN, DEFAULT_MAX as Type class members.

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.db.types: Use toAtomicType() instead of open-coding it.
Ben Pfaff [Tue, 23 Aug 2011 17:04:14 +0000 (10:04 -0700)]
ovs.db.types: Use toAtomicType() instead of open-coding it.

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.db.types: Simplify code to avoid try/except case.
Ben Pfaff [Tue, 23 Aug 2011 16:58:49 +0000 (09:58 -0700)]
ovs.db.types: Simplify code to avoid try/except case.

Also fixes a typo that caused one version of the error message to have a
hyphen and the other to have a space.

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.db.types: Use .append instead of += for adding to lists.
Ben Pfaff [Tue, 23 Aug 2011 21:00:54 +0000 (14:00 -0700)]
ovs.db.types: Use .append instead of += for adding to lists.

Python does not do a good job of appending lists to lists.

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.db.schema: Factor common checks for identifiers into new function.
Ben Pfaff [Tue, 23 Aug 2011 16:55:14 +0000 (09:55 -0700)]
ovs.db.schema: Factor common checks for identifiers into new function.

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.db.parser: Simplify code.
Ben Pfaff [Tue, 23 Aug 2011 16:36:56 +0000 (09:36 -0700)]
ovs.db.parser: Simplify code.

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.db.idl: Use top-level class to represent IDL rows.
Ben Pfaff [Tue, 23 Aug 2011 16:36:39 +0000 (09:36 -0700)]
ovs.db.idl: Use top-level class to represent IDL rows.

According to Reid, there may be some disadvantages to having this class be
anonymous, for example, cannot do instance/typechecking, might be
allocating a new class for every row as well, which isn't the most memory
efficient.

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.db.idl: Actually use Idl.__modify_row()'s return value.
Ben Pfaff [Tue, 23 Aug 2011 16:26:29 +0000 (09:26 -0700)]
ovs.db.idl: Actually use Idl.__modify_row()'s return value.

Idl.__parse_row_update() assumed that every change that the database server
sent down actually modified the database.  This is generally true, but
since Idl.__modify_row() already returns whether there was a change, we
might as well use it.

Reported-by: Reid Price <reid@nicira.com>
12 years agoovs.db.idl: Improve error reporting for bad <row-update>s.
Ben Pfaff [Tue, 23 Aug 2011 00:12:59 +0000 (17:12 -0700)]
ovs.db.idl: Improve error reporting for bad <row-update>s.

Strangely malformed <row-update>s could hypothetically get confusing error
message.  Using the Parser class should avoid that.

Reported-by: Reid Price <reid@nicira.com>
12 years agoovsdb-data: Simplify converting an OVSDB datum to JSON by reordering logic.
Ben Pfaff [Mon, 22 Aug 2011 21:52:21 +0000 (14:52 -0700)]
ovsdb-data: Simplify converting an OVSDB datum to JSON by reordering logic.

Putting the "map" case first avoids duplicate tests.

Suggested-by: Reid Price <reid@nicira.com>
12 years agodaemon: Stylistic improvement for __read_pidfile in Python implementation.
Ben Pfaff [Mon, 22 Aug 2011 21:40:09 +0000 (14:40 -0700)]
daemon: Stylistic improvement for __read_pidfile in Python implementation.

Suggested-by: Reid Price <reid@nicira.com>
12 years agodaemon: Correct comment in Python implementation.
Ben Pfaff [Mon, 22 Aug 2011 21:26:58 +0000 (14:26 -0700)]
daemon: Correct comment in Python implementation.

Reported-by: Reid Price <reid@nicira.com>
12 years agopython: Avoid using 'tuple' as a variable name.
Ben Pfaff [Tue, 23 Aug 2011 17:50:47 +0000 (10:50 -0700)]
python: Avoid using 'tuple' as a variable name.

'tuple' is a Python built-in function, so it's best to avoid using it as a
variable name.

Suggested-by: Reid Price <reid@nicira.com>
12 years agopython: Avoid using 'type' as a variable name.
Ben Pfaff [Tue, 23 Aug 2011 16:50:46 +0000 (09:50 -0700)]
python: Avoid using 'type' as a variable name.

'type' is a Python built-in function, so it's best to avoid using it as
a variable name.

Reported-by: Reid Price <reid@nicira.com>
12 years agopython: Take advantage of Python "x < y < z" syntax.
Ben Pfaff [Mon, 22 Aug 2011 23:49:53 +0000 (16:49 -0700)]
python: Take advantage of Python "x < y < z" syntax.

Suggested-by: Reid Price <reid@nicira.com>
12 years agopython: Avoid lots of \" in quoted strings by using '' as outermost quotes.
Ben Pfaff [Mon, 22 Aug 2011 23:54:28 +0000 (16:54 -0700)]
python: Avoid lots of \" in quoted strings by using '' as outermost quotes.

Suggested-by: Reid Price <reid@nicira.com>
12 years agopython: Join a list of strings instead of concatenating a long string.
Ben Pfaff [Tue, 23 Aug 2011 21:02:03 +0000 (14:02 -0700)]
python: Join a list of strings instead of concatenating a long string.

Python does not do a good job of appending strings: it takes O(n**2) time
to append n strings.

Suggested-by: Reid Price <reid@nicira.com>
12 years agopython: Use getattr() and setattr() instead of __dict__.
Ben Pfaff [Mon, 22 Aug 2011 21:31:18 +0000 (14:31 -0700)]
python: Use getattr() and setattr() instead of __dict__.

This leaves one use of __dict__ used for iterating through attributes.
I could use dir() instead, but I was put off by this note in its
documentation in the Python Library Reference:

    Because dir() is supplied primarily as a convenience for use at an
    interactive prompt, it tries to supply an interesting set of names more
    than it tries to supply a rigorously or consistently defined set of names,
    and its detailed behavior may change across releases.  For example,
    metaclass attributes are not in the result list when the argument is a
    class.

Suggested-by: Reid Price <reid@nicira.com>
12 years agoovs.db.data: Fix bugs in Atom.is_default() and Datum.is_default().
Ben Pfaff [Wed, 24 Aug 2011 18:57:14 +0000 (11:57 -0700)]
ovs.db.data: Fix bugs in Atom.is_default() and Datum.is_default().

Reported-by: Reid Price <reid@nicira.com>