aboutsummaryrefslogtreecommitdiff
path: root/lib/automake.mk
AgeCommit message (Collapse)Author
2013-10-17vtep: Initial checkin of vtep schema.Bruce Davie
The hardware VTEP OVSDB schema specifies relations that a VTEP can use to integrate physical ports into logical switches maintained by a network virtualization controller such as NVP. Co-authored-by: Ben Pfaff <blp@nicira.com> Co-authored-by: Kenneth Duda <kduda@aristanetworks.com> Co-authored-by: Justin Pettit <jpettit@nicira.com> Signed-off-by: Bruce Davie <bdavie@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com> Signed-off-by: Kenneth Duda <kduda@aristanetworks.com> Signed-off-by: Justin Pettit <jpettit@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
2013-09-26tag: Reintroduce tag library.Ben Pfaff
It is needed for the classifier partitioning optimization. This commit only reintroduces the parts that are actually needed. Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-09-12guarded-list: New data structure for thread-safe queue.Ben Pfaff
We already had queues that were suitable for replacement by this data structure, and I intend to add another one later on. flow_miss_batch_ofproto_destroyed() did not work well with the guarded-list structure (it required either adding a lot more functions or breaking the abstraction) so I changed the caller to just use udpif_revalidate(). Checking reval_seq at the end of handle_miss_upcalls() also didn't work well with the abstraction, so I decided that since this was a corner case anyway it would be acceptable to just drop those in flow_miss_batch_next(). Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
2013-08-26ovs-atomic: Add native Clang implementation.Ben Pfaff
With this implementation I get warnings with Clang on GNU/Linux when the previous patch is not applied. This ought to make it easier to avoid introducing new problems in the future even without building on FreeBSD. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
2013-08-22lib: Add CRC32C ImplementationJoe Stringer
This implementation was derived from FreeBSD: http://svnweb.freebsd.org/base/head/sys/libkern/crc32.c Reviewed-by: Simon Horman <horms@verge.net.au> Signed-off-by: Joe Stringer <joe@wand.net.nz> Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-08-10seq: New module for race-free, pollable, thread-safe sequence number.Ben Pfaff
Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Andy Zhou <azhou@nicira.com>
2013-08-02async-append: Refactor to avoid requiring enabling while single threaded.Ben Pfaff
Until now, the async append interface has required async_append_enable() to be called while the process was still single-threaded, with the rationale being that async_append_enable() could race with async_append_write() on some existing async_append object. This was a difficult problem when the async append interface was introduced, because at the time Open vSwitch did not have any infrastructure for inter-thread synchronization. Now it is easy to solve, by introducing synchronization into the async append module. However, that's more or less wasted, because the client is already required to serialize access to async append objects. Moreover, vlog, the only existing client, needs to serialize access for other reasons, so it wouldn't even be possible to just drop the client's synchronization. This commit therefore takes another approach. It drops the async_append_enable() interface entirely. Now any existing async_append object is always enabled. The responsibility for "enabling", then, now rests in whether the client creates and uses an async_append object, and so vlog now takes care of that by itself. Also, since vlog now has to deal with sometimes having an async_append and sometimes not having one, we might as well allow creating an async_append to fail, thereby slightly simplifying the "no async I/O" implementation from "write synchronously" to "always fail creating an async_append". Reported-by: Shih-Hao Li <shihli@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-08-02tag: Retire the venerable tag library.Ethan Jackson
This patch retires a venerable library whose inception dates before the first patch of the current repository: tags. They have served us well, but their time has come for the reasons listed below. 1) They don't actually help much. In theory, tags had been used to reduce revalidation necessary when using bonds, mac-learning, and frequently changing flow tables. With bonds and mac-learning, things change happen so rarely that tagging isn't worth it. That leaves flow table changes. With the complex flow tables in my testing, the revalidate_set gets so overwhelmed with tags, that we end up revalidating every facet every time through the run loop. In other words, they tags are giving us no benefit. 2) They complicate the code. This patch simplifies the code and removes a couple of rather ugly kludges. 3) They complicated locking once threading hits. Because of the calculate_flow_tag() function, the table_dpif structure would require locking in a multi-threaded OVS. Though this problem isn't insurmountable, it's annoying and probably would cause lock contention. Of course, we could try to work around these problems with a more advanced tagging infrastructure, but this moves in the opposite of the direction we should be. Ideally we'll have a more-or-less stateless ofproto-dpif supporting a massive number of datapath flows. Tags (or facets for that matter) aren't going to work in this new world. Signed-off-by: Ethan Jackson <ethan@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
2013-07-18async-append: New library to allow asynchronous appending to a log file.Ben Pfaff
This will be hooked into the vlog library in an upcoming commit. Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-07-15latch: New module for a thread-safe, signal-safe, pollable doorbell.Ben Pfaff
Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ed Maste <emaste@freebsd.org>
2013-07-15stress: Remove essentially unused library.Ben Pfaff
The "stress" library was introduced years ago. We intended at the time to start using it to provoke errors in testing, to make sure that Open vSwitch was resilient against those errors. The intention was good, but there were few actual implementations of stress options, and the testing never materialized. Rather than adapt the stress library for thread safety, this seems like a good opportunity to remove it, so this commit does so. Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-07-12worker: Delete library.Ben Pfaff
It had no remaining users. Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-06-28ovs-atomic: New library for atomic operations.Ben Pfaff
This library should prove useful for the threading changes coming up. The following commit introduces one (very simple) user. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
2013-06-25ovs-thread: New module, initially just with pthreads wrapper functions.Ben Pfaff
The only tricky part here is that I'm throwing in annotations to allow "sparse" to report unbalanced locking. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
2013-06-25ofp-errors: Implement OpenFlow 1.2+ experimenter error codes.Ben Pfaff
OpenFlow 1.2 standardized experimenter error codes in a way different from the Nicira extension. This commit implements the OpenFlow 1.2+ version. This commit also makes it easy to add error codes for new experimenter IDs by adding new *_VENDOR_ID definitions to openflow-common.h. Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-06-18hindex: New data structure for hashed multimaps.Ben Pfaff
Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-06-17leak-checker: Remove because it cannot be made thread-safe.Ben Pfaff
The underlying glibc interface is deprecated because the interface itself is not thread-safe. That means that there's no way for a layer on top of it to be thread-safe. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
2013-05-29odp-execute: New module for executing datapath actions.Simon Horman
This moves generic action execution code out of lib/dpif-netedev.c and into a new file, lib/odp-execute.c. This is in preparation for using odp_execute_actions() in lib/odp-util.c to handle recirculation/ Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-05-07bfd: Implement Bidirectional Forwarding Detection.Ethan Jackson
Traditionally, Open vSwitch has used a variant of 802.1ag "CFM" for interface liveness detection. This has served us well until now, but has several serious drawbacks which have steadily become more inconvenient. First, the 802.1ag standard does not implement several useful features forcing us to (optionally) break compatibility. Second, 802.1.ag is not particularly popular outside of carrier grade networking equipment. Third, 802.1ag is simply quite awkward. In an effort to solve the aforementioned problems, this patch implements BFD which is ubiquitous, well designed, straight forward, and implements required features in a standard way. The initial cut of the protocol focuses on getting the basics of the specification correct, leaving performance optimizations, and advanced features as future work. The protocol should be considered experimental pending future testing. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2013-03-15lib: Rename lib/pcap.h to avoid inclusion conflicts.Stephane A. Sezer
lib/pcap.h has a name that conflicts with /usr/include/pcap.h. When one wants to include pcap.h from libpcap (i.e.: the one from /usr/include), one may end up with pcap.h from openvswitch. This change renames this header to pcap-file.h and updates all references to this file. This change was tested with `make distcheck`. Signed-off-by: Stephane A. Sezer <sas@cd80.net> Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-02-05nicira-ext: Remove the autopath action.Ethan Jackson
The autopath action was attempting to achieve functionality similar to the bundle action, but was significantly clunkier, more difficult to understand, more difficult to use, and less reliable. This patch removes it. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2013-01-28netdev-vport: Build on all platforms.Ethan Jackson
This patch removes the final bit of linux specific code which prevents building netdev-vport everywhere. With this, other platforms automatically get access to patch ports, and (if their datapath supports it), flow based tunneling. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2013-01-22hash: Replace primary hash functions by murmurhash.Ben Pfaff
murmurhash is faster than Jenkins and slightly higher quality, so switch to it for hashing words. The best timings I got for hashing for data lengths of the following numbers of 32-bit words, in seconds per 1,000,000,000 hashes, were: words murmurhash Jenkins hash ----- ---------- ------------ 1 8.4 10.4 2 10.3 10.3 3 11.2 10.7 4 12.6 18.0 5 13.9 18.3 6 15.2 18.7 In other words, murmurhash outperforms Jenkins for all input lengths other than exactly 3 32-bit words (12 bytes). (It's understandable that Jenkins would have a best case at 12 bytes, because Jenkins works in 12-byte chunks.) Even in the case where Jenkins is faster, it's only by 5%. On average within this data set, murmurhash is 15% faster, and for 4-word input it is 30% faster. We retain Jenkins for flow_hash_symmetric_l4() and flow_hash_fields(), which are cases where the hash value is exposed externally. This commit appears to improve "ovs-benchmark rate" results slightly by a few hundred connections per second (under 1%), when used with an NVP controller. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
2012-11-27lib: Add helpers for OpenFlow version command line optionsSimon Horman
Signed-off-by: Simon Horman <horms@verge.net.au> [blp@nicira.com renamed some functions and options and revised the documentation] Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-10-09config: Add explicit support for building on ESX.Ethan Jackson
The ESX userspace looks quite a bit like linux, but has some key differences which need to be specially handled in the build. To distinguish between ESX and systems which use the linux datapath module, this patch adds two new macros "ESX" and "LINUX_DATAPATH". It uses these macros to disable building code on ESX which only applies to a true Linux environment. In addition, it adds a new route-table-stub implementation which is required for the build to complete successfully on ESX. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2012-10-04Fix vswitch-idl.ovsidl build rule with separate source and build dirs.Ben Pfaff
Before commit e3a880272 (lib: Specify idl location more precisely.), the files named in VSWITCH_IDL_FILES were relative to the source directory. That commit made them inconsistent: one remained relative to the source directory, the other became relative to the build directory. This meant that if the source and build directories differed, the ovsdb-idlc invocation had no change of succeeding. This commit fixes the problem by making the file names consistently relative to the build directory and then adjusting the ovsdb-idlc invocation to expect that. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
2012-10-04lib: Specify idl location more precisely.Ethan Jackson
For some reason, the ESX build tools seem to be confused about the location of 'lib'. This patch specifies it more directly. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2012-09-04classifier: Break cls_rule 'flow' and 'wc' members into new "struct match".Ben Pfaff
Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-08-01Make the location of the database separately configurable.Ben Pfaff
The default is unchanged, /etc/openvswitch/conf.db. This makes it possible to transition each Open vSwitch packaging from /etc/openvswitch/conf.db to /var/lib/openvswitch/conf.db independently. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-07-30ofp-msgs: New approach to encoding and decoding OpenFlow headers.Ben Pfaff
OpenFlow headers are not as uniform as they could be, with size, alignment, and numbering changes from one version to another and across varieties (e.g. ordinary messages vs. "stats" messages). Until now the Open vSwitch internal APIs haven't done a good job of abstracting those differences in header formats. This commit changes that; from this commit forward very little code actually needs to understand the header format or numbering. Instead, it can just encode or decode, or pull or put, the header using a more abstract API using the ofpraw_, ofptype_, and other APIs in the new ofp-msgs module. Signed-off-by: Ben Pfaff <blp@nicira.com> Tested-by: Simon Horman <horms@verge.net.au> Reviewed-by: Simon Horman <horms@verge.net.au>
2012-07-26netdev implementation for FreeBSDGiuseppe Lettieri
This patch adds new netdev classes that implement "system" and "tap" devices on FreeBSD using the libpcap library. This enables the use of the "netdev" datapath_type of Open vSwitch on FreeBSD. Signed-off-by: Gaetano Catalli <gaetano.catalli@gmail.com> Signed-off-by: Ed Maste <emaste@adaranet.com> Signed-off-by: Giuseppe Lettieri <g.lettieri@iet.unipi.it> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-07-18worker: New library for breaking a daemon into multiple processes.Ben Pfaff
ovs-vswitchd is effectively a "soft real-time" process, because flows that do not get set up quickly lead to packet loss or retransmission. We've done our best to keep it from blocking unnecessarily, but some operations unavoidably block. This new library allows a daemon to break itself up into a main process and a worker process, connected by an RPC channel, with the idea being that the main process will delegate any possibly blocking operations to the worker. This commit also modifies ovs-vswitchd to start a worker process, but it does not actually introduce any uses for the worker process. Upcoming commits will add those. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-07-13memory: Document the memory/show unixctl command.Ben Pfaff
Suggested-by: Justin Pettit <jpettit@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-07-03Introduce ofpacts, an abstraction of OpenFlow actions.Ben Pfaff
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>
2012-06-29Route-table implementation for (Free)BSDEd Maste
This is a trivial implementation of the route-table functionality for FreeBSD, as needed by ofproto/ofproto-dpif-sflow.c. It has not yet been extensively tested. Signed-off-by: Ed Maste <emaste@freebsd.org> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-06-21token-bucket: New library for generic rate-limiting.Ben Pfaff
This commit converts two rate-limiters in the tree to use the library. I intend to use the library elsewhere in the future. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-06-14lib: New data structure - smap.Ethan Jackson
A smap is a string to string hash map. It has a cleaner interface than shash's which were traditionally used for the same purpose. This patch implements the data structure, and changes netdev and its providers to use it. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2012-05-22Add support for tracking and logging daemon memory usage.Ben Pfaff
Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-05-22simap: New data structure for string-to-integer maps.Ben Pfaff
This commit adapts a couple of existing pieces of code to use the new data structure. The following commit will add another user (which is also the first use of the simap_increas() function). Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-05-22Use PYTHONDONTWRITEBYTECODE=yes for invoking Python for build or test.Ben Pfaff
An upcoming commit will break the ovs.vlog module into an ovs.vlog package with submodules. This commit makes switching between trees with the old structure and those with the new structure much easier. This commit works by setting PYTHONDONTWRITEBYTECODE=yes in Python invocations from the build system and testing. This keeps Python 2.6+ from creating .pyc and .pyo files. Creating .py[co] works OK for any given version of Open vSwitch, but it causes trouble if you switch from a version with foo/__init__.py into an (older) version with plain foo.py, since foo/__init__.pyc will cause Python to ignore foo.py. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-05-02Global replace of Nicira Networks.Raju Subramanian
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>
2012-04-26coverage: Make ovs-appctl command more useful and less alarming.Ben Pfaff
I've had a few complaints that ovs-vswitchd logs its coverage counters at WARN level, but this is mainly wrong: ovs-vswitchd only logs coverage counters at WARN level when the "coverage/log" command is used through ovs-appctl. This was even documented. The reason to log at such a high level was to make it fairly certain that these messages specifically requested by the admin would not be filtered out before making it to the log. But it's even better if the admin just gets the coverage counters as a reply to the ovs-appctl command. So that is what this commit does. This commit also improves the documentation of the ovs-appctl command. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-04-20automake: ofp-errors.[c|inc] are actually inside srcdirAnsis Atteka
This patch fixes a build error when OVS is built inside "./_debian" directory. To reproduce this issue run "fakeroot debian/rules binary" or "debuild binary" inside the git root directory. Signed-off-by: Ansis Atteka <aatteka@nicira.com>
2012-03-19idl: Move vswitch-idl to libopenvswitch.Ethan Jackson
This is cleaner then having multiple programs build the idl independently. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2012-02-01heap: New library that implements a binary heap-based priority queue.Ben Pfaff
Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-01-12Better abstract OpenFlow error codes.Ben Pfaff
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>
2011-12-19netflow: Move packet definitions to header file.Ben Pfaff
An upcoming commit will introduce code outside of ofproto/netflow.c that works with NetFlow packets, so we need the protocol definitions in a common location. Signed-off-by: Ben Pfaff <blp@nicira.com>
2011-11-23vlandev: New library for working with Linux VLAN devices.Ben Pfaff
2011-11-21nx-match: Fold all of its data structures into mf_field.Ben Pfaff
This is less redundant.
2011-10-27Fix manpage-check on RHEL 5.Ben Pfaff
The version of groff on RHEL 5 doesn't include the .SY, .OP, or .YS macros that ovs-benchmark.1 uses, so the manpage-check target fails on that platform. This commit adds the groff definitions of those macros to a file and includes it into ovs-benchmark.1. I tested that this allows RHEL 5 to pass manpage-check.