openvswitch
16 years agoMake dumping large numbers of flows possible.
Ben Pfaff [Tue, 29 Apr 2008 01:16:05 +0000 (18:16 -0700)]
Make dumping large numbers of flows possible.

This changes the kernel switch implementation to use the kernel Netlink
"dump" interface to allow flow stats that don't fit in the socket buffer
to be dumped gradually as the caller drains the socket buffer.

One of the changes here is a bug fix for nla_unreserve.  Because Netlink
attributes' lengths are rounded up to a multiple of 4 bytes, reducing
the length of the payload by N bytes doesn't necessarily reduce the
length of the skb by N bytes.  Instead, we need to know the original
length and final length of the attribute.  This means that using 'len'
as a difference in bytes doesn't really make sense, so this changes
'len' to be the new length of the attribute payload and renames the
function to nla_shrink to (IMO) better reflect what it is now doing.

Since we have to release the RCU read lock between calls to the dump
function, we need table iterators that persist across RCU epochs.  One
way to do this would be to add new "iterator_save" and "iterator_restore"
functions, but this seemed like overkill since there would then be a
total of 5 iterator functions that have only one user (flow stats dumping).
Instead, this patch refactors table iteration into a single "iterate"
function that takes a callback.  This simplifies the table iteration code
significantly.

This change also modifies dpctl to understand the new format of flow
stats.

16 years agoBUG #6
Justin Pettit [Mon, 28 Apr 2008 21:33:02 +0000 (14:33 -0700)]
BUG #6

Fix problem with "dpctl monitor" not working.

** Fix by Ben. **

16 years agoAdd missing NLM_F flags constants (oops).
Ben Pfaff [Mon, 28 Apr 2008 21:16:57 +0000 (14:16 -0700)]
Add missing NLM_F flags constants (oops).

16 years agoEnable the netlink library to dump more verbose debug output.
Ben Pfaff [Tue, 22 Apr 2008 18:08:12 +0000 (11:08 -0700)]
Enable the netlink library to dump more verbose debug output.

16 years agoMake nl_sock_sendv properly implement 'wait' option.
Ben Pfaff [Mon, 21 Apr 2008 17:36:49 +0000 (10:36 -0700)]
Make nl_sock_sendv properly implement 'wait' option.

16 years agoFix typo in comment.
Ben Pfaff [Fri, 18 Apr 2008 21:49:45 +0000 (14:49 -0700)]
Fix typo in comment.

16 years agoClean-up related to supporting priorities...mostly suggestions from Ben.
Justin Pettit [Sat, 26 Apr 2008 21:27:32 +0000 (14:27 -0700)]
Clean-up related to supporting priorities...mostly suggestions from Ben.

16 years agoBUG #5
Justin Pettit [Sat, 26 Apr 2008 00:28:50 +0000 (17:28 -0700)]
BUG #5

Fixes crash when a non-existent command is given to dpctl.

16 years agoPrint the configuration of the switch in addition to the features when "dpctl show...
Justin Pettit [Fri, 25 Apr 2008 22:18:08 +0000 (15:18 -0700)]
Print the configuration of the switch in addition to the features when "dpctl show" is run.

16 years agoAdd support for deleting flow entries with "del-flows" command in "dpctl".
Justin Pettit [Fri, 25 Apr 2008 21:21:51 +0000 (14:21 -0700)]
Add support for deleting flow entries with "del-flows" command in "dpctl".

16 years ago- Add support for flow entry priorities.
Justin Pettit [Fri, 25 Apr 2008 21:00:15 +0000 (14:00 -0700)]
- Add support for flow entry priorities.
- Fix "flow-add" action for dpctl.

16 years agoFix problem where the add_flow command is reading an unitialized array.
Justin Pettit [Tue, 22 Apr 2008 06:49:17 +0000 (23:49 -0700)]
Fix problem where the add_flow command is reading an unitialized array.

16 years agoImprove list traversal macros.
Ben Pfaff [Sat, 26 Apr 2008 01:28:03 +0000 (18:28 -0700)]
Improve list traversal macros.

Make LIST_FOR_EACH[_SAFE] variable take logically correct value upon loop termination.

Also, add regression tests for linked list routines, to ensure that this
change does not break code.

Also, add new macro LIST_FOR_EACH_REVERSE.

16 years agoAdd missing header to Makefile.am.
Ben Pfaff [Sat, 26 Apr 2008 16:10:41 +0000 (09:10 -0700)]
Add missing header to Makefile.am.

16 years agoDrop stray debug messages.
Ben Pfaff [Fri, 25 Apr 2008 02:07:54 +0000 (19:07 -0700)]
Drop stray debug messages.

16 years agoGet rid of build dependency on netlink-related headers from Linux 2.6.
Ben Pfaff [Thu, 24 Apr 2008 23:29:53 +0000 (16:29 -0700)]
Get rid of build dependency on netlink-related headers from Linux 2.6.

This fixes userspace program build problems on top of systems with
Linux 2.4 headers.

16 years agoFix problem in sending netlink messages on non-32-bit platforms.
root [Thu, 24 Apr 2008 18:37:54 +0000 (11:37 -0700)]
Fix problem in sending netlink messages on non-32-bit platforms.

** Fix provided by Ben. **

16 years agoCHECKSUM_COMPLETE and CHECKSUM_PARTIAL were added Linux 2.6.19, so update the compati...
root [Wed, 23 Apr 2008 22:48:56 +0000 (15:48 -0700)]
CHECKSUM_COMPLETE and CHECKSUM_PARTIAL were added Linux 2.6.19, so update the compatiblity layer to reflect this.

16 years agoTolerate ENOBUFS from kernel netlink code in second call to recvmsg.
root [Wed, 23 Apr 2008 22:20:58 +0000 (15:20 -0700)]
Tolerate ENOBUFS from kernel netlink code in second call to recvmsg.

The Linux kernel returns ENOBUFS to userspace code to indicate that
a netlink message that the kernel wanted to send could not be due to
a lack of buffer space.  We checked for this and dealt with it in
one recvmsg call but not in another.  This change tolerates it in
both places.

Should fix a problem encountered on the OF6k under "hping3 --flood".

** This fix was done by Ben. **

16 years agoSupport NETLINK_ADD_MEMBERSHIP even when compiled with old kernel headers.
Ben Pfaff [Wed, 23 Apr 2008 21:25:27 +0000 (14:25 -0700)]
Support NETLINK_ADD_MEMBERSHIP even when compiled with old kernel headers.

Commit 0a9024a2d7, "Changes based on feedback from GigaFin," added support
for compiling on a system that lacked up-to-date Linux kernel headers, by
dropping support for a feature only in newer kernels on such a system.
But the code already supported such a system properly; only the lack of
a macro definition kept it from compiling.  So define the macro ourselves
instead of disabling the feature.

To elaborate, there are two issues here.

The first is kernel support for NETLINK_ADD_MEMBERSHIP.  Older
kernels don't support this.  But NETLINK_ADD_MEMBERSHIP was added
at the same time as support for more than 32 netlink multicast
groups.  Netlink multicast groups numbered less than 32 can be
subscribed using a different mechanism, and in fact we do that
for such groups.  Thus, attempting to use NETLINK_ADD_MEMBERSHIP
on an older kernel basically can't happen, and if it did it would
be a bug in the OpenFlow kernel module for telling userspace to
subscribe to a multicast group that cannot exist on that kernel.

The second is the kernel headers that the userspace programs are
compiled with.  Without the change quoted below, the userspace
programs will silently fail if they are compiled with 2.4.x
headers and then run on a 2.6.x kernel and given a multicast
group numbered above 32, because they will not even try to
subscribe to that group.  With the change, the userspace programs
will work properly when run on 2.4.x or 2.6.x kernels regardless
of the multicast group number and regardless of whether the
headers they were compiled against were from 2.4.x or 2.6.x.

16 years agoHandle memory allocation failure in dp_output_control().
Ben Pfaff [Wed, 23 Apr 2008 19:24:32 +0000 (12:24 -0700)]
Handle memory allocation failure in dp_output_control().

Possible fix for bug observed on OF6k.

16 years agoMark functions not meant to be exported as static.
Ben Pfaff [Wed, 23 Apr 2008 00:48:22 +0000 (17:48 -0700)]
Mark functions not meant to be exported as static.

16 years agoAdd priority field to flow_mod...code to support this forthcoming.
Justin Pettit [Tue, 22 Apr 2008 01:13:42 +0000 (18:13 -0700)]
Add priority field to flow_mod...code to support this forthcoming.

16 years agoFix tab/space issue.
Justin Pettit [Tue, 22 Apr 2008 00:59:44 +0000 (17:59 -0700)]
Fix tab/space issue.

16 years agoBUG #4.
Justin Pettit [Tue, 22 Apr 2008 00:56:12 +0000 (17:56 -0700)]
BUG #4.

Don't use kmalloc with GFP_KERNEL within an rcu_read_lock().

16 years agoMark structures as packed that cause alignment problems on architectures like ARM.
Justin Pettit [Mon, 21 Apr 2008 20:46:36 +0000 (13:46 -0700)]
Mark structures as packed that cause alignment problems on architectures like ARM.

16 years agoFix a problem with not allocating enough room for netlink messages.
Justin Pettit [Thu, 17 Apr 2008 01:26:47 +0000 (18:26 -0700)]
Fix a problem with not allocating enough room for netlink messages.

16 years agoFix call from vfprintf to fprintf, which could cause seg faults.
Justin Pettit [Wed, 16 Apr 2008 23:49:42 +0000 (16:49 -0700)]
Fix call from vfprintf to fprintf, which could cause seg faults.

16 years agoSwitch from "stat" to "stats" everywhere.
Justin Pettit [Wed, 16 Apr 2008 22:38:25 +0000 (15:38 -0700)]
Switch from "stat" to "stats" everywhere.

16 years ago- Keep datapath config in host-byte order (and fix a couple of bugs related to this).
Justin Pettit [Wed, 16 Apr 2008 21:09:27 +0000 (14:09 -0700)]
- Keep datapath config in host-byte order (and fix a couple of bugs related to this).
- Fix type for "get config" replies.

16 years agoUpdated version references to OFP_VERSION
Natasha Gude [Wed, 16 Apr 2008 18:30:55 +0000 (11:30 -0700)]
Updated version references to OFP_VERSION

16 years agoUse new OpenFlow protocol versioning scheme.
Justin Pettit [Wed, 16 Apr 2008 17:39:21 +0000 (10:39 -0700)]
Use new OpenFlow protocol versioning scheme.

16 years agoFinish removing references to the MAC table.
Justin Pettit [Tue, 15 Apr 2008 20:42:35 +0000 (13:42 -0700)]
Finish removing references to the MAC table.

16 years agoMerge remote branch 'repo/master' into stats
Ben Pfaff [Tue, 15 Apr 2008 16:57:38 +0000 (09:57 -0700)]
Merge remote branch 'repo/master' into stats

Conflicts:

datapath/table-mac.c

16 years agoExpand tabs to spaces in dp_send_flow_stats.
Ben Pfaff [Tue, 15 Apr 2008 16:53:37 +0000 (09:53 -0700)]
Expand tabs to spaces in dp_send_flow_stats.

Suggested by Justin.

16 years agoMake table_id in OpenFlow messages 8 bits, since 255 should be enough.
Ben Pfaff [Tue, 15 Apr 2008 16:33:07 +0000 (09:33 -0700)]
Make table_id in OpenFlow messages 8 bits, since 255 should be enough.

Suggested by Justin.

16 years agoMake duration in ofp_flow_stats a 32-bit quantity (instead of 16).
Ben Pfaff [Tue, 15 Apr 2008 03:20:20 +0000 (20:20 -0700)]
Make duration in ofp_flow_stats a 32-bit quantity (instead of 16).

Otherwise duration is capped at under 24 hours.

Suggested by Justin.

16 years agoAdd missing calls to htons/ntohs in accesses to miss_send_len.
Ben Pfaff [Tue, 15 Apr 2008 03:08:14 +0000 (20:08 -0700)]
Add missing calls to htons/ntohs in accesses to miss_send_len.

Thanks to Justin for pointing out the problem.

16 years agoMIPS fixes based on suggestions from Jiang.
Justin Pettit [Mon, 14 Apr 2008 07:10:48 +0000 (00:10 -0700)]
MIPS fixes based on suggestions from Jiang.

16 years agoAdd support for OFPP_TABLE virtual port.
Justin Pettit [Sat, 12 Apr 2008 00:40:05 +0000 (17:40 -0700)]
Add support for OFPP_TABLE virtual port.

16 years agoFix compilation error in 2.4.20 kernels.
Justin Pettit [Fri, 11 Apr 2008 21:40:29 +0000 (14:40 -0700)]
Fix compilation error in 2.4.20 kernels.

16 years agoRemove MAC table support.
Justin Pettit [Fri, 11 Apr 2008 01:31:44 +0000 (18:31 -0700)]
Remove MAC table support.

16 years agoFixes to configure script based on suggestions from GigaFin.
Justin Pettit [Thu, 10 Apr 2008 23:51:46 +0000 (16:51 -0700)]
Fixes to configure script based on suggestions from GigaFin.

16 years agoChanges based on feedback from GigaFin.
Justin Pettit [Thu, 10 Apr 2008 22:50:25 +0000 (15:50 -0700)]
Changes based on feedback from GigaFin.

16 years agoFixed minor tab/spaces issue.
Justin Pettit [Tue, 8 Apr 2008 07:10:08 +0000 (00:10 -0700)]
Fixed minor tab/spaces issue.

16 years agoDon't read info->attrs[DP_GENL_A_OPENFLOW] twice, unnecessarily.
Ben Pfaff [Mon, 7 Apr 2008 20:55:47 +0000 (13:55 -0700)]
Don't read info->attrs[DP_GENL_A_OPENFLOW] twice, unnecessarily.

16 years agoImplement OpenFlow statistics in switches and in dpctl.
Ben Pfaff [Fri, 4 Apr 2008 23:17:46 +0000 (16:17 -0700)]
Implement OpenFlow statistics in switches and in dpctl.

This has two notable omissions.  First, only at most 4k of flow statistics
are reported.  Second, aggregate statistics are not yet supported.  Both
of these are fairly easily fixable, just not fixed yet.

16 years agoSend replies to OpenFlow requests only to the sender.
Ben Pfaff [Thu, 3 Apr 2008 22:15:44 +0000 (15:15 -0700)]
Send replies to OpenFlow requests only to the sender.

16 years agoFactor out parsing vconn-ssl options.
Ben Pfaff [Fri, 4 Apr 2008 00:02:07 +0000 (17:02 -0700)]
Factor out parsing vconn-ssl options.

16 years agoFactor out printing the list of available vconns.
Ben Pfaff [Thu, 3 Apr 2008 19:52:19 +0000 (12:52 -0700)]
Factor out printing the list of available vconns.

16 years agoBreak data_hello and control_hello messages into multiple messages.
Ben Pfaff [Thu, 3 Apr 2008 18:40:16 +0000 (11:40 -0700)]
Break data_hello and control_hello messages into multiple messages.

We want to allow multiple OpenFlow connections to a switch, so that
dpctl and other management tools can also connect to a switch that
is connecte to the controller.  These tools will want to fetch the
information in the data_hello message, but currently this can only
be done by sending a control_hello message, which changes the
switch configuration state.  So breaking the hello messages up into
multiple different messages, only some of which affect configuration
state, cures the problem.

Also, clean up the kernel datapath a bit, by adding helper functions
for allocating and resizing Generic Netlink messages that encapsulate
OpenFlow messages.

16 years agoAllow secchan to listen for management connections also.
Ben Pfaff [Fri, 4 Apr 2008 23:20:28 +0000 (16:20 -0700)]
Allow secchan to listen for management connections also.

This is needed in the userspace switch code also.  That
change is implemented in later change "Send replies to
OpenFlow requests only to the sender".  Really that part
of the change should be moved into this one, but intervening
changes are intertwined enough with the same code to
make that difficult.

16 years agoRename controller_connection to rconn and use it in secchan also.
Ben Pfaff [Wed, 2 Apr 2008 17:55:17 +0000 (10:55 -0700)]
Rename controller_connection to rconn and use it in secchan also.

Also, clean up code and add comments.

16 years agoMake vconn-tcp log an error when the connection drops mid-packet.
Ben Pfaff [Thu, 3 Apr 2008 16:28:13 +0000 (09:28 -0700)]
Make vconn-tcp log an error when the connection drops mid-packet.

16 years agoMake vconn log all incoming and outgoing OpenFlow packets at debug level.
Ben Pfaff [Thu, 3 Apr 2008 16:27:40 +0000 (09:27 -0700)]
Make vconn log all incoming and outgoing OpenFlow packets at debug level.

16 years agoAdd new functions for pretty-printing an OpenFlow message to a string.
Ben Pfaff [Thu, 3 Apr 2008 00:10:16 +0000 (17:10 -0700)]
Add new functions for pretty-printing an OpenFlow message to a string.

This makes it possible to send pretty-printed versions of OpenFlow
messages to vlog.

16 years agoAdd vlog functions and macros for testing whether a module and level are enabled.
Ben Pfaff [Thu, 3 Apr 2008 15:28:04 +0000 (08:28 -0700)]
Add vlog functions and macros for testing whether a module and level are enabled.

16 years agoFix bug in vconn-tcp, vconn-ssl that prevented minimum-length OpenFlow packets from...
Ben Pfaff [Fri, 4 Apr 2008 23:02:46 +0000 (16:02 -0700)]
Fix bug in vconn-tcp, vconn-ssl that prevented minimum-length OpenFlow packets from being received correctly.

16 years agoFix logic bug in userspace switch that could cause reading invalid memory.
Ben Pfaff [Thu, 3 Apr 2008 16:57:08 +0000 (09:57 -0700)]
Fix logic bug in userspace switch that could cause reading invalid memory.

Also, fix comment.

16 years agoBy more liberal (egads!) about allocating space for netlink messages.
Justin Pettit [Wed, 2 Apr 2008 23:45:28 +0000 (16:45 -0700)]
By more liberal (egads!) about allocating space for netlink messages.

16 years agoAllow timeout implementations to block, by using a kernel thread instead of a timer.
Ben Pfaff [Tue, 1 Apr 2008 16:41:21 +0000 (09:41 -0700)]
Allow timeout implementations to block, by using a kernel thread instead of a timer.

This is required on the Quanta platform, which needs to down a semaphore
inside the timeout implementation.

Also, add a 2.4 compatibility implementation of kthread so that both
2.4 and 2.6 can use the kthread API.

16 years agoFix typo in comment.
Ben Pfaff [Mon, 31 Mar 2008 22:23:53 +0000 (15:23 -0700)]
Fix typo in comment.

16 years agoAdd clarifying comment.
Ben Pfaff [Tue, 1 Apr 2008 17:00:40 +0000 (10:00 -0700)]
Add clarifying comment.

16 years agoGet rid of tables' dependency on the datapath.
Ben Pfaff [Mon, 31 Mar 2008 20:49:28 +0000 (13:49 -0700)]
Get rid of tables' dependency on the datapath.

16 years agoMake the datapath responsible for the controller connection also.
Ben Pfaff [Mon, 31 Mar 2008 16:59:32 +0000 (09:59 -0700)]
Make the datapath responsible for the controller connection also.

16 years agoMerge datapath.[ch] with forward.[ch].
Ben Pfaff [Mon, 31 Mar 2008 16:58:13 +0000 (09:58 -0700)]
Merge datapath.[ch] with forward.[ch].

16 years agoBetter abstract controller_connection.
Ben Pfaff [Mon, 31 Mar 2008 16:53:11 +0000 (09:53 -0700)]
Better abstract controller_connection.

16 years agoReverse the dependency of controller.c on forward.c.
Ben Pfaff [Sat, 29 Mar 2008 00:16:00 +0000 (17:16 -0700)]
Reverse the dependency of controller.c on forward.c.

Now controller.c doesn't depend on datapath.c or forward.c,
which brings us one step closer to a reasonable dependency
hierarchy.

16 years agoHide contents of sw_chain.
Ben Pfaff [Fri, 28 Mar 2008 22:30:13 +0000 (15:30 -0700)]
Hide contents of sw_chain.

16 years agoAdd comments to queue module.
Ben Pfaff [Fri, 28 Mar 2008 22:21:43 +0000 (15:21 -0700)]
Add comments to queue module.

16 years agoClean up and comment poll-loop module.
Ben Pfaff [Fri, 28 Mar 2008 22:02:46 +0000 (15:02 -0700)]
Clean up and comment poll-loop module.

16 years agoClean up and comment netdev implementation.
Ben Pfaff [Fri, 28 Mar 2008 21:03:08 +0000 (14:03 -0700)]
Clean up and comment netdev implementation.

16 years agoGet rid of ip.h, migrating its users to packets.h.
Ben Pfaff [Fri, 28 Mar 2008 22:15:22 +0000 (15:15 -0700)]
Get rid of ip.h, migrating its users to packets.h.

16 years agoGet rid of mac.h, migrating its users to packets.h.
Ben Pfaff [Fri, 28 Mar 2008 21:12:15 +0000 (14:12 -0700)]
Get rid of mac.h, migrating its users to packets.h.

As a consequence, this fixes tests for multicast and local Ethernet
addresses, which formerly tested for the high bits but should
have tested for the low bits of the first octet.

16 years agoSupport jumbo frames, by allocating enough memory for the device MTU.
Ben Pfaff [Fri, 28 Mar 2008 21:01:54 +0000 (14:01 -0700)]
Support jumbo frames, by allocating enough memory for the device MTU.

16 years agoUse LIST_FOR_EACH_SAFE, not LIST_FOR_EACH, when deleting from a list.
Ben Pfaff [Mon, 31 Mar 2008 20:46:39 +0000 (13:46 -0700)]
Use LIST_FOR_EACH_SAFE, not LIST_FOR_EACH, when deleting from a list.

16 years agoFix memory leak in poll-loop.c.
Ben Pfaff [Fri, 28 Mar 2008 22:06:29 +0000 (15:06 -0700)]
Fix memory leak in poll-loop.c.

16 years ago- Fixed endian issue with action type. Thanks, Ben!
Justin Pettit [Sun, 30 Mar 2008 08:41:42 +0000 (01:41 -0700)]
- Fixed endian issue with action type.  Thanks, Ben!
- Removed BUG() call that could be maliciously/accidentally triggered by a faulty controller.
- Switched from __constant_htons to htons, which seems preferred.

16 years agoFixed some tab/space issues.
Justin Pettit [Sun, 30 Mar 2008 08:38:01 +0000 (01:38 -0700)]
Fixed some tab/space issues.

16 years agoFixed some space/tab issues.
Justin Pettit [Sun, 30 Mar 2008 08:37:33 +0000 (01:37 -0700)]
Fixed some space/tab issues.

16 years agoRemove dead "t" directory.
Justin Pettit [Sun, 30 Mar 2008 07:39:54 +0000 (00:39 -0700)]
Remove dead "t" directory.

16 years agoIncrease the version number to v0.2.1.
Justin Pettit [Fri, 28 Mar 2008 17:10:44 +0000 (10:10 -0700)]
Increase the version number to v0.2.1.

16 years agoCompile, but do not distribute, the generate file dhparams.c.
Ben Pfaff [Fri, 28 Mar 2008 16:36:45 +0000 (09:36 -0700)]
Compile, but do not distribute, the generate file dhparams.c.

Improves upon 3d5c5b2b2, "Remove explicit addition of auto-generated
dhparams.c", by allowing "make" to work as well as "make dist" :-)

16 years agoRemove explicit addition of auto-generated dhparams.c, since it makes "make dist...
Justin Pettit [Fri, 28 Mar 2008 07:17:45 +0000 (00:17 -0700)]
Remove explicit addition of auto-generated dhparams.c, since it makes "make dist" puke.

16 years agoRemove dead linux-2.6-uml directory.
Justin Pettit [Fri, 28 Mar 2008 07:04:09 +0000 (00:04 -0700)]
Remove dead linux-2.6-uml directory.

16 years agoIncrease version to 0.2.0.
Justin Pettit [Fri, 28 Mar 2008 06:59:37 +0000 (23:59 -0700)]
Increase version to 0.2.0.

16 years agoUpdate references to point to non-alpha OpenFlow site.
Justin Pettit [Fri, 28 Mar 2008 06:58:48 +0000 (23:58 -0700)]
Update references to point to non-alpha OpenFlow site.

16 years agoUpdate 2007 copyrights to include 2008.
Justin Pettit [Fri, 28 Mar 2008 06:51:58 +0000 (23:51 -0700)]
Update 2007 copyrights to include 2008.

16 years agoUpdate copyright on all non-GPL files
casado [Fri, 28 Mar 2008 03:12:18 +0000 (20:12 -0700)]
Update copyright on all non-GPL files

16 years ago- Turn off ssl support by default
casado [Fri, 28 Mar 2008 02:48:54 +0000 (19:48 -0700)]
- Turn off ssl support by default
- Update docs
- Add ldl to link line (needed from non-ssl builds)

16 years agoAdd list of to-do items for userspace switch.
Ben Pfaff [Fri, 28 Mar 2008 00:48:15 +0000 (17:48 -0700)]
Add list of to-do items for userspace switch.

16 years agoImprove comment.
Ben Pfaff [Fri, 28 Mar 2008 00:46:35 +0000 (17:46 -0700)]
Improve comment.

16 years agoDocumentation wording improvements from Justin.
Ben Pfaff [Fri, 28 Mar 2008 00:46:26 +0000 (17:46 -0700)]
Documentation wording improvements from Justin.

16 years agoSet l4 pointer properly in buffers that contain IP options.
Ben Pfaff [Fri, 28 Mar 2008 00:34:05 +0000 (17:34 -0700)]
Set l4 pointer properly in buffers that contain IP options.

The important part of this change is handling of IP options.  The
rest is intended to ensure that packet->l3 and packet->l4 never
point outside the valid range of a packet in the presence of a
minimum-length Ethernet frame.  Other code (particularly in forward.c)
assumes that if the IP protocol is TCP or UDP, then packet->l4 points
to a tcp_header or udp_header.  Whether this is a good idea is
debatable--it probably warrants clean-up, at least--but that what's
there now.

16 years agoImplement userspace switch.
Ben Pfaff [Thu, 27 Mar 2008 22:19:17 +0000 (15:19 -0700)]
Implement userspace switch.

16 years agoAdd tag to enum for OpenFlow statistics type.
Ben Pfaff [Thu, 27 Mar 2008 22:11:41 +0000 (15:11 -0700)]
Add tag to enum for OpenFlow statistics type.

16 years agoNew function list_replace(), to replace a list element in-place.
Ben Pfaff [Thu, 27 Mar 2008 22:11:01 +0000 (15:11 -0700)]
New function list_replace(), to replace a list element in-place.

16 years agoAdd pointers to headers to buffer, and initialize them in flow_extract.
Ben Pfaff [Thu, 27 Mar 2008 22:09:32 +0000 (15:09 -0700)]
Add pointers to headers to buffer, and initialize them in flow_extract.

This will be used in the userspace switch implementation.

16 years agoAdd abstraction of packet queue, and use it in the controller.
Ben Pfaff [Thu, 27 Mar 2008 22:16:57 +0000 (15:16 -0700)]
Add abstraction of packet queue, and use it in the controller.

The packet queue abstraction will also be used in the userspace
switch.

16 years agoAdd the ability to connect to a vconn asynchronously.
Ben Pfaff [Thu, 27 Mar 2008 22:16:19 +0000 (15:16 -0700)]
Add the ability to connect to a vconn asynchronously.

Until now, vconn_connect() has always completed the connection
synchronously, blocking as necessary.  In the userspace
switch, we want to be able to continue forwarding packets even
if the connection to the controller drops.  Thus, this change set
that makes that possible.

The approach taken is perhaps more ambitious than needed, as it
actually adds a new high-level mechanism for polling on arbitrary
file descriptors.  This necessitates quite a bit of change to
each of the userspace programs that use vconns, but it also has
the effect of simplifying them.  The new structure of these programs
is a lot less fragile than the old one (which tended to end up
livelocking or hanging when something wasn't quite right), so it
seems like the changes are worth it.