summaryrefslogtreecommitdiff
path: root/ofproto
Commit message (Collapse)AuthorAgeFilesLines
* debian, rhel: Ship ovs shared libraries and header filesEdwin Chiu2016-06-071-1/+1
| | | | | | | | | | Compile and package ovs shared libraries and create new header package for debian (openvswitch-dev) and rhel (openvswitch-devel). VMware-BZ: #1556299 Signed-off-by: Edwin Chiu <echiu@vmware.com> Co-authored-by: Harold Lim <haroldl@vmware.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ipfix: Bug fix for configuring IPFIX for flowsBenli Ye2016-06-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two kinds of IPFIX: bridge level IPFIX and flow level IPFIX. Now if we only configure flow level IPFIX, even if there is no bridge IPFIX configuration, the datapath flow will contain a sample action for bridge IPFIX. Fix it. Steps to configure flow level IPFIX: 1) Create a new record in Flow_Sample_Collector_Set table: 'ovs-vsctl -- create Flow_Sample_Collector_Set id=1 bridge="Bridge UUID"' 2) Add IPFIX configuration which is referred by corresponding row in Flow_Sample_Collector_Set table: 'ovs-vsctl -- set Flow_Sample_Collector_Set "Flow_Sample_Collector_Set UUID" ipfix=@i -- --id=@i create IPFIX targets=\"IP:4739\" obs_domain_id=123 obs_point_id=456 cache_active_timeout=60 cache_max_flows=13' 3) Add sample action to the flows: 'ovs-ofctl add-flow mybridge in_port=1, actions=sample'('probability=65535,collector_set_id=1, obs_domain_id=123,obs_point_id=456')',output:LOCAL' Before this fix, if you only configure flow IPFIX, the datapath flow is: id(0),in_port(2),eth_type(0x0806), packets:0, bytes:0, used:never, actions:sample(sample=0.0%,actions(userspace(pid=4294960835, ipfix(output_port=4294967295)))),sample(sample=100.0%, actions(userspace(pid=4294960835,flow_sample(probability=65535, collector_set_id=1,obs_domain_id=123,obs_point_id=456)))), sample(sample=0.0%,actions(userspace(pid=4294960835, ipfix(output_port=1)))),1 The datapath flow should only contain the sample action like below: id(0),in_port(2),eth_type(0x0800),ipv4(frag=no), packets:9, bytes:871, used:0.656s, actions:sample(sample=100.0%,actions(userspace(pid=4294962911, flow_sample(probability=65535,collector_set_id=1,obs_domain_id=123, obs_point_id=456)))),1 Signed-off-by: Benli Ye <daniely@vmware.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ofproto-dpif: Cache result of time_msec() for rule_expire().Daniele Di Proietto2016-06-021-4/+4
| | | | | | | | | | | | | | | | | In the run() function of ofproto-dpif we call rule_expire() for every possible flow that has a timeout and rule_expire() calls time_msec(). Calling time_msec() repeatedly can be pretty expensive, even though most of the time it involves only a vdso call. This commit calls time_msec only once in run(), to reduce the workload. Keeping the flows ordered by expiration in some kind of heap or timing wheel data structure could help make this process more efficient, if rule_expire() turns out to be a bottleneck. VMware-BZ: #1655122 Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Acked-by: Ben Pfaff <blp@ovn.org>
* xlate: Skip recirculation for output and set actionsSimon Horman2016-05-271-1/+121
| | | | | | | | | | | | | | | | | | | | | | | | Until 8bf009bf8ab4 ("xlate: Always recirculate after an MPLS POP to a non-MPLS ethertype.") the translation code took some care to only recirculate as a result of a pop_mpls action if necessary. This was implemented using per-action checks and resulted in some maintenance burden. Unfortunately recirculation is a relatively expensive operation and a performance degradation of up to 35% has been observed with the above mentioned patch applied for the arguably common case of: pop_mpls,set(l2 field),output This patch attempts to strike a balance between performance and maintainability by special casing set and output actions such that recirculation may be avoided. This partially reverts the above mentioned commit. In particular most of the C code outside of do_xlate_actions(). Signed-off-by: Simon Horman <simon.horman@netronome.com> Acked-by: Jarno Rajahalme <jarno@ovn.org>
* ofproto: update mtu when port is getting removed as wellak47izatool@gmail.com2016-05-251-7/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we're adding the port into ovs bridge, its mtu is updated to the minimal mtu of the included port. But when the port is getting removed, no such update is performed, which leads to bug. For example, when the port with minimal mtu is removed, bridge's mtu must adapt to new value, but it won't happen. How to reproduce the problem: $ ovs-vsctl add-br testing $ ip link add name gretap11 type gretap local 10.0.0.1 remote 10.0.0.100 $ ip link add name gretap12 type gretap local 10.0.0.1 remote 10.0.0.200 $ ip link set dev gretap12 mtu 1600 $ ovs-vsctl add-port testing gretap11 $ ovs-vsctl add-port testing gretap12 $ ip a sh testing 16: testing: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN group default qlen 1 link/ether 7a:42:95:00:96:40 brd ff:ff:ff:ff:ff:ff $ ovs-vsctl del-port gretap11 $ ip a sh testing 16: testing: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN group default qlen 1 link/ether 7a:42:95:00:96:40 brd ff:ff:ff:ff:ff:ff $## as we can see here, 'testing' bridge mtu is stuck, while it must adapt to new '1600' value, $## cause there is only one port 'gretap12' left, and it's mtu is '1600': $ ip a sh gretap12 19: gretap12@NONE: <BROADCAST,MULTICAST> mtu 1600 qdisc noop master ovs-system state DOWN group default qlen 1000 link/ether b2:c6:1d:9f:be:0d brd ff:ff:ff:ff:ff:ff My commit fixes this problem - mtu update is performed on port removal as well. Signed-off-by: wisd0me <ak47izatool@gmail.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
* netdev-native-tnl: Introduce ip_build_header()Pravin B Shelar2016-05-233-60/+11
| | | | | | | | | | The native tunneling build tunnel header code is spread across two different modules, it makes pretty hard to follow the code. Following patch refactors the code to move all code to netdev-ative-tnl module. Signed-off-by: Pravin B Shelar <pshelar@ovn.org> Acked-by: Jesse Gross <jesse@kernel.org>
* upcall: Unregister dpif cbs in udpif_destroy().Joe Stringer2016-05-231-0/+3
| | | | | | | | | | | | | | During udpif_create(), we register callbacks for handling upcalls and purging the datapath; however, in the corresponding udpif_destroy() we never did this. This could potentially lead to dereference of uninitialized memory in the userspace datapath if the main thread destroys the udpif then executes an OpenFlow packet-out. Fixes: e4e74c3a2b9a ("dpif-netdev: Purge all ukeys when reconfigure pmd.") Fixes: 623540e4617e ("dpif-netdev: Streamline miss handling.") Reported-by: William Tu <u9012063@gmail.com> Signed-off-by: Joe Stringer <joe@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* ofproto-dpif: Call dpif_poll_threads_set() before dpif_run().Daniele Di Proietto2016-05-231-2/+2
| | | | | | | | | | | An upcoming commit will make dpif_poll_threads_set() record the requested configuration and dpif_run() apply it, so it makes sense to change the order. Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Tested-by: Ilya Maximets <i.maximets@samsung.com> Acked-by: Ilya Maximets <i.maximets@samsung.com> Acked-by: Mark Kavanagh <mark.b.kavanagh@intel.com>
* hmap: Use struct for hmap_at_position().Daniele Di Proietto2016-05-231-5/+3
| | | | | | | | The interface will be more similar to the cmap. Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Tested-by: Ilya Maximets <i.maximets@samsung.com> Acked-by: Ilya Maximets <i.maximets@samsung.com>
* ofproto-dpif-xlate: Fix IGMP megaflow matching.Ben Pfaff2016-05-201-8/+20
| | | | | | | | | IGMP translations wasn't setting enough bits in the wildcards to ensure different packets were handled differently. Reported-by: "O'Reilly, Darragh" <darragh.oreilly@hpe.com> Reported-at: http://openvswitch.org/pipermail/discuss/2016-April/021036.html Signed-off-by: Ben Pfaff <blp@ovn.org>
* dpif: Pass flow parameter to dpif_execute().Daniele Di Proietto2016-05-202-0/+11
| | | | | | | | | | | | | | | | All the callers of the function already have a copy of the extracted flow in their stack (or a few frames before). This is useful for different resons: * It forces the callers to also call flow_extract() on the packet, which is necessary to initialize the l2,l3,l4 pointers. * It will be used in the userspace datapath to generate the RSS hash by a following commit * It can be used by the userspace connection tracker to avoid extracting the l3 type again. Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Acked-by: Ben Pfaff <blp@ovn.org>
* tnl-ports: Handle STT ports.Pravin B Shelar2016-05-181-2/+6
| | | | | | | | STT uses TCP port so we need to filter traffic on basis of TCP port numbers. Signed-off-by: Pravin B Shelar <pshelar@ovn.org> Acked-by: Jesse Gross <jesse@kernel.org>
* tunnel: Add IP ECN related functions.Pravin B Shelar2016-05-181-3/+3
| | | | | | | | Set and get functions for IP explicit congestion notification flag. These function would be used by STT reassembly code. Signed-off-by: Pravin B Shelar <pshelar@ovn.org> Acked-by: Jesse Gross <jesse@kernel.org>
* dpif-netdev: create batch objectPravin B Shelar2016-05-181-2/+3
| | | | | | | | | | DPDK datapath operate on batch of packets. To pass the batch of packets around we use packets array and count. Next patch needs to associate meta-data with each batch of packets. So Introducing a batch structure to make handling the metadata easier. Signed-off-by: Pravin B Shelar <pshelar@ovn.org> Acked-by: Jesse Gross <jesse@kernel.org>
* ofproto-dpif-xlate: Fix compilation with GCC 4.6.Ben Pfaff2016-05-171-1/+1
| | | | | | | | | | | | | | Without this change, GCC 4.6 reports: ofproto/ofproto-dpif-xlate.c: In function ‘xlate_actions’: ofproto/ofproto-dpif-xlate.c:5117:27: error: missing initializer ofproto/ofproto-dpif-xlate.c:5117:27: error: (near initialization for ‘(anonymous).masks.vlan_tci’) Reported-by: Joe Stringer <joe@ovn.org> Reported-at: https://travis-ci.org/openvswitch/ovs/builds/130256491 Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Joe Stringer <joe@ovn.org>
* ofproto-dpif-upcall: Fix UFID usage with flow_modify.Joe Stringer2016-05-171-1/+1
| | | | | | | | | | | As per the delete_op_init{,__}() functions, the UFID should only be passed down if ukey->ufid_present is set. Otherwise it is possible to request a flow modification only using a UFID in a datapath that doesn't support UFID, which will fail. Fixes: 43b2f131a229 ("ofproto: Allow in-place modifications of datapath flows.") Signed-off-by: Joe Stringer <joe@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* ofproto-dpif-xlate: Always generate wildcards.Ben Pfaff2016-05-141-13/+8
| | | | | | | | | | | | | | | | | | | | | | | | Until now, the flow translation code has tried to avoid constructing a set of wildcards during translation in the cases where it can, because wildcards are large and somewhat expensive. However, this has problems that we hadn't previously realized. Specifically, the generated actions can depend on the constructed wildcards, to decide which bits of a field need to be set in a masked set_field action. This means that in practice translation needs to always construct the wildcards. (It might be possible to avoid masked set_field when we're not constructing wildcards, but this would mean that we'd generate different actions depending on whether wildcards were being constructed, which seems rather confusing at best. Also, the cases in which we don't need wildcards anyway are fairly obscure, meaning that the benefits of avoiding them in those cases are minimal and that it's going to be hard to get test coverage. The latter is probably why we didn't notice this until now.) Reported-by: William Tu <u9012063@gmail.com> Reported-at: http://openvswitch.org/pipermail/dev/2016-April/069219.html Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Ryan Moats <rmoats@us.ibm.com> Tested-by: William Tu <u9012063@gmail.com>
* ofproto-dpif-upcall: Pass key to dpif_flow_get().Joe Stringer2016-05-111-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | Windows datapath folks have reported instances where OVS userspace will pass down a flow_get request to the datapath using a UFID even though the datapath has no support for UFIDs. Since commit e672ff9b4d22 ("ofproto-dpif: Restore metadata and registers on recirculation."), if a flow dump provides a flow that userspace isn't aware of, and the flow dump doesn't provide actions for that flow, then userspace will attempt a flow_get using just the UFID. This is because the ofproto-dpif layer doesn't pass the key down to the dpif layer even if it's available. Prior to the above commit, the codepath was only hit if the key was not available, which would have implied UFID support. This assumption is now broken: An empty set of actions could also trigger flow_get, and datapaths without UFID support are free to pass up empty actions lists. Pass down the flow key if available, and don't pass down the UFID if unavailable to be more consistent with the usage of other dpif APIs within this file. Fixes: e672ff9b4d22 ("ofproto-dpif: Restore metadata and registers on recirculation.") Reported-by: Sairam Venugopal <vsairam@vmware.com> Signed-off-by: Joe Stringer <joe@ovn.org> Acked-by: Jarno Rajahalme <jarno@ovn.org>
* ofproto-dpif-xlate: fix for group liveness propagationLászló Sürü2016-05-111-1/+1
| | | | | | | | | | | | | | | | | | According to OpenFlow v1.3.5 specification a group is considered live, if it has at least one live bucket in it. (6.5 Group Table Modification Messages: "A group is considered live if a least one of its buckets is live.") However, OVS implementation incorrectly returns group as live when no live bucket is found in group_is_alive() function of ofproto-dpif-xlate.c. Instead it should return true only if a live bucket is found (that is != NULL). Signed-off-by: László Sűrű <laszlo.suru@ericsson.com> Co-authored-by: Jan Scheurich <jan.scheurich@ericsson.com> Signed-off-by: Jan Scheurich <jan.scheurich@ericsson.com> Acked-by: Jarno Rajahalme <jarno@ovn.org>
* ofproto-dpif: Restore packet metadata when a continuation is resumed.Numan Siddique2016-05-101-6/+18
| | | | | | | | | Recirculations due to NXT_RESUME are failing if the packet metadata is not restored prior to the packet execution. Reported-at: http://openvswitch.org/pipermail/dev/2016-May/070723.html Signed-off-by: Numan Siddique <nusiddiq@redhat.com> Signed-off-by: Jarno Rajahalme <jarno@ovn.org>
* util: Pass 128-bit arguments directly instead of using pointers.Justin Pettit2016-05-083-3/+3
| | | | | | | | | | | Commit f2d105b5 (ofproto-dpif-xlate: xlate ct_{mark, label} correctly.) introduced the ovs_u128_and() function. It directly takes ovs_u128 values as arguments instead of pointers to them. As this is a bit more direct way to deal with 128-bit values, modify the other utility functions to do the same. Signed-off-by: Justin Pettit <jpettit@ovn.org> Acked-by: Joe Stringer <joe@ovn.org>
* cmap: New macro CMAP_INITIALIZER, for initializing an empty cmap.Ben Pfaff2016-05-093-30/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | Sometimes code is much simpler if we can statically initialize data structures. Until now, this has not been possible for cmap-based data structures, so this commit introduces a CMAP_INITIALIZER macro. This works by adding a singleton empty cmap_impl that simply forces the first insertion into any cmap that points to it to allocate a real cmap_impl. There could be some risk that rogue code modifies the singleton, so for safety it is also marked 'const' to allow the linker to put it into a read-only page. This adds a new OVS_ALIGNED_VAR macro with GCC and MSVC implementations. The latter is based on Microsoft webpages, so developers who know Windows might want to scrutinize it. As examples of the kind of simplification this can make possible, this commit removes an initialization function from ofproto-dpif-rid.c and a call to cmap_init() from tnl-neigh-cache.c. An upcoming commit will add another user. CC: Jarno Rajahalme <jarno@ovn.org> CC: Gurucharan Shetty <guru@ovn.org> Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Ryan Moats <rmoats@us.ibm.com>
* ofproto-dpif: Do not count resubmit to later tables against limit.Ben Pfaff2016-05-094-26/+71
| | | | | | | | | | | | | | | | | | | | | | | | Open vSwitch must ensure that flow translation takes a finite amount of time. Until now it has implemented this by limiting the depth of recursion. The initial limit, in version 1.0.1, was no recursion at all, and then over the years it has increased to 8 levels, then 16, then 32, and 64 for the last few years. Now reports are coming in that 64 levels are inadequate for some OVN setups. The natural inclination would be to double the limit again to 128 levels. This commit attempts another approach. Instead of increasing the limit, it reduces the class of resubmits that count against the limit. Since the goal for the depth limit is to prevent an infinite amount of work, it's not necessary to count resubmits that can't lead to infinite work. In particular, a resubmit from a table numbered x to a table y > x cannot do this, because any OpenFlow switch has a finite number of tables. Because in fact a resubmit (or goto_table) from one table to a later table is the most common form of an OpenFlow pipeline, I suspect that this will greatly alleviate the pressure to increase the depth limit. Reported-by: Guru Shetty <guru@ovn.org> Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Ryan Moats <rmoats@us.ibm.com>
* ofproto-dpif: Rename "recurse" to "indentation".Ben Pfaff2016-05-094-40/+42
| | | | | | | | | | | The "recurse" member of struct xlate_in and struct xlate_ctx is used for two purposes: to determine the amount of indentation in "ofproto/trace" output and to limit the depth of recursion. An upcoming commit will separate these tasks, and so in preparation this commit renames "recurse" to "indentation". Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Ryan Moats <rmoats@us.ibm.com>
* Remove "VLAN splinters" feature.Pravin B Shelar2016-04-277-493/+4
| | | | | | | | | | | The "VLAN splinters" feature works around buggy device drivers in old Linux versions. But support for the old kernel is dropped, So now all supported kernel vlan drivers should be working fine with OVS kernel datapath. Following patch removes this deprecated feature. Signed-off-by: Pravin B Shelar <pshelar@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* hmap: Add HMAP_FOR_EACH_POP.Daniele Di Proietto2016-04-266-21/+14
| | | | | | | Makes popping each member of the hmap a bit easier. Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Acked-by: Ben Pfaff <blp@ovn.org>
* ofproto-dpif-xlate: Tidy up ct_mark xlate code.Joe Stringer2016-04-221-11/+10
| | | | | | | | Make the ct_mark netlink serialization more consistent with the way that ct_label is serialized. Signed-off-by: Joe Stringer <joe@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* ofproto-dpif-xlate: xlate ct_{mark, label} correctly.Joe Stringer2016-04-221-11/+16
| | | | | | | | | | | | | | | | | | | | | | | | When translating multiple ct actions in a row which include modification of ct_mark or ct_labels, these fields could be incorrectly translated into datapath actions, resulting in modification of these fields for entries when the OpenFlow rules didn't actually specify the change. For instance, the following OpenFlow actions: ct(zone=1,commit,exec(set_field(1->ct_mark))),ct(zone=2,table=1),... Would translate into the datapath actions: ct(zone=1,commit,mark=1),ct(zone=2,mark=1),recirc(...),... This commit fixes the issue by zeroing the wildcards for these fields prior to performing nested actions translation (and restoring afterwards). As such, these fields do not hold both the match and the field modification values at the same time. As a result, the ct_mark and ct_labels don't leak from one ct action to the next. Fixes: 8e53fe8cf7a1 ("Add connection tracking mark support.") Fixes: 9daf23484fb1 ("Add connection tracking label support.") Signed-off-by: Joe Stringer <joe@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* tunneling: Fix for concomitant IPv4 and IPv6 tunnelsThadeu Lima de Souza Cascardo2016-04-211-0/+4
| | | | | | | | | | | When using an IPv6 tunnel on the same bridge as an IPv4 tunnel, the flow received from the IPv6 tunnel would have an IPv4 address added to it, causing problems when trying to put or execute the action on Linux datapath. Clearing the IPv6 address when we have a valid IPv4 address fixes this problem. Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ofproto-dpif-xlate: Generate bitmasks in set_field.Joe Stringer2016-04-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, whenever a set_field() action was executed, the entire field would become masked and the entire field replaced, regardless of the mask specified in the set_field() action. In most cases this is fine, although it may lead to more specific wildcards than strictly necessary. However, in a particular case with connection tracking actions it could lead to the wrong behaviour. Unlike most OpenFlow fields, the ct_{mark,labels} fields are typically unknown until the ct(...,recirc_table=N,...) action is executed however the packet may actually belong to a connection which has a nonzero value for one of these fields. This can lead to the wrong behaviour with flows such as the following: in_port=1,ip,actions=ct(commit,exec(set_field(0x1/0x1->ct_mark))),2 in_port=2,ip,actions=ct(commit,exec(set_field(0x2/0x2->ct_mark))),1 Connections flowing through these actions will always update the ct_mark field stored within the conntrack table. However, rather than modifying only the specified bits (0x1 in one direction, 0x2 in the other), the entire ct_mark field will be replaced. Such connections will constantly toggle the value of ct_mark between 0x1 and 0x2, rather than becoming 0x3 and keeping that value. This commit fixes the issue by ensuring that set_field actions only modify the modified bits in the wildcards, rather than masking the entire field. Fixes: 8e53fe8cf7a1 ("Add connection tracking mark support.") Fixes: 9daf23484fb1 ("Add connection tracking label support.") Signed-off-by: Joe Stringer <joe@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* Move lib/ofp-print.h to include/openvswitch directoryBen Warren2016-04-142-2/+2
| | | | | Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* Move lib/ofp-actions.h to include/openvswitch directoryBen Warren2016-04-1410-59/+53
| | | | | Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* Move lib/ofp-msgs.h to include/openvswitch directoryBen Warren2016-04-144-18/+18
| | | | | Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* Move lib/ofp-util.h to include/openvswitch directoryBen Warren2016-04-1411-10/+11
| | | | | | | | This commit also adds several #include directives in source files in order to make the 'ofp-util.h' move possible Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* Move lib/meta-flow.h to include/openvswitch directoryBen Warren2016-04-145-5/+5
| | | | | | | | | 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/match.h to include/openvswitch directoryBen Warren2016-04-142-2/+2
| | | | | Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ofp-actions: Make ofpact_finish() harder to misuse.Ben Pfaff2016-04-131-1/+1
| | | | | | | | | | | | It's pretty easy to forget to update the pointer to an ofpact when finishing it. This commit forces the caller to pass a pointer-to-pointer instead, and uses that to automatically update the pointer. There still could be cases that retain other pointers into the ofpbuf, but I imagine that this is harder to misuse. Suggested-by: Joe Stringer <joe@ovn.org> Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Joe Stringer <joe@ovn.org>
* ovs-vswitchd: Call flow_extract() for resumed packet in nxt_resume().Numan Siddique2016-03-311-0/+3
| | | | | | | | | When the packet-in is resumed by vswitchd, it is not setting the 'dp_packet' offsets, because of which it is crashing while executing the actions. Signed-off-by: Numan Siddique <nusiddiq@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* Move lib/ofpbuf.h to include/openvswitch directoryBen Warren2016-03-3016-17/+17
| | | | | | Signed-off-by: Ben Warren <ben@skyportsystems.com> Acked-by: Ryan Moats <rmoats@us.ibm.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* Move ofp-parse.h to include/openvswitch directoryBen Warren2016-03-301-1/+1
| | | | | Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* list: Rename all functions in list.h with ovs_ prefix.Ben Warren2016-03-3010-99/+99
| | | | | | | This attempts to prevent namespace collisions with other list libraries Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* list: Remove lib/list.h completely.Ben Warren2016-03-307-7/+7
| | | | | | | | All code is now in include/openvswitch/list.h. Signed-off-by: Ben Warren <ben@skyportsystems.com> Acked-by: Ryan Moats <rmoats@us.ibm.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ofp-actions: Fix use-after-free with ofpact_finish().Joe Stringer2016-03-301-1/+1
| | | | | | | | | | | | | | | | ofpact_finish() may now reallocate the buffer it is passed, but not all callers updated their local pointers to the current action in the buffer. This could potentially lead to several use-after-free bugs. Update ofpact_finish() to return the new pointer to the ofpact which is provided, and update the calling points to ensure that their local pointers are pointing into the correct (potentially reallocated) buffer. Fixes: 2bd318dec242 ("ofp-actions: Make composing actions harder to screw up.") Reported-by: William Tu <u9012063@gmail.com> Signed-off-by: Joe Stringer <joe@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org> Acked-by: Ryan Moats <rmoats@us.ibm.com>
* sflow: use ovs route API to get source IP address.Pravin B Shelar2016-03-241-3/+5
| | | | | Signed-off-by: Pravin B Shelar <pshelar@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* tunneling: Enable IPv6 tuneling.Pravin B Shelar2016-03-241-8/+0
| | | | | | | | | | | | There is check to disable IPv6 tunneling. Following patch removes it and reintroduces the tunneling automake tests. This reverts mostly commit 250bd94d1e500a89c76cac944e660bd9c07ac364. There are couple of new autotests and updated documentation related to ipv6 tunneling added in this patch. Signed-off-by: Pravin B Shelar <pshelar@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* tunneling: Handle multiple ip address for given device.Pravin B Shelar2016-03-241-15/+5
| | | | | | | | | | | | Device can have multiple IP address but netdev_get_in4/6() returns only one configured IPv6 address. Following patch fixes it. OVS router is also updated to return source ip address for given destination, This is required when interface has multiple IP address configured. Signed-off-by: Pravin B Shelar <pshelar@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* ofproto/trace: Fix "unchanged" output for Final flowYAMAMOTO Takashi2016-03-241-0/+1
| | | | | | | | | | | | Clear actset_output so that it can be compared via flow_equal. Note: trace->key has actset_output == 0. Found by OVS flow tests under development for Neutron. [1] [1] https://review.openstack.org/#/c/235155/10/neutron/tests/functional/agent/test_ovs_flows.py@399 Signed-off-by: YAMAMOTO Takashi <yamamoto@midokura.com> Acked-by: Ben Pfaff <blp@ovn.org>
* ofproto-dpif: rename wait() to avoid collision with system wait(2)Lance Richardson2016-03-221-2/+2
| | | | | | | Rename ofproto-dpif wait() to avoid collision with wait(2) under OS X. Signed-off-by: Lance Richardson <lrichard@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* bond: don't re-zero recirc_id when creating bondSimon Horman2016-03-231-2/+0
| | | | | | | | The bond structure is already zeroed as it is allocated using xzalloc so there is no need to re-zero the recirc_id field. Signed-off-by: Simon Horman <simon.horman@netronome.com> Acked-by: Ben Pfaff <blp@ovn.org>
* Move lib/dynamic-string.h to include/openvswitch directoryBen Warren2016-03-197-7/+7
| | | | | Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>