module openconfig-if-aggregate { yang-version "1"; // namespace namespace "http://openconfig.net/yang/interfaces/aggregate"; prefix "oc-lag"; // import some basic types import openconfig-interfaces { prefix oc-if; } import openconfig-if-ethernet { prefix oc-eth; } import iana-if-type { prefix ift; } import openconfig-extensions { prefix oc-ext; } // meta organization "OpenConfig working group"; contact "OpenConfig working group netopenconfig@googlegroups.com"; description "Model for managing aggregated (aka bundle, LAG) interfaces."; oc-ext:openconfig-version "1.1.0"; revision "2016-12-22" { description "Fixes to Ethernet interfaces model"; reference "1.1.0"; } // extension statements // feature statements // identity statements // typedef statements 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 statements 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 "oc-lag: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"; } } // data definition statements // augment statements augment "/oc-if:interfaces/oc-if:interface" { when "oc-if:type = 'ift:ieee8023adLag'" { description "active when the interface is set to type LAG"; } description "Adds LAG configuration to the interface module"; uses aggregation-logical-top; } augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" + "oc-eth:config" { when "oc-if:type = 'ift:ethernetCsmacd'" { description "active when the interface is Ethernet"; } 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" { when "oc-if:type = 'ift:ethernetCsmacd'" { description "active when the interface is Ethernet"; } description "Adds LAG settings to individual Ethernet interfaces"; uses ethernet-if-aggregation-config; } // rpc statements // notification statements }