module openconfig-if-aggregate { yang-version 1; namespace "http://openconfig.net/yang/interfaces/aggregate"; prefix oc-lag; import openconfig-interfaces { prefix oc-if; } import openconfig-if-ethernet { prefix oc-eth; } import iana-if-type { prefix ianaift; } import openconfig-if-types { prefix oc-ift; } import openconfig-extensions { prefix oc-ext; } organization "OpenConfig working group"; contact "OpenConfig working group netopenconfig@googlegroups.com"; description "Model for managing aggregated (aka bundle, LAG) interfaces."; revision 2020-05-01 { description "Update when statements to reference config nodes from config true elements."; reference "2.4.3"; } revision 2019-04-16 { description "Update import prefix for iana-if-type module"; reference "2.4.2"; } revision 2018-11-21 { description "Add OpenConfig module metadata extensions."; reference "2.3.2"; } revision 2018-03-23 { description "Fix/cleanup when statements in aggregates model."; reference "2.3.1"; } revision 2018-01-05 { description "Add logical loopback to interface."; reference "2.3.0"; } revision 2017-12-22 { description "Add IPv4 proxy ARP configuration."; reference "2.2.0"; } revision 2017-12-21 { description "Added IPv6 router advertisement configuration."; reference "2.1.0"; } revision 2017-07-14 { description "Added Ethernet/IP state data; Add dhcp-client; migrate to OpenConfig types modules; Removed or renamed opstate values"; reference "2.0.0"; } revision 2016-12-22 { description "Fixes to Ethernet interfaces model"; reference "1.1.0"; } oc-ext:openconfig-version "2.4.3"; oc-ext:regexp-posix; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; typedef aggregation-type { type enumeration { enum "LACP" { description "LAG managed by LACP"; } enum "STATIC" { description "Statically configured bundle / LAG"; } } description "Type to define the lag-type, i.e., how the LAG is defined and managed"; } grouping aggregation-logical-config { description "Configuration data for aggregate interfaces"; leaf lag-type { type aggregation-type; description "Sets the type of LAG, i.e., how it is configured / maintained"; } leaf min-links { type uint16; description "Specifies the mininum number of member interfaces that must be active for the aggregate interface to be available"; } } grouping aggregation-logical-state { description "Operational state data for aggregate interfaces"; leaf lag-speed { type uint32; units "Mbps"; description "Reports effective speed of the aggregate interface, based on speed of active member interfaces"; } leaf-list member { when "../../config/lag-type = 'STATIC'" { description "The simple list of member interfaces is active when the aggregate is statically configured"; } type oc-if:base-interface-ref; description "List of current member interfaces for the aggregate, expressed as references to existing interfaces"; } } grouping aggregation-logical-top { description "Top-level data definitions for LAGs"; container aggregation { description "Options for logical interfaces representing aggregates"; container config { description "Configuration variables for logical aggregate / LAG interfaces"; uses aggregation-logical-config; } container state { config false; description "Operational state variables for logical aggregate / LAG interfaces"; uses aggregation-logical-config; uses aggregation-logical-state; } } } grouping ethernet-if-aggregation-config { description "Adds configuration items for Ethernet interfaces belonging to a logical aggregate / LAG"; leaf aggregate-id { type leafref { path "/oc-if:interfaces/oc-if:interface/oc-if:name"; } description "Specify the logical aggregate interface to which this interface belongs"; } } augment "/oc-if:interfaces/oc-if:interface" { description "Adds LAG configuration to the interface module"; uses aggregation-logical-top { when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" { description "active when the interface is set to type LAG"; } } } augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/oc-eth:config" { description "Adds LAG settings to individual Ethernet interfaces"; uses ethernet-if-aggregation-config; } augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/oc-eth:state" { description "Adds LAG settings to individual Ethernet interfaces"; uses ethernet-if-aggregation-config; } }