summaryrefslogtreecommitdiff
path: root/lib/nx-match.h
Commit message (Collapse)AuthorAgeFilesLines
* tun-metadata: Manage tunnel TLV mapping table on a per-bridge basis.Jesse Gross2016-09-191-5/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When using tunnel TLVs (at the moment, this means Geneve options), a controller must first map the class and type onto an appropriate OXM field so that it can be used in OVS flow operations. This table is managed using OpenFlow extensions. The original code that added support for TLVs made the mapping table global as a simplification. However, this is not really logically correct as the OpenFlow management commands are operating on a per-bridge basis. This removes the original limitation to make the table per-bridge. One nice result of this change is that it is generally clearer whether the tunnel metadata is in datapath or OpenFlow format. Rather than allowing ad-hoc format changes and trying to handle both formats in the tunnel metadata functions, the format is more clearly separated by function. Datapaths (both kernel and userspace) use datapath format and it is not changed during the upcall process. At the beginning of action translation, tunnel metadata is converted to OpenFlow format and flows and wildcards are translated back at the end of the process. As an additional benefit, this change improves performance in some flow setup situations by keeping the tunnel metadata in the original packet format in more cases. This helps when copies need to be made as the amount of data touched is only what is present in the packet rather than the maximum amount of metadata supported. Co-authored-by: Madhu Challa <challa@noironetworks.com> Signed-off-by: Madhu Challa <challa@noironetworks.com> Signed-off-by: Jesse Gross <jesse@kernel.org> Acked-by: Ben Pfaff <blp@ovn.org>
* meta-flow: New functions mf_subfield_copy() and mf_subfield_swap().Ben Pfaff2016-08-151-2/+0
| | | | | | | | | | | | | | | | | The function nxm_execute_reg_move() was almost a general-purpose function for manipulating subfields, except for its awkward interface that took a struct ofpact_reg_move instead of a plain source and destination. This commit introduces a general-purpose function in meta-flow that corrects this flaw, and updates the callers. An upcoming commit will introduce a new user of the function. This commit also introduces a related function mf_subfield_swap() to swap the contents of subfields. An upcoming commit will introduce the first user. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Ryan Moats <rmoats@us.ibm.com> Acked-by: Justin Pettit <jpettit@ovn.org>
* Move lib/meta-flow.h to include/openvswitch directoryBen Warren2016-04-141-1/+1
| | | | | | | | | This commit also moves some bitmap macros into public header files and adds some #include directives in soure files in order to make the 'meta-flow.h' move possible. Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* Move lib/ofp-errors.h to include/openvswitch directoryBen Warren2016-03-191-1/+1
| | | | | Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* nx-match: Add functions for raw decoding and encoding of OXM.Ben Pfaff2016-01-201-1/+6
| | | | | | | | | | The existing functions either assumed that we were working with NXM (instead of OXM), or they added or parsed a header before OXM headers. These aren't needed when OXM is encapsulated inside a property, as will be the case in an upcoming commit. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Jarno Rajahalme <jarno@ovn.org>
* tunnel: Support matching on the presence of Geneve options.Jesse Gross2015-08-281-3/+3
| | | | | | | | | | | | | | | | | | | | | Sometimes it is useful to match only on whether a Geneve option is present even if the specific value is unimportant. A special case of this is zero length options where there is no value at all and the only information conveyed is whether the option was included in the packet. This operation was partially supported before but it was not consistent - in particular, options were never serialized through NXM/OXM unless they had a non-zero mask. Furthermore, zero length options were rejected altogether when they were installed through the Geneve map OpenFlow command. This adds support for these types of matches by making any NXM/OXM for tunnel metadata force a match on that field. In the case of a zero length option, both the value and mask of the NXM are ignored. Signed-off-by: Jesse Gross <jesse@nicira.com> Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
* tunnel: Geneve TLV handling support for OpenFlow.Jesse Gross2015-06-251-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current support for Geneve in OVS is exactly equivalent to VXLAN: it is possible to set and match on the VNI but not on any options contained in the header. This patch enables the use of options. The goal for Geneve support is not to add support for any particular option but to allow end users or controllers to specify what they would like to match. That is, the full range of Geneve's capabilities should be exposed without modifying the code (the one exception being options that require per-packet computation in the fast path). The main issue with supporting Geneve options is how to integrate the fields into the existing OpenFlow pipeline. All existing operations are referred to by their NXM/OXM field name - matches, action generation, arithmetic operations (i.e. tranfer to a register). However, the Geneve option space is exactly the same as the OXM space, so a direct mapping is not feasible. Instead, we create a pool of 64 NXMs that are then dynamically mapped on Geneve option TLVs using OpenFlow. Once mapped, these fields become first-class citizens in the OpenFlow pipeline. An example of how to use Geneve options: ovs-ofctl add-geneve-map br0 {class=0xffff,type=0,len=4}->tun_metadata0 ovs-ofctl add-flow br0 in_port=LOCAL,actions=set_field:0xffffffff->tun_metadata0,1 This will add a 4 bytes option (filled will all 1's) to all packets coming from the LOCAL port and then send then out to port 1. A limitation of this patch is that although the option table is specified for a particular switch over OpenFlow, it is currently global to all switches. This will be addressed in a future patch. Based on work originally done by Madhu Challa. Ben Pfaff also significantly improved the comments. Signed-off-by: Madhu Challa <challa@noironetworks.com> Signed-off-by: Jesse Gross <jesse@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
* Support encoding of NTR selection methodSimon Horman2015-03-241-0/+3
| | | | | | | | | Include NTR selection method experimenter group property in in group mod request and group desc reply. NTR selection method Signed-off-by: Simon Horman <simon.horman@netronome.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
* Support decoding of NTR selection methodSimon Horman2015-03-241-0/+2
| | | | | | | | | | | | | This is in preparation for supporting group mod and desc reply messages with an NTR selection method group experimenter property. Currently decoding always fails as it only allows properties for known selection methods and no selection methods are known yet. A subsequent patch will propose a hash selection method. NTR selection method Signed-off-by: Simon Horman <simon.horman@netronome.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
* lib: Move compiler.h to <openvswitch/compiler.h>Thomas Graf2014-12-151-4/+4
| | | | | | | | | | The following macros are renamed to avoid conflicts with other headers: * WARN_UNUSED_RESULT to OVS_WARN_UNUSED_RESULT * PRINTF_FORMAT to OVS_PRINTF_FORMAT * NO_RETURN to OVS_NO_RETURN Signed-off-by: Thomas Graf <tgraf@noironetworks.com> Acked-by: Ben Pfaff <blp@nicira.com>
* nx-match: Add support for experimenter OXM.Ben Pfaff2014-10-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OpenFlow 1.2+ defines a means for vendors to define vendor-specific OXM fields, called "experimenter OXM". These OXM fields are expressed with a 64-bit OXM header instead of the 32-bit header used for standard OXM (and NXM). Until now, OVS has not implemented experimenter OXM, and indeed we have had little need to do so because of a pair of special 32-bit OXM classes grandfathered to OVS as part of the OpenFlow 1.2 standardization process. However, I want to prototype a feature for OpenFlow 1.5 that uses an experimenter OXM as part of the prototype, so to do this OVS needs to support experimenter OXM. This commit adds that support. Most of this commit is a fairly straightforward change: it extends the type used for OXM/NXM from 32 to 64 bits and adds code to encode and decode the longer headers when necessary. Some other changes are necessary because experimenter OXMs have a funny idea of the division between "header" and "body": the extra 32 bits for experimenter OXMs are counted as part of the body rather than the header according to the OpenFlow standard (even though this does not entirely make sense), so arithmetic in various places has to be adjusted, which is the reason for the new functions nxm_experimenter_len(), nxm_payload_len(), and nxm_header_len(). Another change that calls for explanation is the new function mf_nxm_header() that has been split from mf_oxm_header(). This function is used in actions where the space for an NXM or OXM header is fixed so that there is no room for a 64-bit experimenter type. An upcoming commit will add new variations of these actions that can support experimenter OXM. Testing experimenter OXM is tricky because I do not know of any in widespread use. Two ONF proposals use experimenter OXMs: EXT-256 and EXT-233. EXT-256 is not suitable to implement for testing because its use of experimenter OXM is wrong and will be changed. EXT-233 is not suitable to implement for testing because it requires adding a new field to struct flow and I am not yet convinced that that field and the feature that it supports is worth having in Open vSwitch. Thus, this commit assigns an experimenter OXM code point to an existing OVS field that is currently restricted from use by controllers, "dp_hash", and uses that for testing. Because controllers cannot use it, this leaves future versions of OVS free to drop the support for the experimenter OXM for this field without causing backward compatibility problems. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
* ofp-actions: Support OF1.5 (draft) masked Set-Field, merge with reg_load.Ben Pfaff2014-10-081-7/+0
| | | | | | | | | | | | | | | OpenFlow 1.5 (draft) extends the OFPAT_SET_FIELD action originally introduced in OpenFlow 1.2 so that it can set not just entire fields but any subset of bits within a field as well. This commit adds support for that feature when OpenFlow 1.5 is used. With this feature, OFPAT_SET_FIELD becomes a superset of NXAST_REG_LOAD. Thus, this commit merges the implementations of the two actions into a single ofpact_set_field. ONF-JIRA: EXT-314 Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
* nx-match: Move all knowledge of OXM/NXM here.Ben Pfaff2014-10-071-4/+35
| | | | | | | | | | | | | This improves the general abstraction of OXM/NXM by eliminating direct knowledge of it from the meta-flow code and other places. Some function renaming might be called for; for example, mf_oxm_header() may not be the best name now that the function is implemented within nx-match. However, these renamings would make this commit larger and harder to review, so I'm postponing them. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
* ofp-actions: Centralize all OpenFlow action code for maintainability.Ben Pfaff2014-08-111-19/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Until now, knowledge about OpenFlow has been somewhat scattered around the tree. Some of it is in ofp-actions, some of it is in ofp-util, some in separate files for individual actions, and most of the wire format declarations are in include/openflow. This commit centralizes all of that in ofp-actions. Encoding and decoding OpenFlow actions was previously broken up by OpenFlow version. This was OK with only OpenFlow 1.0 and 1.1, but each additional version added a new wrapper around the existing ones, which started to become hard to understand. This commit merges all of the processing for the different versions, to the extent that they are similar, making the version differences clearer. Previously, ofp-actions contained OpenFlow encoding and decoding, plus ofpact formatting, but OpenFlow parsing was separated into ofp-parse, which seems an odd division. This commit moves the parsing code into ofp-actions with the rest of the code. Before this commit, the four main bits of code associated with a particular ofpact--OpenFlow encoding and decoding, ofpact formatting and parsing--were all found far away from each other. This often made it hard to see what was going on for a particular ofpact, since you had to search around to many different pieces of code. This commit reorganizes so that all of the code for a given ofpact is in a single place. As a code refactoring, this commit has little visible behavioral change. The update to ofproto-dpif.at illustrates one minor bug fix as a side effect: a flow that was added with the action "dec_ttl" (a standard OpenFlow action) was previously formatted as "dec_ttl(0)" (using a Nicira extension to specifically direct packets bounced to the controller because of too-low TTL), but after this commit it is correctly formatted as "dec_ttl". The other visible effect is to drop support for the Nicira extension dec_ttl action in OpenFlow 1.1 and later in favor of the equivalent standard action. It seems unlikely that anyone was really using the Nicira extension in OF1.1 or later. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
* meta-flow: Encode OXM version information into struct mf_field.Ben Pfaff2014-05-141-1/+1
| | | | Signed-off-by: Ben Pfaff <blp@nicira.com>
* bitmap: Make bitmap_scan() able to scan for 0-bits or 1-bits.Ben Pfaff2014-03-231-1/+2
| | | | | | An upcoming commit will make use of this feature. Signed-off-by: Ben Pfaff <blp@nicira.com>
* Native Set-Field action.Jarno Rajahalme2013-11-011-2/+0
| | | | | Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
* Set datapath mask bits when setting a flow field.Jarno Rajahalme2013-10-151-1/+2
| | | | | | | | | | | | | | | | | | | | | | Since at the datapath interface we do not have set actions for individual fields, but larger sets of fields for a given protocol layer, the set action will in practice only ever apply to exactly matched flows for the given protocol layer. For example, if the reg_load changes the IP TTL, the corresponding datapath action will rewrite also the IP addresses and TOS byte. Since these other field values may not be explicitly set, they depend on the incoming flow field values, and are hence all of them are set in the wildcards masks, when the action is committed to the datapath. For the rare case, where the reg_load action does not actually change the value, and no other flow field values are set (or loaded), the datapath action is skipped, and no mask bits are set. Such a datapath flow should, however, be dependent on the specific field value, so the corresponding wildcard mask bits must be set, lest the datapath flow be applied to packets containing some other value in the field and the field value remain unchanged regardless of the incoming value. Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
* ofproto-dpif: Always un-wildcard fields that are being set.Justin Pettit2013-08-021-2/+3
| | | | | | | | | | | | | | | | | | | | | | | The ODP library has an optimization to not set a header if the field was not changed, regardless of whether an action to set the field was present. That library is also responsible for un-wildcarding fields that are bieng modified. This leads to a problem where a packet matches a flow that updates a field, but that particular packet's field already has that value. As such, an overly loose megaflow will be generated that doesn't match on that field and the actions won't update it. A second packet that should have the field set will match that flow and will not be modified. This commit changes the behavior to always un-wildcard fields that are being modified. Since the ODP library updates the entire header if a field in it is modified, and all those fields will be un-wildcarded, the generated flows may be different. However, they should be correct. Bug #18946. Reported-by: Jesse Gross <jesse@nicira.com> Signed-off-by: Justin Pettit <jpettit@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
* clang: Fix the alignment warning.Alex Wang2013-07-231-1/+1
| | | | | | | | This commit fixes the warning issued by 'clang' when pointer is casted to one with greater alignment. Signed-off-by: Alex Wang <alexw@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
* ofp-parse: Do not exit() upon a parse error.Ben Pfaff2013-07-081-4/+8
| | | | | | | | | Until now, failure to parse a flow in the ofp-parse module has caused the program to abort immediately with a fatal error. This makes it hard to use these functions from any long-lived program. This commit fixes the problem. Signed-off-by: Ben Pfaff <blp@nicira.com>
* ofproto-dpif: Store relevant fields for wildcarding in facet.Justin Pettit2013-06-111-2/+4
| | | | | | | | | | | | | | | | | | | | | Dynamically determines the flow fields that were relevant in processing flows based on the OpenFlow flow table and switch configuration. The immediate use for this functionality is to cache action translations for similar flows in facets. This yields a roughly 80% improvement in flow set up rates for a complicated flow table. More importantly, these wildcards will be used to determine what to wildcard for the forthcoming kernel wildcard (megaflow) patches that will allow wildcarding in the kernel, which will provide significant flow set up improvements. The approach to tracking fields and caching action translations in facets was based on an impressive prototype by Ethan Jackson. Co-authored-by: Ethan Jackson <ethan@nicira.com> Signed-off-by: Ethan Jackson <ethan@nicira.com> Signed-off-by: Justin Pettit <jpettit@nicira.com>
* nicira-ext: Add Nicira actions NXAST_STACK_PUSH and NXAST_STACK_POP.Andy Zhou2013-03-061-0/+26
| | | | | | | | | | | | | | | | | | | The Push action takes a single parameter. Any source allowed by NXAST_REG_MOVE is allowed to be pushed onto the stack. When the source is a bit field, its value will be right shifted to bit zero before being pushed onto the stack. The remaining bits will be set to zero. The Pop action also takes a single parameter. Any destination allowed by NXAST_REG_MOVE can be used as the destination of the action. The value, in case of a bit field, will be taken from top of the stack, starting from bit zero. The stack size is not limited. The initial 8KB is statically allocated to efficiently handle most common use cases. When more stack space is required, the stack can grow using malloc(). Signed-off-by: Andy Zhou <azhou@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
* ofp-actions: helper functions for of12 set-field actionSimon Horman2012-09-131-0/+2
| | | | | | Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: Ben Pfaff <blp@nicira.com>
* classifier: Break cls_rule 'flow' and 'wc' members into new "struct match".Ben Pfaff2012-09-041-12/+7
| | | | Signed-off-by: Ben Pfaff <blp@nicira.com>
* nx-match: Separate raw match and header/pad pull/putSimon Horman2012-08-061-3/+11
| | | | | | | | | | | | | | In the case of Open Flow 1.2, which is currently the only time that OXM is be used, there is a 4 byte header before the match which needs to be taken into account when calculating the pad length. This complicates nx_match pull and put somewhat. This patch takes an approach suggested by Ben Pfaff to separate the encoding of the match and the adding of padding and, in the case of OXM, a header. Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: Ben Pfaff <blp@nicira.com>
* nx-match: Drop NXM_MAX_LEN.Ben Pfaff2012-07-051-40/+0
| | | | | | It isn't used anymore and keeping it up-to-date is error-prone. Signed-off-by: Ben Pfaff <blp@nicira.com>
* Introduce ofpacts, an abstraction of OpenFlow actions.Ben Pfaff2012-07-031-12/+23
| | | | | | | | | | | | | | | | | | | | | | OpenFlow actions have always been somewhat awkward to handle. Moreover, over time we've started creating actions that require more complicated parsing. When we maintain those actions internally in their wire format, we end up parsing them multiple times, whenever we have to look at the set of actions. When we add support for OpenFlow 1.1 or later protocols, the situation will get worse, because these newer protocols support many of the same actions but with different representations. It becomes unrealistic to handle each protocol in its wire format. This commit adopts a new strategy, by converting OpenFlow actions into an internal form from the wire format when they are read, and converting them back to the wire format when flows are dumped. I believe that this will be more maintainable over time. Thanks to Simon Horman and Pravin Shelar for reviews. Signed-off-by: Ben Pfaff <blp@nicira.com>
* Add OXM_OF_METADATA field as a step toward OpenFlow 1.1 support.Joe Stringer2012-06-261-3/+4
| | | | | Signed-off-by: Joe Stringer <joe@wand.net.nz> Signed-off-by: Ben Pfaff <blp@nicira.com>
* nx-match: Add parsing and serialisation of OXM matches.Simon Horman2012-06-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | This code, which leverages the existing NXM implementation, adds parsing and serialisation of OXM matches. Test cases have also been provided. This patch only implements parsing and serialisation of OXM fields that are already handled by NXM. It should be noted that in OXM ports are 32bit whereas in NXM they are 16 bit. This has been handled as a special case as all other field widths are the same in both OXM and NXM. This patch does not address differences in wildcarding between OXM and NXM. It is planned that liberal wildcarding policy dictated by either OXM or NXM will be implemented. This patch also does not address any (subtle?) differences between OXM and NXM treatment of specific fields. It is envisages that his can be handled by subsequent patches. Signed-off-by: Simon Horman <horms@verge.net.au> [blp@nicira.com adjusted style, added a comment, changed in_port special case, enabled NXM extensions to OXM] Signed-off-by: Ben Pfaff <blp@nicira.com>
* flow: Adds support for arbitrary ethernet maskingJoe Stringer2012-05-291-3/+3
| | | | | | | | | | | Arbitrary ethernet mask support is one step on the way to support for OpenFlow 1.1+. This patch set seeks to add this capability without breaking current protocol support. Signed-off-by: Joe Stringer <joe@wand.net.nz> [blp@nicira.com made some updates, see http://openvswitch.org/pipermail/dev/2012-May/017585.html] Signed-off-by: Ben Pfaff <blp@nicira.com>
* Global replace of Nicira Networks.Raju Subramanian2012-05-021-1/+1
| | | | | | | | Replaced all instances of Nicira Networks(, Inc) to Nicira, Inc. Feature #10593 Signed-off-by: Raju Subramanian <rsubramanian@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
* nicira-ext: Support masking of nd_target fieldAnsis Atteka2012-04-261-4/+4
| | | | | | | This commit adds support to specify a mask in CIDR format for the nd_target field. Signed-off-by: Ansis Atteka <aatteka@nicira.com>
* nicira-ext: Increase the number of NXM registers to 8.Ethan Jackson2012-03-091-1/+6
| | | | | Requested-by: Amar Padmanabhan <amar@nicira.com> Signed-off-by: Ethan Jackson <ethan@nicira.com>
* meta-flow: New "subfield" data structure.Ben Pfaff2012-02-011-16/+8
| | | | | | | | Until now, parts of a field have been dealt with in a fairly ad-hoc way. struct mf_subfield and the supporting functions added by this commit make their use more systematic. Signed-off-by: Ben Pfaff <blp@nicira.com>
* Better abstract OpenFlow error codes.Ben Pfaff2012-01-121-11/+14
| | | | | | | | | | | | This commit switches from using the actual protocol values of error codes internally in Open vSwitch, to using abstract values that are translated to and from protocol values at message parsing and serialization time. I believe that this makes the code easier to read and to write. This is also one step along the way toward OpenFlow 1.1 support because OpenFlow 1.1 renumbered a bunch of error codes. Signed-off-by: Ben Pfaff <blp@nicira.com>
* nx-match: New function nx_pull_match_loose().Ethan Jackson2012-01-101-0/+3
| | | | | | | Future patches will need the ability to skip over unsupported NXM headers. Signed-off-by: Ethan Jackson <ethan@nicira.com>
* Add ability to restrict flow mods and flow stats requests to cookies.Justin Pettit2011-12-271-2/+3
| | | | | | | | With this commit, it is possible to limit flow deletions and modifications to specific cookies. It also provides the ability to dump flows based on their cookies. Signed-off-by: Justin Pettit <jpettit@nicira.com>
* nx-match: Fold all of its data structures into mf_field.Ben Pfaff2011-11-211-1/+0
| | | | This is less redundant.
* Support matching and modifying IP TTL.Justin Pettit2011-11-091-1/+2
| | | | | | | | | | | | | | | | | Add support matching the IPv4 TTL and IPv6 hop limit fields. This commit also adds support for modifying the IPv4 TTL. Modifying the IPv6 hop limit isn't currently supported, since we don't support modifying IPv6 headers. We will likely want to change the user-space interface, since basic matching and setting the TTL are not generally useful. We will probably want the ability to match on extraordinary events (such as TTL of 0 or 1) and a decrement action. Feature #8024 Signed-off-by: Justin Pettit <jpettit@nicira.com> Acked-by: Jesse Gross <jesse@nicira.com>
* Support matching and modifying IP ECN bits.Justin Pettit2011-11-091-1/+2
| | | | | Signed-off-by: Justin Pettit <jpettit@nicira.com> Acked-by: Jesse Gross <jesse@nicira.com>
* Support matching IPv6 flow label.Justin Pettit2011-11-091-1/+2
| | | | | Signed-off-by: Justin Pettit <jpettit@nicira.com> Acked-by: Jesse Gross <jesse@nicira.com>
* nx-match: Increase upper bound length for an nx_match.Justin Pettit2011-11-041-4/+6
| | | | | | | Commits d2c0fed (nicira-ext: Bump number of registers to five from four.) and 7257b5 (Implement new fragment handling policy.) added new match fields, but didn't update the maximum length of an NXM message. This commit increases the maximum NXM size to 384 bytes.
* meta-flow: New library for working with fields by id.Ben Pfaff2011-09-131-1/+2
| | | | | | | | | | OVS already has a fairly good set of functions for working with fields that are known at compile time, but support for working with fields that are known only at runtime is fairly limited (and fairly unneeded). However, with NXM identifiers becoming more and more widely used throughout Nicira extensions, it's becoming corresponding more and more common to need to refer to fields at runtime. This new library represents a first attempt at a systematic approach for doing so.
* nx-match: New function nxm_read_field_bits().Ethan Jackson2011-08-121-0/+3
| | | | | | | nxm_read_field_bits() simplifies reading of NXM fields with an ofs_nbits parameter. This patch updates nxm_execute_reg_move() to use the new function. A user outside of the nx-match module will be added in future patches.
* nx-match: Update register check functions.Ethan Jackson2011-08-121-1/+3
| | | | | This patch simplifies the API of nxm_dst_check() and adds a new function nxm_src_check() for checking source fields.
* nx-match: New helpers.Ethan Jackson2011-07-221-0/+4
| | | | | | | | | | | This patch creates two new helper functions, nxm_reg_load() and nxm_dst_check(). The new nxm_dst_check() function may be used to check the validity of destination fields used by actions. The new nxm_reg_load() function may be used by actions which need to write to NXM fields. This patch also allows multipath and autopath to write their result to non-register NXM fields.
* nx-match: Whitespace cleanup.Ethan Jackson2011-07-221-2/+2
|
* nicira-ext: Support matching IPv6 Neighbor Discovery messages.Justin Pettit2011-02-021-3/+5
| | | | | | | | | | | | | | | | | IPv6 uses Neighbor Discovery messages in a similar manner to how IPv4 uses ARP. This commit adds support for matching deeper into the payloads of Neighbor Solicitation (NS) and Neighbor Advertisement (NA) messages. Currently, the matching fields include: - NS and NA Target (nd_target) - NS Source Link Layer Address (nd_sll) - NA Target Link Layer Address (nd_tll) When defining IPv6 Neighbor Discovery rules, the Nicira Extensible Match (NXM) extension to OVS must be used. Signed-off-by: Justin Pettit <jpettit@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
* nicira-ext: Support matching IPv6 traffic.Justin Pettit2011-02-021-4/+4
| | | | | | | | | | | | | | | | | Provides ability to match over IPv6 traffic in the same manner as IPv4. Currently, the matching fields include: - IPv6 source and destination addresses (ipv6_src and ipv6_dst) - Traffic Class (nw_tos) - Next Header (nw_proto) - ICMPv6 Type and Code (icmp_type and icmp_code) - TCP and UDP Ports over IPv6 (tp_src and tp_dst) When defining IPv6 rules, the Nicira Extensible Match (NXM) extension to OVS must be used. Signed-off-by: Justin Pettit <jpettit@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>