openvswitch
16 years agorconn: Be pickier about what constitutes a successful connection.
Ben Pfaff [Fri, 10 Oct 2008 17:13:12 +0000 (10:13 -0700)]
rconn: Be pickier about what constitutes a successful connection.

When secchan is configured to "fail open" after failing to connect to
a controller for a period of time, it needs a heuristic for what
constitutes a successful connection.  Until now, that heuristic was
simply that when it received an OpenFlow message from the controller
(any OpenFlow message), it considered the connection successful.

However, this is no longer good enough, because NOX performs
admission control on connections after sending a number of OpenFlow
messages, in particular after doing OpenFlow version negotiation and
requesting the switch features (and receiving the reply).  Thus, this
commit adjusts the heuristic by only considering certain OpenFlow
messages to demonstrate that admission control checks have passed and
thus that the connection should be considered successful.

As a fallback, any connection that persists for 30 seconds or longer is
also considered successful.

An alternate and complementary approach (that this commit does not
implement) would be to use an OpenFlow error message to indicate why
the connection is closing.

Fixes bug #239.

16 years agoFix inaccurate log message.
Ben Pfaff [Fri, 10 Oct 2008 16:56:13 +0000 (09:56 -0700)]
Fix inaccurate log message.

16 years agoUpdate documentation to talk about userspace datapath.
Ben Pfaff [Thu, 9 Oct 2008 22:52:17 +0000 (15:52 -0700)]
Update documentation to talk about userspace datapath.

16 years agoRemove secchan dependence on Netlink for connecting to the datapath.
Ben Pfaff [Thu, 9 Oct 2008 18:13:09 +0000 (11:13 -0700)]
Remove secchan dependence on Netlink for connecting to the datapath.

16 years agoMake rconn_disconnect() a no-op if already disconnected.
Ben Pfaff [Wed, 8 Oct 2008 21:24:18 +0000 (14:24 -0700)]
Make rconn_disconnect() a no-op if already disconnected.

16 years agoNew function stp_set_bridge_id() to change the bridge ID of a running STP.
Ben Pfaff [Wed, 8 Oct 2008 21:11:08 +0000 (14:11 -0700)]
New function stp_set_bridge_id() to change the bridge ID of a running STP.

16 years agoNew function dhclient_get_netdev().
Ben Pfaff [Wed, 8 Oct 2008 21:09:37 +0000 (14:09 -0700)]
New function dhclient_get_netdev().

16 years agoImplement dhclient_destroy().
Ben Pfaff [Wed, 8 Oct 2008 21:09:18 +0000 (14:09 -0700)]
Implement dhclient_destroy().

This function has always been prototyped in dhcp-client.h, but it had
no users and never got implemented.

16 years agoAdd support for TAP virtual network devices in netdev.
Ben Pfaff [Tue, 7 Oct 2008 17:08:45 +0000 (10:08 -0700)]
Add support for TAP virtual network devices in netdev.

16 years agoFix use-after-free error.
Ben Pfaff [Mon, 6 Oct 2008 23:25:56 +0000 (16:25 -0700)]
Fix use-after-free error.

rconn_destroy() decrements the n_queued counters that are set up by
rconn_send(), so we need to destroy the rconn before we destroy anything
that used it.

(This system is more error-prone than I imagined.)

16 years agoUnconditionally set skb->dev in dp_set_origin.
Justin Pettit [Mon, 6 Oct 2008 22:51:06 +0000 (15:51 -0700)]
Unconditionally set skb->dev in dp_set_origin.

If an invalid port index was used in dp_set_origin, the value of skb->dev
was left unchanged.  This change causes skb->dev to be set to NULL in those
circumstances.  This makes Packet Out and Add Flow messages that use a
buffer id behave like Packet Out without a buffer id.

16 years agoProperly set in_port in skb for Flow Mod messages.
Justin Pettit [Mon, 6 Oct 2008 22:14:52 +0000 (15:14 -0700)]
Properly set in_port in skb for Flow Mod messages.

When a buffer id is placed in a Flow Mod message, the actions are expected to
be executed against the referenced packet.  The kernel implementation was
not setting the input device to what the controller was telling it to use.
Thanks to Natasha for catching this.

16 years agoIn ofp_packet_to_string(), make tcpdump print Ethernet headers also.
Ben Pfaff [Mon, 6 Oct 2008 16:38:05 +0000 (09:38 -0700)]
In ofp_packet_to_string(), make tcpdump print Ethernet headers also.

16 years agoAdd explanatory comment to make_unix_socket().
Ben Pfaff [Fri, 3 Oct 2008 22:10:31 +0000 (15:10 -0700)]
Add explanatory comment to make_unix_socket().

16 years agoNo longer necessary to obtain Ethernet header in netdev_send().
Ben Pfaff [Mon, 6 Oct 2008 16:49:15 +0000 (09:49 -0700)]
No longer necessary to obtain Ethernet header in netdev_send().

16 years agoNew function get_unix_name_len() to simplify code.
Ben Pfaff [Thu, 2 Oct 2008 21:31:29 +0000 (14:31 -0700)]
New function get_unix_name_len() to simplify code.

16 years agoMake ofp_error() preserve the value of errno.
Ben Pfaff [Tue, 30 Sep 2008 19:26:12 +0000 (12:26 -0700)]
Make ofp_error() preserve the value of errno.

16 years agoRandom Ethernet addresses should be private and should not be multicast.
Ben Pfaff [Mon, 6 Oct 2008 16:37:42 +0000 (09:37 -0700)]
Random Ethernet addresses should be private and should not be multicast.

16 years agoFix typo in comment.
Ben Pfaff [Wed, 1 Oct 2008 18:41:29 +0000 (11:41 -0700)]
Fix typo in comment.

16 years agoFix typo in comment.
Ben Pfaff [Tue, 30 Sep 2008 23:50:54 +0000 (16:50 -0700)]
Fix typo in comment.

16 years agoAdd support for vendor-defined and variable-length actions.
Justin Pettit [Fri, 3 Oct 2008 23:44:13 +0000 (16:44 -0700)]
Add support for vendor-defined and variable-length actions.

Allow vendors to define their own actions.  Actions were originally fixed-
length, which was a bit constraining.  Actions now contain a length field,
which gives them more flexibility.

16 years agoProperly allocate flow action blocks in user-space switch.
Justin Pettit [Tue, 30 Sep 2008 21:19:47 +0000 (14:19 -0700)]
Properly allocate flow action blocks in user-space switch.

The user-space switch was allocating blocks to hold actions in flows that
did not include the action header.

16 years agoShow OpenFlow wire version when pretty printing features reply.
Justin Pettit [Fri, 26 Sep 2008 22:28:41 +0000 (15:28 -0700)]
Show OpenFlow wire version when pretty printing features reply.

This allows easy detection of version number with "dpctl show".

16 years agoRemove kernel datapath unit tests.
Justin Pettit [Fri, 26 Sep 2008 21:58:17 +0000 (14:58 -0700)]
Remove kernel datapath unit tests.

The tests haven't been seeing much love and are suffering from bit-rot at
this point.  We're removing them, since we have other ways to test at
this point.

16 years agoAdded missing header file.
Justin Pettit [Fri, 26 Sep 2008 20:20:29 +0000 (13:20 -0700)]
Added missing header file.

16 years agoModify VLAN actions to support setting both VID and priority.
Justin Pettit [Thu, 25 Sep 2008 22:00:23 +0000 (15:00 -0700)]
Modify VLAN actions to support setting both VID and priority.

Stripping VLANs is now done through the OFPAT_STRIP_VLAN action (i.e., you
don't specify a magic value in the generirc VLAN action).  Also, it is now
possible to modify the priority bits associated with the VLAN tag through
the OFPAT_SET_VLAN_PCP action.  The OFPAT_SET_DL_VLAN has been renamed to
OFPAT_SET_VLAN_VID.

16 years agoRemove unused, obsolete attributes from OpenFlow netlink protocol.
Ben Pfaff [Wed, 24 Sep 2008 21:09:00 +0000 (14:09 -0700)]
Remove unused, obsolete attributes from OpenFlow netlink protocol.

16 years agoFix typo in comment.
Ben Pfaff [Wed, 24 Sep 2008 19:43:23 +0000 (12:43 -0700)]
Fix typo in comment.

16 years agoAvoid assertion failure connecting to unsupported remove OpenFlow host.
Ben Pfaff [Wed, 24 Sep 2008 16:44:08 +0000 (09:44 -0700)]
Avoid assertion failure connecting to unsupported remove OpenFlow host.

After increasing the length of an OpenFlow buffer, we need to update the
length in the OpenFlow header.

16 years agoDisable STP in secchan by default (but let --stp enable it).
Ben Pfaff [Tue, 23 Sep 2008 22:47:03 +0000 (15:47 -0700)]
Disable STP in secchan by default (but let --stp enable it).

16 years agoInitial checkin of OpenFlow specification LaTeX source.
Justin Pettit [Tue, 23 Sep 2008 22:34:49 +0000 (15:34 -0700)]
Initial checkin of OpenFlow specification LaTeX source.

This version of the specification does not reflect the current checked in
version of OpenFlow.  Checkins that follow should bring them in-line.  The
TeX version of the spec was produced by Brandon Heller.

16 years agostp: Turn off STP on ports that are disabled or have no link.
Ben Pfaff [Tue, 23 Sep 2008 18:24:30 +0000 (11:24 -0700)]
stp: Turn off STP on ports that are disabled or have no link.

Fixes a problem that a port that is disabled via "ifconfig down" does
not come back up properly when it is brought back up again with "ifconfig
up", if STP is enabled.

16 years agoCleanup printing of ofp_port_mod a bit.
Justin Pettit [Tue, 23 Sep 2008 18:22:03 +0000 (11:22 -0700)]
Cleanup printing of ofp_port_mod a bit.

16 years agostp: Increase hello time to 2 seconds.
Ben Pfaff [Tue, 23 Sep 2008 16:51:00 +0000 (09:51 -0700)]
stp: Increase hello time to 2 seconds.

An STP advertisement is sent after every expiry of the hello timer, so
this reduces STP advertisements to once every 2 seconds.

Once a second seemed like too often.

Suggested by Justin.

16 years agoMake sure to set 'port_no' in ofp_port_mod messages.
Justin Pettit [Tue, 23 Sep 2008 01:01:39 +0000 (18:01 -0700)]
Make sure to set 'port_no' in ofp_port_mod messages.

16 years agoFirst cut of pretty printer of ofp_port_mod messages.
Justin Pettit [Tue, 23 Sep 2008 00:59:50 +0000 (17:59 -0700)]
First cut of pretty printer of ofp_port_mod messages.

16 years agoFix some old references to OFPPFL_ in comments.
Justin Pettit [Tue, 23 Sep 2008 00:48:06 +0000 (17:48 -0700)]
Fix some old references to OFPPFL_ in comments.

16 years agoModify OpenFlow commands related to ports to be more expressive.
Justin Pettit [Mon, 22 Sep 2008 22:18:22 +0000 (15:18 -0700)]
Modify OpenFlow commands related to ports to be more expressive.

This new OpenFlow message format provides a cleaner interface and greater
detail and control over ports.  It is now possible to see what features
the switch's port is currently configured as having, what it's advertising,
and what it's capable of handling.  It is also possible to return the
features advertised by the port's peer.

16 years agoDrop port_watcher support for editing ports.
Ben Pfaff [Sat, 20 Sep 2008 00:03:24 +0000 (17:03 -0700)]
Drop port_watcher support for editing ports.

This was only needed for STP, which doesn't need it anymore.

16 years agoGet rid of per-port STP implemented bits, by reducing OFPP_MAX to 255.
Ben Pfaff [Sat, 20 Sep 2008 00:02:30 +0000 (17:02 -0700)]
Get rid of per-port STP implemented bits, by reducing OFPP_MAX to 255.

802.1D Spanning Tree Protocol supports a maximum of 255 ports per bridge,
but OpenFlow supported 256, so 1 port had to not implement STP.  This
gets rid of the problem by reducing the maximum number of ports to 255.

16 years agoUse device notifier in Linux kernel switch for detecting port status changes.
Justin Pettit [Fri, 19 Sep 2008 23:10:12 +0000 (16:10 -0700)]
Use device notifier in Linux kernel switch for detecting port status changes.

To report on link status and whether a port is administratively enabled or
disabled, the reference switches poll.  This change uses the Linux kernel's
device notification system, so that polling isn't necessary.

16 years agoAdd the ability to disable the STP implementation.
Ben Pfaff [Fri, 19 Sep 2008 22:37:53 +0000 (15:37 -0700)]
Add the ability to disable the STP implementation.

16 years agoFix boot.sh for the case where the extensions repository is not available.
Ben Pfaff [Fri, 19 Sep 2008 21:57:19 +0000 (14:57 -0700)]
Fix boot.sh for the case where the extensions repository is not available.

Reported by Justin.

16 years agovlogconf: Don't abort when given unknown option.
Ben Pfaff [Fri, 19 Sep 2008 20:19:21 +0000 (13:19 -0700)]
vlogconf: Don't abort when given unknown option.

16 years agoSlight improvement to printing of ofp_port_status messages.
Justin Pettit [Fri, 19 Sep 2008 09:00:06 +0000 (02:00 -0700)]
Slight improvement to printing of ofp_port_status messages.

16 years agoAdded lookup count to ofp_table_stats.
Justin Pettit [Fri, 19 Sep 2008 02:47:27 +0000 (19:47 -0700)]
Added lookup count to ofp_table_stats.

16 years agoUse "~" in designating beta versions to make version comparisons work. Also delete...
Justin Pettit [Thu, 18 Sep 2008 21:38:17 +0000 (14:38 -0700)]
Use "~" in designating beta versions to make version comparisons work.  Also delete "ext" submodule.

16 years agoUpdate pointer to "ext" to contain latest changes.
Justin Pettit [Thu, 18 Sep 2008 21:26:07 +0000 (14:26 -0700)]
Update pointer to "ext" to contain latest changes.

16 years agoFix failure to back off when vconn_open() fails immediately.
Ben Pfaff [Thu, 18 Sep 2008 16:47:18 +0000 (09:47 -0700)]
Fix failure to back off when vconn_open() fails immediately.

This typically would happen only with an entirely local vconn,
e.g. connecting to a Unix domain socket vconn.

16 years agoUpdate the ChangeLog with the changes since v0.8.1 and designate this v0.9.0-b1.
Justin Pettit [Thu, 18 Sep 2008 06:53:13 +0000 (23:53 -0700)]
Update the ChangeLog with the changes since v0.8.1 and designate this v0.9.0-b1.

16 years agoSuppress Automake warning about overriding distdir.
Ben Pfaff [Wed, 17 Sep 2008 20:29:00 +0000 (13:29 -0700)]
Suppress Automake warning about overriding distdir.

Reported by Martin.

16 years agoIgnore generated files in debian/.
Ben Pfaff [Wed, 17 Sep 2008 18:08:27 +0000 (11:08 -0700)]
Ignore generated files in debian/.

16 years agoPut "+ext" in the distribution filename if OpenFlow extensions are included.
Ben Pfaff [Wed, 17 Sep 2008 17:50:27 +0000 (10:50 -0700)]
Put "+ext" in the distribution filename if OpenFlow extensions are included.

16 years agoTest Debian packaging at "make distcheck" time.
Ben Pfaff [Wed, 17 Sep 2008 17:47:11 +0000 (10:47 -0700)]
Test Debian packaging at "make distcheck" time.

16 years agoAlso distribute Debian packaging.
Ben Pfaff [Wed, 17 Sep 2008 17:46:41 +0000 (10:46 -0700)]
Also distribute Debian packaging.

16 years agoMake "controller nl:0" work again, by fixing a layering violation.
Ben Pfaff [Tue, 16 Sep 2008 23:56:37 +0000 (16:56 -0700)]
Make "controller nl:0" work again, by fixing a layering violation.

The kernel datapath was claiming that it implements STP, which is untrue.
In fact, the secchan implements STP, so if the secchan was not running
the STP support did not work.  Thus, "controller nl:0" would do the
wrong thing.

This makes the secchan edit the responses from the datapath to claim
STP support.

16 years agoUpdate ext submodule to make it build with latest OpenFlow.
Ben Pfaff [Tue, 16 Sep 2008 23:21:23 +0000 (16:21 -0700)]
Update ext submodule to make it build with latest OpenFlow.

16 years agoAdded OFPFC_MODIFY_STRICT flow mod command.
Justin Pettit [Tue, 16 Sep 2008 23:07:25 +0000 (16:07 -0700)]
Added OFPFC_MODIFY_STRICT flow mod command.

This cleans up the handling of modifying existing flows.  There now exists
OFPFC_MODIFY and OFPFC_MODIFY_STRICT commands, which have the same matching
characteristics to their OFPFC_DELETE* counterparts.  When adding a flow that
already exists, the counters and timers are now reset (ie, its treated as a
new flow).  This commit also adds the "--strict" option to dpctl to allow
strict matching for "mod-flows" and "del-flows".

16 years agoUse RSA instead of DSA by default for the OpenFlow PKI.
Ben Pfaff [Tue, 16 Sep 2008 23:02:30 +0000 (16:02 -0700)]
Use RSA instead of DSA by default for the OpenFlow PKI.

16 years agoMake it easier to bootstrap the PKI for SSL connections in OpenFlow.
Ben Pfaff [Tue, 16 Sep 2008 23:05:38 +0000 (16:05 -0700)]
Make it easier to bootstrap the PKI for SSL connections in OpenFlow.

16 years agoofp-pki: Give controller and switch CA distinctive names.
Ben Pfaff [Tue, 16 Sep 2008 21:13:22 +0000 (14:13 -0700)]
ofp-pki: Give controller and switch CA distinctive names.

This makes it possible to tell them apart by looking at the certificates,
instead of having to just know which is which.

16 years agoChange STP parameters to the minimum values allowed by 802.1D.
Ben Pfaff [Tue, 16 Sep 2008 23:06:43 +0000 (16:06 -0700)]
Change STP parameters to the minimum values allowed by 802.1D.

This makes the secchan start up much faster.

16 years agoAdd -Wdeclaration-after-statement to CFLAGS.
Ben Pfaff [Mon, 15 Sep 2008 23:43:40 +0000 (16:43 -0700)]
Add -Wdeclaration-after-statement to CFLAGS.

This should help us avoid writing non-portable code.

16 years agoFix "make distcheck".
Ben Pfaff [Mon, 15 Sep 2008 23:31:37 +0000 (16:31 -0700)]
Fix "make distcheck".

16 years agoIgnore some more generated files.
Ben Pfaff [Mon, 15 Sep 2008 23:32:02 +0000 (16:32 -0700)]
Ignore some more generated files.

16 years agoFix OpenFlow extensions submodule to build again.
Ben Pfaff [Mon, 15 Sep 2008 23:04:55 +0000 (16:04 -0700)]
Fix OpenFlow extensions submodule to build again.

16 years agoMerge commit 'origin/master'
Ben Pfaff [Mon, 15 Sep 2008 22:43:44 +0000 (15:43 -0700)]
Merge commit 'origin/master'

Conflicts:

switch/datapath.c
utilities/dpctl.c

16 years agoMerge branch "partner", to simplify partner integration.
Ben Pfaff [Mon, 15 Sep 2008 22:31:36 +0000 (15:31 -0700)]
Merge branch "partner", to simplify partner integration.

16 years agoAdd support for OFPFC_MODIFY Flow Mod command.
Justin Pettit [Mon, 15 Sep 2008 22:27:04 +0000 (15:27 -0700)]
Add support for OFPFC_MODIFY Flow Mod command.

The OFPFC_MODIFY command allows the controller to modify the actions of
existing flows.  When it does this, it does not reset counters or timers.

16 years agoIgnore hwtable_dummy.c symlink in kernel build directories.
Justin Pettit [Wed, 10 Sep 2008 22:12:14 +0000 (15:12 -0700)]
Ignore hwtable_dummy.c symlink in kernel build directories.

16 years agoImplement OFPT_HELLO simple version negotiation.
Ben Pfaff [Mon, 15 Sep 2008 18:19:23 +0000 (11:19 -0700)]
Implement OFPT_HELLO simple version negotiation.

16 years agoBreak passive vconns out into separate pvconn routines and data structures.
Ben Pfaff [Thu, 11 Sep 2008 22:12:46 +0000 (15:12 -0700)]
Break passive vconns out into separate pvconn routines and data structures.

There really was nothing in common between the active and passive vconns.
This arrangement makes more sense.

16 years agoMake "struct vconn" opaque.
Ben Pfaff [Thu, 11 Sep 2008 18:46:57 +0000 (11:46 -0700)]
Make "struct vconn" opaque.

16 years agoFix handling of port flags.
Ben Pfaff [Mon, 15 Sep 2008 21:24:57 +0000 (14:24 -0700)]
Fix handling of port flags.

The "port watcher" in secchan was not keeping track of updates to port
flags by the controller, which caused some combinations of secchan
and controller to not turn on ports when the STP state otherwise should
have done so.

Thanks to Justin for reporting the problem.

16 years agoFix broken stat requests over netlink.
Justin Pettit [Mon, 15 Sep 2008 06:05:37 +0000 (23:05 -0700)]
Fix broken stat requests over netlink.

A recent change (696db2) modified the way stats were being sent over the
netlink socket.  Unfortunately, the responder set the transaction id to the
type, which caused the requestor to ignore the repsone.

16 years agoKeep old stats when a Flow Add replaces an existing entry.
Justin Pettit [Sat, 13 Sep 2008 01:57:21 +0000 (18:57 -0700)]
Keep old stats when a Flow Add replaces an existing entry.

16 years agoClean up the code in the sample hardware table code.
Justin Pettit [Sat, 13 Sep 2008 01:50:37 +0000 (18:50 -0700)]
Clean up the code in the sample hardware table code.

16 years agoFix crash when no actions are specified.
Justin Pettit [Sat, 13 Sep 2008 01:47:29 +0000 (18:47 -0700)]
Fix crash when no actions are specified.

Actions are allocated as a pointer to an array of actions in flows.  When
flows are freed, the code was always freeing the action pointer.
Under some circumstances the pointer may not be set.

16 years agoUse vconn_init() instead of explicit initialization in one last place.
Ben Pfaff [Thu, 11 Sep 2008 18:37:13 +0000 (11:37 -0700)]
Use vconn_init() instead of explicit initialization in one last place.

Commit b5e16b0723, "Respin "Make vconns keep track of their names and
include them in log messages,"" was supposed to do this everywhere, but
this instance was evidently missed.

16 years agoGet rid of OFP_MAXLEN.
Ben Pfaff [Thu, 11 Sep 2008 02:59:26 +0000 (19:59 -0700)]
Get rid of OFP_MAXLEN.

Statistics or vendor extensions can fill up the whole 64 kB.

16 years agoDelete OFPST_SWITCH and make it available as a Nicira vendor extension.
Ben Pfaff [Wed, 10 Sep 2008 22:00:47 +0000 (15:00 -0700)]
Delete OFPST_SWITCH and make it available as a Nicira vendor extension.

16 years agoMake switches send error messages when they receive a bad request.
Ben Pfaff [Wed, 10 Sep 2008 20:22:25 +0000 (13:22 -0700)]
Make switches send error messages when they receive a bad request.

16 years agoAdd vendor-specific messages and statistics to OpenFlow protocol.
Ben Pfaff [Wed, 10 Sep 2008 20:20:36 +0000 (13:20 -0700)]
Add vendor-specific messages and statistics to OpenFlow protocol.

16 years agoFix uninitialized data read in secchan.
Ben Pfaff [Wed, 10 Sep 2008 19:51:56 +0000 (12:51 -0700)]
Fix uninitialized data read in secchan.

Found by valgrind.

16 years agoUse new method to describe table entries in OpenFlow wire protocol.
Justin Pettit [Wed, 10 Sep 2008 20:03:05 +0000 (13:03 -0700)]
Use new method to describe table entries in OpenFlow wire protocol.

Older versions of OpenFlow pre-defined a few different types of tables and the
Features Reply message would indicate how many of those entries existed.  This
was very inflexible, so now the Features Reply just indicates how many tables
there are.  The controller now sends a Table Stats request to find out how
many entries are supported and the fields that can be wildcarded.

This change also removes the "buffer_mb" field from the Features Reply, since
it was not being used and seemed to be of limited value.

16 years agoImplement 802.1D Spanning Tree Protocol.
Ben Pfaff [Tue, 9 Sep 2008 21:15:57 +0000 (14:15 -0700)]
Implement 802.1D Spanning Tree Protocol.

16 years agoZero out otherwise uninitialized padding in make_unbuffered_packet_out().
Ben Pfaff [Tue, 9 Sep 2008 20:10:09 +0000 (13:10 -0700)]
Zero out otherwise uninitialized padding in make_unbuffered_packet_out().

Found with valgrind.

16 years agoFix instructions for running ofp-pki: "new-pki" is now "init".
Ben Pfaff [Tue, 9 Sep 2008 20:09:33 +0000 (13:09 -0700)]
Fix instructions for running ofp-pki: "new-pki" is now "init".

Thanks to Dan for pointing out the problem.

16 years agoSend of0 packets from workqueue, to avoid recursive locking of ofN device.
Ben Pfaff [Tue, 9 Sep 2008 19:53:47 +0000 (12:53 -0700)]
Send of0 packets from workqueue, to avoid recursive locking of ofN device.

lockdep reported the following warning, showing that dev_queue_xmit()
for of0 and for another ethernet device (eth0?) were taking locks of
the same class.  It was not a problem in this particular case, because
of0 != eth0, but if a flow were to send a packet back to of0 then we
would have a deadlock.

Solution: use a workqueue to send packets to avoid recursive locking.
We will still waste a lot of CPU time if we get a packet that loops back
to of0.  Solution for that still needed.

=============================================
[ INFO: possible recursive locking detected ]
2.6.26.5 #1
---------------------------------------------
memcheck/1258 is trying to acquire lock:
 (_xmit_ETHER){-+..}, at: [<c025b126>] __qdisc_run+0xa0/0x18a

but task is already holding lock:
 (_xmit_ETHER){-+..}, at: [<c024f3cd>] dev_queue_xmit+0x23c/0x334

other info that might help us debug this:
9 locks held by memcheck/1258:
 #0:  (genl_mutex){--..}, at: [<c0262037>] genl_rcv+0x12/0x2b
 #1:  (dp_mutex){--..}, at: [<c88e9a13>] dp_genl_openflow+0x58/0x91 [openflow_mo
d]
 #2:  (rcu_read_lock){..--}, at: [<c024e749>] netif_receive_skb+0x9e/0x328
 #3:  (rcu_read_lock){..--}, at: [<c0267f77>] ip_local_deliver_finish+0x2a/0x1d7
 #4:  (slock-AF_INET/1){-+..}, at: [<c027f1b8>] tcp_v4_rcv+0x29f/0x5ef
 #5:  (rcu_read_lock){..--}, at: [<c024f308>] dev_queue_xmit+0x177/0x334
 #6:  (_xmit_ETHER){-+..}, at: [<c024f3cd>] dev_queue_xmit+0x23c/0x334
 #7:  (rcu_read_lock){..--}, at: [<c88ea214>] dp_dev_xmit+0x0/0x6c [openflow_mod
]
 #8:  (rcu_read_lock){..--}, at: [<c024f308>] dev_queue_xmit+0x177/0x334

stack backtrace:
Pid: 1258, comm: memcheck Not tainted 2.6.26.5 #1
 [<c02c11cc>] ? printk+0xf/0x13
 [<c01368c5>] __lock_acquire+0x8c2/0xbe4
 [<c0134d35>] ? add_lock_to_list+0x64/0x8a
 [<c0107a78>] ? native_sched_clock+0x82/0x94
 [<c0136c3e>] lock_acquire+0x57/0x73
 [<c025b126>] ? __qdisc_run+0xa0/0x18a
 [<c02c3919>] _spin_lock+0x1c/0x49
 [<c025b126>] ? __qdisc_run+0xa0/0x18a
 [<c025b126>] __qdisc_run+0xa0/0x18a
 [<c024f382>] dev_queue_xmit+0x1f1/0x334
 [<c88e9cde>] xmit_skb+0x5b/0x65 [openflow_mod]
 [<c88e9e60>] dp_output_port+0x178/0x1ae [openflow_mod]
 [<c88eaf91>] do_output+0x2a/0x4c [openflow_mod]
 [<c88eb11f>] execute_actions+0x16c/0x198 [openflow_mod]
 [<c88eb622>] run_flow_through_tables+0xe9/0xf6 [openflow_mod]
 [<c88eb63e>] fwd_port_input+0xf/0x3d [openflow_mod]
 [<c88ea260>] dp_dev_xmit+0x4c/0x6c [openflow_mod]
 [<c88ea214>] ? dp_dev_xmit+0x0/0x6c [openflow_mod]
 [<c024f042>] dev_hard_start_xmit+0x20f/0x276
 [<c024f3e2>] dev_queue_xmit+0x251/0x334
 [<c026bfcb>] ip_finish_output+0x1ea/0x222
 [<c026c081>] ip_output+0x7e/0x83
 [<c026b37a>] ip_local_out+0x18/0x1b
 [<c026baa2>] ip_queue_xmit+0x288/0x2c9
 [<c0136a0c>] ? __lock_acquire+0xa09/0xbe4
 [<c0111264>] ? kernel_map_pages+0xfc/0x113
 [<c027ddad>] ? tcp_v4_send_check+0x80/0xba
 [<c027a281>] tcp_transmit_skb+0x695/0x6cd
 [<c016060a>] ? __kmalloc_track_caller+0xee/0x12a
 [<c024aacc>] ? __alloc_skb+0x51/0xff
 [<c027a43c>] tcp_send_ack+0xdf/0xe7
 [<c02781e4>] tcp_rcv_state_process+0x389/0xc33
 [<c027eebd>] tcp_v4_do_rcv+0x3bd/0x419
 [<c027f2c7>] tcp_v4_rcv+0x3ae/0x5ef
 [<c026805f>] ip_local_deliver_finish+0x112/0x1d7
 [<c0268185>] ip_local_deliver+0x61/0x6a
 [<c0267d14>] ip_rcv_finish+0x2a4/0x2c3
 [<c0267f23>] ip_rcv+0x1f0/0x21a
 [<c024e990>] netif_receive_skb+0x2e5/0x328
 [<c024ea52>] process_backlog+0x7f/0xca
 [<c024d867>] net_rx_action+0x72/0x127
 [<c0120ea1>] __do_softirq+0x7b/0xf2
 [<c0105a5d>] do_softirq+0x66/0xb3
 [<c024ec69>] netif_rx_ni+0x29/0x2e
 [<c88ea2cd>] dp_dev_recv+0x4d/0x6c [openflow_mod]
 [<c88e9e06>] dp_output_port+0x11e/0x1ae [openflow_mod]
 [<c88eaf91>] do_output+0x2a/0x4c [openflow_mod]
 [<c88eb11f>] execute_actions+0x16c/0x198 [openflow_mod]
 [<c88eb312>] recv_flow+0x1c7/0x2a5 [openflow_mod]
 [<c88eb14b>] ? recv_flow+0x0/0x2a5 [openflow_mod]
 [<c88eab37>] fwd_control_input+0x53/0x60 [openflow_mod]
 [<c88e9a27>] dp_genl_openflow+0x6c/0x91 [openflow_mod]
 [<c02621ce>] genl_rcv_msg+0x17e/0x198
 [<c0262050>] ? genl_rcv_msg+0x0/0x198
 [<c02614c6>] netlink_rcv_skb+0x30/0x76
 [<c0262043>] genl_rcv+0x1e/0x2b
 [<c0261053>] netlink_unicast+0x1a9/0x20f
 [<c02612dc>] netlink_sendmsg+0x223/0x230
 [<c0245384>] sock_sendmsg+0xca/0xe1
 [<c012c501>] ? autoremove_wake_function+0x0/0x33
 [<c015f6ce>] ? cache_free_debugcheck+0x2a3/0x2be
 [<c0107a78>] ? native_sched_clock+0x82/0x94
 [<c0134382>] ? lock_release_holdtime+0x1a/0x115
 [<c01f52b7>] ? copy_from_user+0x34/0x11b
 [<c024b6a5>] ? verify_iovec+0x40/0x6f
 [<c02454da>] sys_sendmsg+0x13f/0x192
 [<c0168d51>] ? pipe_write+0x434/0x43f
 [<c0107a78>] ? native_sched_clock+0x82/0x94
 [<c0107a78>] ? native_sched_clock+0x82/0x94
 [<c0134382>] ? lock_release_holdtime+0x1a/0x115
 [<c0107a78>] ? native_sched_clock+0x82/0x94
 [<c0134382>] ? lock_release_holdtime+0x1a/0x115
 [<c0246189>] sys_socketcall+0x14e/0x169
 [<c0102d43>] ? restore_nocheck+0x12/0x15
 [<c0102ce2>] syscall_call+0x7/0xb
 =======================

16 years agoAdd ability to monitor both ends of secchan connections from dpctl.
Ben Pfaff [Mon, 8 Sep 2008 17:05:12 +0000 (10:05 -0700)]
Add ability to monitor both ends of secchan connections from dpctl.

16 years agovconn: New function vconn_get_name().
Ben Pfaff [Fri, 5 Sep 2008 21:33:08 +0000 (14:33 -0700)]
vconn: New function vconn_get_name().

16 years agoRe-add extensions submodule that was accidentally dropped.
Ben Pfaff [Mon, 8 Sep 2008 16:25:25 +0000 (09:25 -0700)]
Re-add extensions submodule that was accidentally dropped.

16 years agoCompatibility fixes for 2.6.18 kernel
Ben Pfaff [Sat, 6 Sep 2008 04:23:34 +0000 (21:23 -0700)]
Compatibility fixes for 2.6.18 kernel

Functions added in the 2.6.22 kernel in tcp.h and skbuff.h
have been added to the compatibility headers. Additionally
the data argument was dropped in 2.6.22 for the work queue
macros, requiring them to be redfined for previous kernels.

Based on changes from David Erickson.

16 years agoDo not send in-band control traffic to the controller.
Ben Pfaff [Sat, 6 Sep 2008 00:09:53 +0000 (17:09 -0700)]
Do not send in-band control traffic to the controller.

This commit prevents the secure channel from sending any traffic to
or from the controller up to the controller over its OpenFlow connection.
Instead, such traffic is always handled completely locally.  This is
what the changes to in-band control up until now have been converging on:
each time, we have reduced the category of traffic that can be sent up
to the controller because we have found that doing so can cause a control
loop.  This change goes all the way.

16 years agoUse make_openflow() function to simplify send_features_request().
Ben Pfaff [Mon, 18 Aug 2008 20:57:14 +0000 (13:57 -0700)]
Use make_openflow() function to simplify send_features_request().

16 years agoFix typo in comment.
Ben Pfaff [Thu, 14 Aug 2008 18:43:05 +0000 (11:43 -0700)]
Fix typo in comment.

16 years agoIn userspace switch, don't truncate packets to 0 bytes with max_len of 0.
Ben Pfaff [Thu, 4 Sep 2008 20:44:29 +0000 (13:44 -0700)]
In userspace switch, don't truncate packets to 0 bytes with max_len of 0.

From partner.

16 years agoDrop unneeded inclusions of ofp-print.h.
Ben Pfaff [Thu, 4 Sep 2008 20:33:15 +0000 (13:33 -0700)]
Drop unneeded inclusions of ofp-print.h.

16 years agoDon't use designated struct member initializers in code compiled outside of Linux.
Ben Pfaff [Thu, 4 Sep 2008 20:28:28 +0000 (13:28 -0700)]
Don't use designated struct member initializers in code compiled outside of Linux.

Needed for partner builds.

16 years agoDon't use designated array initializers in code compiled outside of Linux.
Ben Pfaff [Thu, 4 Sep 2008 20:18:28 +0000 (13:18 -0700)]
Don't use designated array initializers in code compiled outside of Linux.

Needed for partner builds.