You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A new mac_table_handler that provides on_mac_entry_set() and on_mac_entry_del() callbacks when unicast MAC entries are learned or forgotten. This allows agents to take action when a MAC entry is programmed into hardware, both for dynamically learned and statically configured entries.
An expanded mac_table_mgr, which provides accessors and mutators to retrieve status about MAC entries, as well as modify the MAC address table.
Introduce a new hardware_table.h module that exposes the usage statistics for the various hardware tables used by the system. This is useful for agents that want to track how many entries are used or available across the various tables, either for monitoring purposes or so they can take specific actions when a table is close to becoming full. This module includes the following APIs:
A hardware_table_handler, which provides callbacks when the usage statistics for a single table/feature/chip combination update.
A hardware_table_mgr that provides iterators, accessors, and additional details for the various hardware tables on the system.
This modules is only compatible on EOS releases numbered 4.15.2F or greater, and is currently supported for a subset of Arista's platforms.
A new lldp.h module, currently in beta, which provides access to the switch's LLDP configuration and status. This includes:
A new lldp_handler class, containing handler methods to react to various changes advertised by a remote system, including the remote interface, version, and ip address, among other pieces of information.
A new lldp_mgr class, containing accessor and mutator methods to check the status of TLV entries and modify the set of TLVs.
Add utility methods on the eth_addr_t value type that let agents determine whether a MAC address is a unicast, multicast, or broadcast address.
Add a membership_del() method to eth_lag_intf_mgr.
Introduce a new ip_route_set(ip_route_t, ip_route_action_t) method that now takes a 'type' parameter. This optional hint lets the SDK program nexthop-group and drop routes more efficiently, if the agent knows in advance what type of vias will be associated with the route.
Add a new exists(vrf_name) method, which checks if a VRF has been configured.
Introduce a neighbor_table_iter manager method to iterate over configured neighbor entries.
Add the ability to flush the event_loop to ensure that all updates from the agent have made it to Sysdb. This is useful for event_loop scripts that want to make sure all updates have applied before exiting.
Expost the Management0 interface in both the intf.h and eth_intf.h modules.
Create a utility neighbor_key_t(ip_addr_t) constructor to make querying ARP entries easier.
Create a utility mpls_route_via_t constructor that takes a label action mpls_action_t.
Add examples to demonstrate usage of some of these new EOS SDK features.
Add a helper Python module at examples/eossdk_utils.py that provides debugging utilities for users developing Python agents.
Bugs fixes and improvements
API Change: The vrf.h module has been improved to maintain consistency with other EOS SDK APIs, and includes the following changes:
Deprecate the vrf() accessor and add a top level accessor to be more consistent with other managers.
Breaking change: new watch_vrf and watch_all_vrfs methods to enable or suppress handler events. Agents that wish to receive VRF status updates must now call watch_all_vrfs(true) or watch_vrf(vrf_name, true).
Bug fix: Our handlers now properly react to VRF status changes for VRFs that existed before the agent started up.
Remove VRF_CONFIGURED enum value.
The iterator has been simplified to yield the vrf_name and only iterates over configured entries.
API Change: The neighbor_table.h module has been improved to maintain consistency with other EOS SDK APIs, and includes the following changes:
Breaking change: new watch_neighbor_entry() and watch_all_neighbor_entries() methods to enable or suppress handler events. Agents that wish to receive status updates must now call watch_all_neighbor_entries(true).
Neighbor table accessors no longer panic, and instead return sane default values (for example, neighbor_entry_del() is now idempotent, and neighbor_entry() returns an empty neighbor_entry_t() if the entry does not exist.
API Change: Getter for ip_route_mgr now does not panic, and instead returns an empty ip_route_t() object.
Bug fix: We now suppress duplicate directflow_handler::on_flow_status notifications during internal state changes.
Bug fix: Properly fill-in the mpls_label_t for ip_route_via_t objects returned by ip_route_mgr::ip_route_via_iter().
Bug fix: The acl_rule_del() and acl_del() mutator functions have been fixed and now take effect after acl_commit().
Panic if an mpls_route_via_t object contains a MPLS_ACTION_POP action, but no hop is set.
Fix a potential deadlock when the agent receives a SIGINT or SIGTERM.
In ip_intf.h, the ip_addrs(intf_id_t) accessor now returns an empty set instead of panicking when an intf_id_t does not exist in the routing table.
The directflow.h module returns a new FLOW_STATUS_UNKNOWN enum value instead of panicking for unknown OpenFlow status.