Skip to content

Releases: aristanetworks/EosSdk

v1.5.2

12 Mar 20:26
Compare
Choose a tag to compare

EOS SDK v1.5.2

Features:

  • Introduce an eth_lag_intf_handler to notify agents when watched Port-Channel (LAG) interfaces' physical interface membership changes.
  • Add a form of eth_lag_intf_member_iter(), taking a single Port-Channel interface ID to iterate over the members of. Usage is illustrated in the new example examples/PortChannelWatcher.cpp.
  • Add a new nexthop_group_handler that exposes when a nexthop group is programmed in hardware or not. This allows you to safely delete nexthop groups. See the new examples/NexthopGroupHelper.cpp files for a helper-library that provides a hitless nexthop group solution. We also introduce a corresponding active() method on nexthop_group_mgr.

Bugs and Fixes:

  • Nexthop group's MPLS label actions previously exposed the label stack reverse order. This has now been fixed. Note that the label-stack setter always handled the stack in the correct order; this is just a fix for the getter.
  • No longer malloc in the SDK's signal handler. Previously the SDK might attempt to allocate a string in the signal handler, which could cause deadlocks when handling signals.
  • Various improvements to comments.

v1.5.1

12 Mar 20:25
Compare
Choose a tag to compare

EOS SDK v1.5.1

Features:

  • Introduce a getter and an exists method for nexthop_groups in eos/nexthop_group.h.
  • In eos/vrf.h, add a vrf_mgr and vrf_handler to let users manage VRFs and react to a VRF's creation or change in operational state. This module also exposes a socket_at function that lets users open a file descriptor in a given VRF.
  • A new method in eos/ip_intf.h to expose the internal VLAN ID assocatied with a routed port, along with a new callback in the ip_intf_handler to notify when the internal VLAN changes.
  • Expose a new header eos/subintf.h that lets users manage "subiterfaces," a construct lets a single Ethernet or Port-Channel interface contain multiple logical L3 interfaces, distinguished by VLAN tag. This is a provisional header that is only compatible with certain early access EOS releases.

Bugs and Fixes

  • API Change: Pass large parameters by const reference instead of by value. This will require agents to be re-compiled, but requires no code changes.
  • API Change: Remove the non-functional intf_is method from the eth_lag_intf_t type. This should affect no users.
  • API Change: the vlan_set value type has been renamed vlan_set_t for consistency with the rest of EOS SDK's value types. This type was used by eth_intf.h to expose and set trunk VLANs. For backwards compatibility, vlan_set has been typedef'd to vlan_set_t so no code changes are necessary, though we recommend updating your code to use the new name.
  • Appease GCC and no longer parenthesize arrays in initializer lists.
  • Include a LICENSE file in the stubs tarball.
  • Panic with an unsupported error when users attempt to use IPv6 destination IPs in nexthop groups instead of silently discarding the configuration.
  • Make sure Null0 (drop) and nexthop group vias are exposed during iteration in eos/ip_route.h's ip_route_via_iter.
  • Include Python bindings for the FIB iterators.
  • Methods exposed by eos/sdk.h are now marked virtual so users can mock their calls in unit tests.
  • The eth_lag_intf() getter now returns an empty eth_lag_intf_t() and no longer panics if users attempt to get a port-channel that doesn't exist to maintain API consistency. Similarly, eth_lag_intf_is() is now idempotent instead of panic-ing.
  • The intf attribute is now properly set on MPLS vias. Previously this attribute would not be set when read via the mpls_route_mgr.
  • Improvements to the PolicyRouter example.
  • Comment improvements.

v1.5.0

10 Dec 08:59
Compare
Choose a tag to compare

Version 1.5.0

Welcome to the first public release of EOS SDK! Thank you for checking out Arista's EOS SDK—we can't wait to see what you build. To get started, check out the documentation or quickstart guide. You can explore the API documentation for this release here: http://aristanetworks.github.io/EosSdk/docs/1.5.0/ref/. To download the corresponding EOS extension, follow the download and installation instructions.

A note on versioning: at this time, we expect no backwards-incompatible changes to the provided modules. Future releases will likely update existing APIs, but will do so in a compatible manner and only require recompilation. However, we may find it necessary to make an incompatible API change based on feedback we receive from contributors like yourself. Once we've let these modules incubate for a sufficient amount of time, we'll move to release 2.0.0 and start strictly following semantic versioning

Features

  • Integrate the repository with Travis CI.
  • Add a LICENSE file

Bugs and fixes

  • Fix a few typos in comments.

v1.3.3

10 Dec 00:04
Compare
Choose a tag to compare
v1.3.3 Pre-release
Pre-release

Version 1.3.3

Features

  • Introduce handlers and setters to neighbor_table.h. Users can now
    fully interact with the ARP and IPv6 Neighbor tables, and receive
    notifications when neighbors are learned or expire.
  • Expose a lock in sdk.h so users can safely use the SDK across
    multiple threads.

Changes, bugs and fixes

  • Breaking change: the metric is no longer exposed on ip_route
    objects. This value was never configurable, and made ip_route_t's
    more confusing.
  • Breaking change: fib.h's APIs have been updated to use key
    types instead of an ip_prefix_t and uint64_t directly. This
    will let us future-proof this API as we add support for VRFs and
    other features.
  • Bug fix: previously, adding a nexthopgroup via while in resync
    mode would cause an error if the via already existed before resync
    started. This behavior is now fixed.
  • Bug fix: Use an initializer list in eth.h for setting an array
    ofbytes. This was causing issues on newer versions of GCC.
  • policy_map.h now #include <functional>, which was causing build
    issues on certain platforms.
  • Print clear error messages during configure (instead of the usual
    gcc giberish) when the user's compiler has incomplete C++11
    support.
  • Clean up the DirectFlowProgrammer.py example
  • Add a new PolicyRouter example, a python agent which monitors a
    file and turns its contents into PBR configuration.
  • A new simple example called InterfaceMonitor.py to demonstrate
    reactions to interfaces going down.

v1.3.2

10 Dec 00:01
Compare
Choose a tag to compare
v1.3.2 Pre-release
Pre-release

Version 1.3.2

Features

  • Counters for front panel ports (in eth_phy_intf.h)
  • Most enums now have an externally defined << operator which converts their value to string form.
  • Update fib.h to support reading the FIB (only supported in certain releases).
  • Automatically detect the running process's name so users do not have to set AGENT_PROCESS_NAME when running their agent manually
  • Introduction of a few new example libraries, including one for reading a TCP stream and one to handle server events on a file descriptor.

API Changes

  • Breaking change: eos::sdk's get_name() method has been renamed to name()
  • Convert more modules to our type generation system, so they can access the various hash(), to_string() and operator functions. The following modules have value classes defined in their eos/types/ file: aresolve.h, directflow.h, eth.h, and ip.h
  • agent_option() now returns "" if no option is configured, instead of panic-ing
  • The SDK's base exception, eos::error now inherits from std::exception
  • Feature-specific exceptions have been moved to their corresponding module.
  • nexthop groups now use a uint16_t instead of a uint8_t to denote the size.
  • Add gre_key_type attribute to eos::nexthop_group_t for future releases
  • Handle user-supplied command line arguments properly.

Bugs and Fixes

  • Allow a nexthop-group IP route via to be replaced by a forward one
  • Improved error messages
  • Usability improvements to the build.sh script, including a --force flag to force rebuilding the stub library.
  • SWIG updates to support gcc versions >= 4.6
  • Various python usability updates (i.e. better error reasons, docstrings)
  • Improved comments
  • Internal tracing added on some modules to ease debugging

v1.3.1

23 Sep 05:32
Compare
Choose a tag to compare
v1.3.1 Pre-release
Pre-release

Version 1.3.1

Features

Update nexthop_group headers to support MPLS nexthop group entries. These headers should be used as a future reference, and will currently result in a panic if called.

Better CLI integration - agents now detect their name via the AGENT_PROCESS_NAME environment variable. Agents will now automatically detect the name they were configured as when run via the CLI. Introduce a new sdk(std::string) constructor, which takes a name so agents can explicitly set their configured name.

Improve value_t's hash() and to_string() functionality.

Improved tracing in various SDK headers for improved debugging.

API changes

Breaking change: sdk.main_loop no longer takes an agent name. Instead, agents should infer their own name via the AGENT_PROCESS_NAME environment variable (which is automatically set by the daemon CLI), or by using the new sdk(std::string) constructor.

Additional conversions of SDK value types, including policy_map, class_map, mpls_route, and acl value types. New headers can be found in eos/types/.

Bugs and fixes

Fix the directflow header comments to not describe VLAN 0 as a valid value. Update the underlying value types to panic if asked to set the VLAN to 0 in an action.

IP interfaces now properly trigger the handler when the IP is removed from an interface.

Fix various typos in comments.

General stylistic changes.

v1.3.0

08 Sep 19:05
Compare
Choose a tag to compare
v1.3.0 Pre-release
Pre-release

Jump tags to the latest release.