Releases: aristanetworks/EosSdk
v1.5.2
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 exampleexamples/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 newexamples/NexthopGroupHelper.cpp
files for a helper-library that provides a hitless nexthop group solution. We also introduce a correspondingactive()
method onnexthop_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
EOS SDK v1.5.1
Features:
- Introduce a getter and an exists method for
nexthop_group
s ineos/nexthop_group.h
. - In
eos/vrf.h
, add avrf_mgr
andvrf_handler
to let users manage VRFs and react to a VRF's creation or change in operational state. This module also exposes asocket_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 theip_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 theeth_lag_intf_t
type. This should affect no users. - API Change: the
vlan_set
value type has been renamedvlan_set_t
for consistency with the rest of EOS SDK's value types. This type was used byeth_intf.h
to expose and set trunk VLANs. For backwards compatibility,vlan_set
has been typedef'd tovlan_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
'sip_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 emptyeth_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 thempls_route_mgr
. - Improvements to the PolicyRouter example.
- Comment improvements.
v1.5.0
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
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 madeip_route_t
's
more confusing. - Breaking change:
fib.h
's APIs have been updated to use key
types instead of anip_prefix_t
anduint64_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
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
'sget_name()
method has been renamed toname()
- 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 theireos/types/
file:aresolve.h
,directflow.h
,eth.h
, andip.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 auint8_t
to denote the size. - Add
gre_key_type
attribute toeos::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
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.