openvswitch
16 years agoUpdate Debconf templates PO file.
Ben Pfaff [Wed, 23 Jul 2008 21:57:22 +0000 (14:57 -0700)]
Update Debconf templates PO file.

16 years agoDon't log messages to the console by default in Debian package.
Ben Pfaff [Wed, 23 Jul 2008 21:47:37 +0000 (14:47 -0700)]
Don't log messages to the console by default in Debian package.

16 years agoBe less picky about precise name of process in init script.
Ben Pfaff [Wed, 23 Jul 2008 21:54:19 +0000 (14:54 -0700)]
Be less picky about precise name of process in init script.

The previous version always printed ERROR because for whatever reason
we were comparing "/usr/sbin/secchan" against "secchan", which of
course failed.

16 years agoOnly generate private key and certificate request if ssl enabled.
Ben Pfaff [Wed, 23 Jul 2008 21:53:06 +0000 (14:53 -0700)]
Only generate private key and certificate request if ssl enabled.

Generating them unconditionally caused a problem with the init script:
the script required there to be a certificate for the private key if
the private key existed, but we do want to allow TCP-only configurations
and always having a private key prevented that.

Also, give the user advice on how to deal with this problem when it
arises in the init script.

16 years agoEnable secchan, ofp-discover to update /etc/resolv.conf.
Ben Pfaff [Wed, 23 Jul 2008 21:30:59 +0000 (14:30 -0700)]
Enable secchan, ofp-discover to update /etc/resolv.conf.

This way it becomes possible to more reliably refer to the controller
and the PKI server using hostnames.

16 years agoSupport controller discovery in Debian packages.
Ben Pfaff [Wed, 23 Jul 2008 20:11:00 +0000 (13:11 -0700)]
Support controller discovery in Debian packages.

16 years agoNew utility ofp-kill.
Ben Pfaff [Wed, 23 Jul 2008 20:09:25 +0000 (13:09 -0700)]
New utility ofp-kill.

Needed for controller discovery in upcoming revision of ofp-switch-setup.

16 years agoNew function make_pidfile_name().
Ben Pfaff [Wed, 23 Jul 2008 20:08:31 +0000 (13:08 -0700)]
New function make_pidfile_name().

The upcoming ofp-kill utility wants to use this.

16 years agosecchan: Improve logging when rejecting a controller vconn.
Ben Pfaff [Wed, 23 Jul 2008 20:07:40 +0000 (13:07 -0700)]
secchan: Improve logging when rejecting a controller vconn.

16 years agoLock pidfiles with fcntl and create them atomically.
Ben Pfaff [Wed, 23 Jul 2008 20:07:02 +0000 (13:07 -0700)]
Lock pidfiles with fcntl and create them atomically.

This makes it possible to verify that the program that created the
pidfile is still running.

16 years agoNew program ofp-discover.
Ben Pfaff [Tue, 22 Jul 2008 21:44:10 +0000 (14:44 -0700)]
New program ofp-discover.

16 years agoAdd SIGALRM to blockable fatal signals.
Ben Pfaff [Tue, 22 Jul 2008 20:26:03 +0000 (13:26 -0700)]
Add SIGALRM to blockable fatal signals.

We use SIGALRM to limit runtime of dpctl and ofp-discover.  There is no
reason that we should not clean up after it in the same way as any other
catchable signal.  In particular, ofp-discover wants to restore network
device flags on timeout.

16 years agodhcp: Always build test-dhcp-client.
Ben Pfaff [Tue, 22 Jul 2008 21:01:25 +0000 (14:01 -0700)]
dhcp: Always build test-dhcp-client.

Putting test-dhcp-client in check_PROGRAMS instead of noinst_PROGRAMS
makes it too easy to break test-dhcp-client without noticing it.

16 years agodhcp: Fix race condition in test-dhcp-client.
Ben Pfaff [Tue, 22 Jul 2008 21:01:17 +0000 (14:01 -0700)]
dhcp: Fix race condition in test-dhcp-client.

dhclient_wait() might also access dhcp state.

16 years agodhcp: Only print "entering" message if state actually changes.
Ben Pfaff [Tue, 22 Jul 2008 20:32:42 +0000 (13:32 -0700)]
dhcp: Only print "entering" message if state actually changes.

16 years agodhcp: Don't attempt to drain netdev if we ran out of packets.
Ben Pfaff [Tue, 22 Jul 2008 20:16:08 +0000 (13:16 -0700)]
dhcp: Don't attempt to drain netdev if we ran out of packets.

Fixes a theoretical race condition that would have caused more
retransmission than otherwise necessary.

16 years agodhcp: Make output of dhcp_option_to_string() more uniform, to ease parsing.
Ben Pfaff [Wed, 23 Jul 2008 20:12:14 +0000 (13:12 -0700)]
dhcp: Make output of dhcp_option_to_string() more uniform, to ease parsing.

(The ofp-switch-setup program will want to parse its output.)

16 years agodhcp: Make dhcp_msg_to_string() support a multiline format also.
Ben Pfaff [Tue, 22 Jul 2008 21:01:10 +0000 (14:01 -0700)]
dhcp: Make dhcp_msg_to_string() support a multiline format also.

The upcoming ofp-discover program wants to print out the binding
information, and dhcp_msg_to_string() is pretty close to what it
wants.  But one-field-per-line is easier for other programs to parse.

16 years agodhcp: Break out netdev configuration from DHCP binding.
Ben Pfaff [Tue, 22 Jul 2008 21:01:01 +0000 (14:01 -0700)]
dhcp: Break out netdev configuration from DHCP binding.

This allows us to have DHCP clients that don't actually bind or unbind
a network device's IP address.  This is useful for doing controller
discovery without actually reconfiguring a network device.

16 years agodhcp: Be more precise about updating 'changed' flag.
Ben Pfaff [Tue, 22 Jul 2008 21:00:03 +0000 (14:00 -0700)]
dhcp: Be more precise about updating 'changed' flag.

There's no need to set changed unconditionally in dhclient_init(), and
it can make extra work for the users of the dhclient, by causing them
to think that something changed when it didn't.

16 years agoMake set_pidfile() easier to use.
Ben Pfaff [Tue, 22 Jul 2008 20:53:20 +0000 (13:53 -0700)]
Make set_pidfile() easier to use.

16 years agodpctl: Get rid of effectively unused variable.
Ben Pfaff [Tue, 22 Jul 2008 20:33:02 +0000 (13:33 -0700)]
dpctl: Get rid of effectively unused variable.

16 years agoDon't include unneeded header file.
Ben Pfaff [Mon, 21 Jul 2008 23:30:53 +0000 (16:30 -0700)]
Don't include unneeded header file.

16 years agoDo the Debian package build in a _debian subdirectory.
Ben Pfaff [Mon, 21 Jul 2008 22:44:18 +0000 (15:44 -0700)]
Do the Debian package build in a _debian subdirectory.

This makes it easier to do a Debian build in the same source tree
also being used for other development.

16 years agoDon't unnecessarily link against -lresolv and -ldl.
Ben Pfaff [Mon, 21 Jul 2008 22:42:31 +0000 (15:42 -0700)]
Don't unnecessarily link against -lresolv and -ldl.

Eliminates warnings given by dpkg-shlibdeps when building Debian
packages.

16 years agoDistribute new rculist.h headers.
Ben Pfaff [Mon, 21 Jul 2008 22:41:38 +0000 (15:41 -0700)]
Distribute new rculist.h headers.

16 years agoMove Autoconf's macro definitions into config.h.
Ben Pfaff [Mon, 21 Jul 2008 22:04:54 +0000 (15:04 -0700)]
Move Autoconf's macro definitions into config.h.

This makes "make" output slightly more readable.

16 years agoDrop use of libtool for libraries.
Ben Pfaff [Mon, 21 Jul 2008 21:48:53 +0000 (14:48 -0700)]
Drop use of libtool for libraries.

libtool was needed when NOX was directly linking against libopenflow.
Since it doesn't do that anymore, we can drop its use (and that makes
OpenFlow configure and build slightly faster).

16 years agoDon't explicitly link against libdl.
Ben Pfaff [Mon, 21 Jul 2008 21:50:36 +0000 (14:50 -0700)]
Don't explicitly link against libdl.

There is no need to add -ldl explicitly to each program's LDADD, because
the configure test for dladdr does that for us.

16 years agoOnly link programs that need it against OpenSSL.
Ben Pfaff [Mon, 21 Jul 2008 21:37:21 +0000 (14:37 -0700)]
Only link programs that need it against OpenSSL.

This keeps vlogconf, in particular, from being linked against OpenSSL,
which in turn keeps the Debian package build tools from complaining that
the openflow-common package shouldn't need to depend on OpenSSL but does
because of the spurious library link.

16 years agoMake openflow.h SWIG-friendly.
Ben Pfaff [Mon, 21 Jul 2008 18:39:39 +0000 (11:39 -0700)]
Make openflow.h SWIG-friendly.

16 years agoFix build on Linux 2.6.26.
Ben Pfaff [Sat, 19 Jul 2008 23:14:18 +0000 (16:14 -0700)]
Fix build on Linux 2.6.26.

Linux 2.6.26 requires us to additionally include <linux/rculist.h>
to use RCU lists.

16 years agoUse an IP ID of 0 for transmitted DHCP packets.
Ben Pfaff [Thu, 17 Jul 2008 18:58:15 +0000 (11:58 -0700)]
Use an IP ID of 0 for transmitted DHCP packets.

We can't guarantee uniqueness of ip_id versus the host's, screwing up
fragment reassembly, so prevent fragmentation and use an all-zeros
ip_id.  RFC 791 doesn't say we can do this, but Linux does the same
thing for DF packets, so it must not screw anything up.

16 years agoDiscovery.
Ben Pfaff [Tue, 15 Jul 2008 18:20:05 +0000 (11:20 -0700)]
Discovery.

16 years agoDon't truncate flooded packets at the amount sent up by the switch.
Ben Pfaff [Mon, 14 Jul 2008 22:27:19 +0000 (15:27 -0700)]
Don't truncate flooded packets at the amount sent up by the switch.

16 years agoMake facility and level optional in -v, --verbose options.
Ben Pfaff [Mon, 14 Jul 2008 21:10:18 +0000 (14:10 -0700)]
Make facility and level optional in -v, --verbose options.

This makes it easier to set a given module to maximum verbosity,
as is often useful for debugging.

16 years agoImplement DHCP client.
Ben Pfaff [Tue, 8 Jul 2008 00:18:34 +0000 (17:18 -0700)]
Implement DHCP client.

16 years agovconn: Make errors in vconn names non-fatal errors.
Ben Pfaff [Mon, 14 Jul 2008 21:01:06 +0000 (14:01 -0700)]
vconn: Make errors in vconn names non-fatal errors.

This prevents bad vconn names obtained via discovery from killing
the secure channel.

16 years agovconn: New function vconn_ssl_is_configured().
Ben Pfaff [Mon, 14 Jul 2008 20:56:39 +0000 (13:56 -0700)]
vconn: New function vconn_ssl_is_configured().

The secure channel, in discovery mode, wants to enable TCP connections
by default only if SSL has not been configured.  This function allows
it to do that.

16 years agovconn: Add assertions to vconn_send() to check consistency of outgoing messages.
Ben Pfaff [Mon, 14 Jul 2008 20:53:28 +0000 (13:53 -0700)]
vconn: Add assertions to vconn_send() to check consistency of outgoing messages.

16 years agovconn: Add new function vconn_transact() and use it to simplify dpctl.c.
Ben Pfaff [Fri, 18 Jul 2008 21:16:38 +0000 (14:16 -0700)]
vconn: Add new function vconn_transact() and use it to simplify dpctl.c.

16 years agovconn: Add utility functions make_openflow() and update_openflow_length().
Ben Pfaff [Fri, 18 Jul 2008 21:08:18 +0000 (14:08 -0700)]
vconn: Add utility functions make_openflow() and update_openflow_length().

Use these functions to simplify code that creates and sends
OpenFlow packets.

16 years agoAdd new --max-backoff option to secchan and switch programs.
Ben Pfaff [Mon, 14 Jul 2008 20:20:00 +0000 (13:20 -0700)]
Add new --max-backoff option to secchan and switch programs.

One use case is when NOX is running on localhost, in which case waiting
for the full default backoff interval is unnecessary and undesirable.

Also changes default maximum backoff to 15 seconds (from 60).

16 years agorconn: Add questionability.
Ben Pfaff [Mon, 14 Jul 2008 20:32:13 +0000 (13:32 -0700)]
rconn: Add questionability.

16 years agorconn: Rewrite to use explicit state machine.
Ben Pfaff [Mon, 14 Jul 2008 20:43:17 +0000 (13:43 -0700)]
rconn: Rewrite to use explicit state machine.

16 years agorconn: Push detection of send errors into try_send().
Ben Pfaff [Mon, 14 Jul 2008 20:31:56 +0000 (13:31 -0700)]
rconn: Push detection of send errors into try_send().

Thereby, we correct a bug in do_send(), one of the callers of try_send(),
which was not checking the try_send() return value.

16 years agorconn: Time out connection attempts when the backoff deadline passes.
Ben Pfaff [Mon, 14 Jul 2008 20:34:14 +0000 (13:34 -0700)]
rconn: Time out connection attempts when the backoff deadline passes.

Otherwise, the TCP/IP implementation is responsible for connection
attempt backoff, but we want to have some control over it ourselves.
In particular we want to initially back off faster and to log a
message upon connection attempt retransmission, to make it easier
to see what has happened from the log.

16 years agorconn: Log when a connection attempt starts.
Ben Pfaff [Mon, 14 Jul 2008 20:31:42 +0000 (13:31 -0700)]
rconn: Log when a connection attempt starts.

This makes it easier to see what happened by viewing the log.

16 years agorconn: Add new max_backoff argument to rconn_new().
Ben Pfaff [Mon, 14 Jul 2008 20:31:28 +0000 (13:31 -0700)]
rconn: Add new max_backoff argument to rconn_new().

This allows the caller more control over reconnection backoff.

16 years agonetdev: add ability to set IPv4 addresses and add a default gateway.
Ben Pfaff [Mon, 14 Jul 2008 20:02:27 +0000 (13:02 -0700)]
netdev: add ability to set IPv4 addresses and add a default gateway.

16 years agonetdev: Add ability to permanently set device flags.
Ben Pfaff [Fri, 18 Jul 2008 20:55:12 +0000 (13:55 -0700)]
netdev: Add ability to permanently set device flags.

16 years agonetdev: Use SOCK_RAW instead of SOCK_PACKET.
Ben Pfaff [Mon, 14 Jul 2008 20:03:49 +0000 (13:03 -0700)]
netdev: Use SOCK_RAW instead of SOCK_PACKET.

A comment previously claimed this wasn't possible, but it
was wrong (and due to misunderstanding kernel code).

16 years agonetdev: Add more functions for manipulating device flags.
Ben Pfaff [Mon, 14 Jul 2008 20:03:37 +0000 (13:03 -0700)]
netdev: Add more functions for manipulating device flags.

These are convenient for use in secchan and elsewhere.

16 years agonetdev: New function netdev_drain().
Ben Pfaff [Mon, 14 Jul 2008 20:03:27 +0000 (13:03 -0700)]
netdev: New function netdev_drain().

16 years agonetdev: Add argument to netdev_open() to specify Ethernet type to capture.
Ben Pfaff [Mon, 14 Jul 2008 20:03:19 +0000 (13:03 -0700)]
netdev: Add argument to netdev_open() to specify Ethernet type to capture.

This is needed by the controller, which wants to listen only for
OpenFlow discovery BPDUs on its network devices.

Also, update all existing callers.

16 years agonetdev: Do not modify the caller's buffer in netdev_send().
Ben Pfaff [Mon, 14 Jul 2008 20:03:09 +0000 (13:03 -0700)]
netdev: Do not modify the caller's buffer in netdev_send().

This makes it possible to use a buffer whose contents are stack-allocated.

16 years agopackets: Make flow_extract() output a pointer to L7 data also.
Ben Pfaff [Mon, 14 Jul 2008 20:55:22 +0000 (13:55 -0700)]
packets: Make flow_extract() output a pointer to L7 data also.

Useful for the DHCP client, which wants to pick apart UDP packets
and extract the DHCP payload.

16 years agopackets: New macros for detecting IP fragments.
Ben Pfaff [Mon, 14 Jul 2008 20:54:45 +0000 (13:54 -0700)]
packets: New macros for detecting IP fragments.

16 years agopackets: Move IP checksum functionality into new csum.c, csum.h.
Ben Pfaff [Mon, 14 Jul 2008 20:54:38 +0000 (13:54 -0700)]
packets: Move IP checksum functionality into new csum.c, csum.h.

16 years agopackets: Distinguish max Ethernet length with and without VLAN header.
Ben Pfaff [Mon, 14 Jul 2008 20:54:27 +0000 (13:54 -0700)]
packets: Distinguish max Ethernet length with and without VLAN header.

16 years agopackets: New IP header macros.
Ben Pfaff [Mon, 14 Jul 2008 20:54:22 +0000 (13:54 -0700)]
packets: New IP header macros.

16 years agopackets: Make Ethernet broadcast address available as a global object.
Ben Pfaff [Mon, 14 Jul 2008 20:54:13 +0000 (13:54 -0700)]
packets: Make Ethernet broadcast address available as a global object.

16 years agobuffer: New functions buffer_reserve(), buffer_push(),
Ben Pfaff [Mon, 14 Jul 2008 20:51:46 +0000 (13:51 -0700)]
buffer: New functions buffer_reserve(), buffer_push(),
buffer_try_pull().

16 years agobuffer: Rename buffer_reserve_headroom to buffer_prealloc_headroom.
Ben Pfaff [Mon, 14 Jul 2008 20:51:37 +0000 (13:51 -0700)]
buffer: Rename buffer_reserve_headroom to buffer_prealloc_headroom.

Similarly for buffer_reserve_tailroom.

The new name better reflects what they do, and make way for a different
use of the term "reserve" in the upcoming buffer_reserve() function.

16 years agobuffer: Make buffer_pull() return the start of the pulled data.
Ben Pfaff [Mon, 14 Jul 2008 20:51:26 +0000 (13:51 -0700)]
buffer: Make buffer_pull() return the start of the pulled data.

Some callers find this useful.

16 years agoNew function xmemdup0().
Ben Pfaff [Thu, 10 Jul 2008 17:45:05 +0000 (10:45 -0700)]
New function xmemdup0().

16 years agoNew function ds_clear().
Ben Pfaff [Thu, 10 Jul 2008 00:22:17 +0000 (17:22 -0700)]
New function ds_clear().

16 years agoNew function random_range().
Ben Pfaff [Wed, 9 Jul 2008 01:40:41 +0000 (18:40 -0700)]
New function random_range().

16 years agoNew header file timeval.h for time-related functionality.
Ben Pfaff [Sat, 12 Jul 2008 00:07:27 +0000 (17:07 -0700)]
New header file timeval.h for time-related functionality.

16 years agoNew header file "type-props.h" for testing properties of types.
Ben Pfaff [Sat, 12 Jul 2008 00:07:05 +0000 (17:07 -0700)]
New header file "type-props.h" for testing properties of types.

16 years agoSet skb->dev before calling netif_rx().
Ben Pfaff [Tue, 8 Jul 2008 20:46:14 +0000 (13:46 -0700)]
Set skb->dev before calling netif_rx().

Fixes null pointer dereference reported by David Erickson
<derickso@stanford.edu>.

16 years agoFix "make dist".
Ben Pfaff [Tue, 15 Jul 2008 18:21:06 +0000 (11:21 -0700)]
Fix "make dist".

16 years agoBy default, log to syslog also.
Ben Pfaff [Thu, 17 Jul 2008 00:52:41 +0000 (17:52 -0700)]
By default, log to syslog also.

It seems that this should be useful for debugging post-mortems.  Also,
this ensures that the "current time is negative" log message appears in
syslog.  Otherwise, it won't ever, because we log it before the vlog
client has a chance to configure its log levels.

16 years agoLog an error when the time is negative at vlog startup.
Ben Pfaff [Thu, 17 Jul 2008 00:50:06 +0000 (17:50 -0700)]
Log an error when the time is negative at vlog startup.

16 years agoFix behavior when system date is negative.
Ben Pfaff [Wed, 16 Jul 2008 18:14:23 +0000 (11:14 -0700)]
Fix behavior when system date is negative.

Previously we set a few timers to expire at a time_t of 0, i.e.
immediately.  But if the system date is set incorrectly to a date
before 1970, then these timers will essentially never expire.
Set them to expire at TIME_MIN instead.

16 years agoAnswer ARP requests from controller directly in secchan.
Ben Pfaff [Thu, 17 Jul 2008 00:01:03 +0000 (17:01 -0700)]
Answer ARP requests from controller directly in secchan.

With in-band control, it can happen that the controller needs to send
out an ARP request to find out the MAC address of the switch.  These
packets are sent as broadcasts, so the secure channel will attempt to
send them back to the controller as ofp_packet_in messages.  Of course,
that won't work, because the controller won't be able to respond to
the ofp_packet_in (because it needs the MAC address of the switch to
do so).

This commit makes the secure channel recognize broadcast ARP packets
that originate from the controller and flood them without passing them
back up to the controller.

16 years agoNew function eth_addr_is_zero().
Ben Pfaff [Wed, 16 Jul 2008 20:22:11 +0000 (13:22 -0700)]
New function eth_addr_is_zero().

16 years agoNew function netdev_arp_lookup().
Ben Pfaff [Wed, 16 Jul 2008 19:55:18 +0000 (12:55 -0700)]
New function netdev_arp_lookup().

The secchan needs to handle ARP requests from the controller itself, so
it has to translate the controller's IP address into a MAC address to
allow it to match those packets on dl_src.  (OpenFlow doesn't allow us
to look into ARP packets and match on the encapsulated IP addresses, so
this is the best we can do.)

16 years agoNew function rconn_get_ip().
Ben Pfaff [Wed, 16 Jul 2008 20:22:30 +0000 (13:22 -0700)]
New function rconn_get_ip().

16 years agoNew function vconn_get_ip().
Ben Pfaff [Wed, 16 Jul 2008 19:51:34 +0000 (12:51 -0700)]
New function vconn_get_ip().

The secchan needs to know the IP address of the peer so that it can
handles ARP requests from the controller by itself.

16 years agoAssert on structure sizes in openflow.h.
Ben Pfaff [Thu, 17 Jul 2008 05:51:35 +0000 (22:51 -0700)]
Assert on structure sizes in openflow.h.

This causes the build to fail if structures are not the sizes that we
expect.

16 years agoAdjust OpenFlow to have same structure layout on 32- and 64-bit platforms.
Ben Pfaff [Thu, 17 Jul 2008 05:50:39 +0000 (22:50 -0700)]
Adjust OpenFlow to have same structure layout on 32- and 64-bit platforms.

Pointed out by "Brandon Heller" <brandon.heller@gmail.com>.

16 years agoInclude date and time in vlog messages.
Ben Pfaff [Wed, 16 Jul 2008 21:38:20 +0000 (14:38 -0700)]
Include date and time in vlog messages.

16 years agoAdd "probe" command to dpctl.
Ben Pfaff [Thu, 3 Jul 2008 19:06:14 +0000 (12:06 -0700)]
Add "probe" command to dpctl.

16 years agoPrevent switch implementations from complaining about echo-reply messages.
Ben Pfaff [Tue, 15 Jul 2008 19:43:59 +0000 (12:43 -0700)]
Prevent switch implementations from complaining about echo-reply messages.

Thanks to Reid Price <reid@nicira.com> for reporting the issue (which
only caused spurious warning messages).

16 years agoFix typo in comment.
Ben Pfaff [Tue, 8 Jul 2008 18:06:19 +0000 (11:06 -0700)]
Fix typo in comment.

16 years agoFix typo in comment.
Ben Pfaff [Fri, 23 May 2008 23:23:51 +0000 (16:23 -0700)]
Fix typo in comment.

16 years agoFix segfault when SSL_connect or SSL_accept reports an error.
Ben Pfaff [Tue, 1 Jul 2008 21:17:41 +0000 (14:17 -0700)]
Fix segfault when SSL_connect or SSL_accept reports an error.

16 years agoAnnounce fail-open mode more aggressively in secchan.
Ben Pfaff [Fri, 27 Jun 2008 22:16:30 +0000 (15:16 -0700)]
Announce fail-open mode more aggressively in secchan.

Without this change, the secure channel announces that it is
entering or exiting fail-open mode only when an OpenFlow
message actually arrives from the local datapath.  Thus,
when no packets arrive on any switch port, the secchan
never enters fail-open mode.  Functionally, this makes no
difference, because there are no packets to switch anyhow
in that case, but it makes the log harder to interpret
since it's unclear whether the controller connection is
actually up.

With this change, the secure channel announcing that it is
entering or exiting fail-open mode is not tied to receiving
a packet on a switch port.  Thus, the log is easier to
interpret.

16 years agoMake the secure channel and controller send out keepalives.
Ben Pfaff [Tue, 1 Jul 2008 18:14:45 +0000 (11:14 -0700)]
Make the secure channel and controller send out keepalives.

It can happen that the secure channel thinks that it is connected
to the controller, but in fact the connection has dropped.  For
example, a switch intermediate between the secure channel and the
controller could have a flow inserted, due to a malfunction, that
causes packets in one direction or the other to be dropped.  When
this happens, the Linux kernel's TCP implementation will continue
retransmitting packets for somewhere between 13 and 30 minutes,
depending on the connection's retransmission timeout (according
to linux/Documentation/networking/ip-sysctl.txt) with the default
Linux settings.

We want to detect the lost connection and re-connect much faster
than that.  We use OpenFlow echo request and reply messages: if
no message is received from the controller for N seconds, we
send out an echo request.  If no reply (actually, any message at
all) is received for an additional N seconds, then we assume
that the connection has been lost, and reconnect.

16 years agoDrop "benchmark" netlink message and "benchmark-nl" dpctl command.
Ben Pfaff [Tue, 1 Jul 2008 17:52:34 +0000 (10:52 -0700)]
Drop "benchmark" netlink message and "benchmark-nl" dpctl command.

The new OFPT_ECHO_REQUEST and OFPT_ECHO_REPLY OpenFlow messages
have the same functionality and are more general (in that they
are not Netlink-specific).

16 years agoAdd "benchmark" command to work like "benchmark-nl" with echo requests.
Ben Pfaff [Tue, 1 Jul 2008 17:50:25 +0000 (10:50 -0700)]
Add "benchmark" command to work like "benchmark-nl" with echo requests.

Suggested by Justin.

16 years agoAdd "ping" command to dpctl for testing echo requests.
Ben Pfaff [Fri, 27 Jun 2008 18:18:40 +0000 (11:18 -0700)]
Add "ping" command to dpctl for testing echo requests.

Also may be useful for latency testing.

16 years agoRespond to echo requests in OpenFlow implementations.
Ben Pfaff [Fri, 27 Jun 2008 17:42:31 +0000 (10:42 -0700)]
Respond to echo requests in OpenFlow implementations.

Nothing yet sends such requests.  This is preparation for their
use in following commits.

16 years agoAdd utility functions for generating random numbers, and use where appropriate.
Ben Pfaff [Fri, 27 Jun 2008 17:52:11 +0000 (10:52 -0700)]
Add utility functions for generating random numbers, and use where appropriate.

16 years agoFix -v, --verbose options to userspace programs.
Ben Pfaff [Fri, 27 Jun 2008 21:16:53 +0000 (14:16 -0700)]
Fix -v, --verbose options to userspace programs.

Now providing an argument to these options works as documented.

16 years agoFix typo in user message.
Ben Pfaff [Fri, 27 Jun 2008 23:20:27 +0000 (16:20 -0700)]
Fix typo in user message.

16 years agoFix commit 8bdd107e0 (jiffies linking error) when not running on Red Hat.
Ben Pfaff [Tue, 1 Jul 2008 16:02:59 +0000 (09:02 -0700)]
Fix commit 8bdd107e0 (jiffies linking error) when not running on Red Hat.

From David Erickson <derickso@stanford.edu>.

16 years agoImprove flow handling in dpctl.
Justin Pettit [Tue, 1 Jul 2008 06:05:14 +0000 (23:05 -0700)]
Improve flow handling in dpctl.

This makes the handling of defining and printing actions more consistent in
dpctl.  The flow portion of the output of "dump-flows" can now be used as the
input of "add-flows".  Flows can be added on the command line with the new
"add-flow" command.

16 years agoDon't allow adding a flow entry with an output port of OFPP_NONE.
Justin Pettit [Mon, 30 Jun 2008 23:00:25 +0000 (16:00 -0700)]
Don't allow adding a flow entry with an output port of OFPP_NONE.