Ben Pfaff [Tue, 11 Nov 2008 21:33:24 +0000 (13:33 -0800)]
In handle_arp_snat() and snat_pre_route() pull enough payload into the headers.
There is no guarantee that the device put any data at all into the header.
The e1000 device, for example, appears to not put any data into the header
when the packet is longer than its configured copybreak value, which is
256 bytes by default. So we need to do it ourselves.
Ben Pfaff [Tue, 11 Nov 2008 22:08:41 +0000 (14:08 -0800)]
Orphan and clone packets transmitted on dp_dev (proper fix for bug #478).
We need to orphan packets transmitted on dp_dev so that any socket that
the packets came from is no longer charged for them. If we don't do
this, then the sk_buff will be destructed eventually, but it is
harder to predict when.
We need to clone packets because we are sticking them on
&dp_dev->xmit_queue, which is done by modifying the sk_buff, which we
can only do if it is not shared.
Ben Pfaff [Wed, 5 Nov 2008 18:03:07 +0000 (10:03 -0800)]
Make ofp-switch-setup preserve config variables that it does not set itself.
Before, it would delete them. This probably kept ofp-switch-setup from
working at all given the changes in openflow-switch.default. Now, it
should do better (but it has not been tested).
Ben Pfaff [Tue, 4 Nov 2008 22:26:38 +0000 (14:26 -0800)]
Use "set -e" command instead of "#! /bin/sh -e" magic.
Otherwise, running the script through an explicit shell invocation, such
as "sh -x <script>" for debugging, will fail to set -e and therefore the
script's behavior will change.
Ben Pfaff [Fri, 31 Oct 2008 20:50:33 +0000 (13:50 -0700)]
Put ofp-pki logfile in log directory instead of in pki directory.
This should fix problems with trying to log on a machine that doesn't have
openflow-pki installed (because such machines didn't have the pki
directory). Every machine needs the log directory.
Justin Pettit [Thu, 30 Oct 2008 23:23:27 +0000 (16:23 -0700)]
Pull configuration information from DMI.
Pull configuration information from DMI when available. In its current form,
it will only use DMI information set by Nicira. Otherwise, it will use default
values. This change also makes DPIDs the same as the MAC address of the
local OpenFlow device.
Ben Pfaff [Wed, 29 Oct 2008 22:15:45 +0000 (15:15 -0700)]
Move exported headers to include/openflow, private headers to lib/.
This makes it easier to install the headers, or to use them directly from
another software package with -I$(openflow)/include, without invading
the top-level include file namespace.
Justin Pettit [Sat, 25 Oct 2008 00:24:06 +0000 (17:24 -0700)]
Fix leaking of flows when output action validation fails.
When action validation fails from a flow add, the flow would be leaked. This
caused the kmem cache (which handles allocating flow entries) to be unhappy
when we try to unload the OpenFlow module.
Ben Pfaff [Thu, 23 Oct 2008 21:03:44 +0000 (14:03 -0700)]
Update manpages to mention new --log-file option.
Move vlog option descriptions into a separate file lib/vlog.man that
is substituted into manpages.
Get rid of individual rules for substituting most files in favor of
a single suffix rule. Unfortunately this loses the (Emacs-specific)
read-only markings but it simplifies the makefiles.
Ben Pfaff [Thu, 23 Oct 2008 17:45:39 +0000 (10:45 -0700)]
vlog: Add ability to log to an arbitrary file, and following related changes:
* New command-line options for configuring log files, hence:
- Centralized vlog usage messages.
* New vlogconf action for reopening log files.
* New vlogconf support for specifying a target by pidfile.
Ben Pfaff [Wed, 22 Oct 2008 21:53:25 +0000 (14:53 -0700)]
Make pkidir, rundir, logdir modifiable from "configure" command line.
Make "make" behave properly when these are changed by re-running
"configure", by putting their definitions into a generated file that
depends on Makefile.
Justin Pettit [Wed, 22 Oct 2008 00:16:28 +0000 (17:16 -0700)]
Fix crash when SNAT support is built and traffic is in-band.
In order to make netfilter happy, we have to create a fake routing table
entry. Unfortunately, the kernel really doesn't like this when it actually
needs to make use of it. This code now removes the link between the packet
and the fake routing entry when the packet is being sent to a local port.