Private vendor extension file had separate handling for big/little
endian. All places in the code where these values are put on/removed
from the wire are wrapped by hton* and ntoh* function calls, eliminating
the need for separate constants.
Commit 238c5065 (Vlan pcp match: Reorder VLAN priority field...)
changed ofp_match from 36B to 40B, breaking the 8B alignment of a
number of structs. This commit modifies those structs to at least
pass the assertion tests and regression tests.
Enable additional basic QoS support, without requiring a full QoS
framework. This commit defines a flow action to rewrite the DiffServ
CodePoint bits of the IP ToS field in the IP header.
Before this spec change, flow expiration messages included a duration
field for the time the flow was active. To find out the amount of time
the flow received traffic would have been much harder - the controller
would need to store a record of all flow mods it has sent, to know the
idle_timeout of this flow. Additionally, both phrases, 'time flow was
active' and 'time traffic was received' were used in the spec for the
duration field.
Now we return the idle timeout in the flow expiration message, and ensure
duration is the time the entry was present in the flow table. The hard
timeout will be obvious if it is the reason for the deletion, since the
reason field will be OFPER_HARD_TIMEOUT, and the duration will be the hard
timeout value. From the duration and the idle_timeout, we can also
compute the time the flow received traffic.
A number of protocols such as SNMP and STP start counting ports at one. To
increase compatibility, this commit adds a requirement that OpenFlow
ingress port values start at one.
An OpenFlow hypervisor might choose to reject an OpenFlow request, but
currently has no message type defined for this error. It is not a
vendor-specific error, thus we define an _EPERM error code for each error
type.
Also remove unused, commented-out text.
When a switch receives a barrier message it must first complete all
commands sent before the barrier message before executing any commands
after it. When all commands before the Barrier message have completed,
it must send a barrier reply message back to the controller.
detection handler for table maintanance
Add a CHECK_OVERLAP flag to flow mods which requires the switch to do
the (potentially more costly) check that there doesn't already exist a
conflicting flow with the same priority. If there is one, the mod
fails and an error code is returned.
Flow expiry: Record OFPFF_SEND_FLOW_EXP flag in user data path
Previously, a switch would only notify the controller when flows expired.
Now, when a switch is told to delete flows, it sends a flow expiration
message, enabling the controller to get packet and byte counts from
deleted flows. Without this, the controller must retrieve flow statistics
and then delete the flow, during which time the counts could change. This
could also aid in debugging if multiple applications or programs
controlling the same switch are deleting each others' flows.
This commit adds a OFPER_DELETE as a choice for the reason field of a flow
expiration.
Make flow expirations per-flow-entry, rather than per-switch.
This commit should give controllers extra flexibility to decide when they
want expirations, will simplify the job of an OpenFlow hypervisor, and may
reduce CPU load at the switch.
collector
Fix BUG#49: Add OpenFlow protocol statistical information collector
and user interface. This feature use PRIVATE_VENDOR_ID to communicate
betwewn control plane process and user interface. PRIVATE_VENDOR_ID is
defined only for private use (and based on private OUI).
Remove monolithic OpenFlow switch.
Add userspace datapath.
Fix BUG#13: Revise check wildcards for in_port != out_port output
validation.
Fix BUG#30: Made use of get_jiffies_64 instead of jiffies.
Fix BUG#31: Fix NetFPGA crash in case of test_delete test harness run.
Fix BUG#32: Add stack depth limitation to avoid inifinite loop in
log_backtrace.
Fix BUG#33: Improve NetFPGA kernel extension and NetFPGA image to
support MAC address rewrite features (two actions) on NetFPGA enabled
OpenFlow switch.
Fix BUG#34: Add NetFPGA kernel extension source codes to create
distribution package with NetFPGA correctly.
Fix BUG#38: Improve regression test for FLOW_MOD ACTION SET_DL_SRC and
SET_DL_DST.
Fix BUG#39: Correct misunderstanding of byte order ops for OFPAT_XXX.
To support this, an "out_port" field has been added to the "ofp_flow_mod",
"ofp_flow_stats_request", and "ofp_aggregate_stats_request" messages. If an
"out_port" contains a value other than "OFPP_NONE", it introduces a constraint
when matching. This constraint is that the rule must contain an output action
directed at that port. Other constraints such as ofp_match structs and
priorities are still used; this is purely an *additional* constraint. Note
that to get previous behavior, though, "out_port" must be set to "OFPP_NONE",
since "0" is a valid port id. This only applies to the delete and
delete_strict flow mod commands; the field is ignored by add, modify, and
modify_strict.
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.
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.
* 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.
Make "make" behave properly when these are changed by re-running
"configure", by putting their definitions into a generated file that
depends on Makefile.