module dot1Qv2 { namespace "ieee:ns:yang:ieee-dot1Q-bridge"; prefix "dot1Q"; import ieee-types { prefix ieee; } import yang-types { prefix yang; } import ietf-interfaces { prefix "if"; } include dot1Qv2-types; organization "Institute of Electrical and Electronics Engineers"; contact "Web URL: http://ieee.org/ E-mail: corporate-communications@ieee.org Postal: U.S.A. Phone: +1 732-563-6820 Fax: +1 732-981-9511"; description "TBD."; revision "2015-03-10" { description "Initial Version."; reference "IEEE 802.1Q-2011, Media Access Control (MAC) Bridges and Virtual Bridged Local Area Networks."; } feature IngressFiltering { description "Each Port may support an Enable Ingress Filtering parameter. A frame received on a Port that is not in the member set (8.8.10) associated with the frame’s VID shall be discarded if this parameter is set. The default value for this parameter is reset, i.e., Disable Ingress Filtering, for all Ports. Any Port that supports setting this parameter shall also support resetting it. The parameter may be configured by the management operations defined in Clause 12."; } feature ExtendedFilteringServices { description "Extended Filtering Services support the filtering behavior required for regions of a network in which potential recipients of multicast frames exist, and where both the potential recipients of frames and the Bridges are able to support dynamic configuration of filtering information for group MAC addresses. In order to integrate this extended filtering behavior with the needs of regions of the network that support only Basic Filtering Services, Bridges that support Extended Filtering Services can be statically and dynamically configured to modify their filtering behavior on a per-group MAC address basis, and also on the basis of the overall filtering service provided by each outbound Port with regard to multicast frames. The latter capability permits configuration of the Port’s default forwarding or filtering behavior with regard to group MAC addresses for which no specific static or dynamic filtering information has been configured."; } feature PortAndProtocolBasedVLANClassification { description "A VLAN-aware bridge component implementation in conformance to the provisions of this standard for Port-and-Protocol-based VLAN classification (5.4.1) shall 1) Support one or more of the following Protocol Classifications and Protocol Template formats: Ethernet, RFC_1042, SNAP_8021H, SNAP_Other, or LLC_Other (6.12); and may 2) Support configuration of the contents of the Protocol Group Database."; } container bridge { description "The Bridge Configuration object models the operations that modify, or inquire about, the configuration of the Bridge's resources. There is a single Bridge Configuration object per Bridge."; container bridge-information { uses bridgeInfo; } list interfaces { key "name"; leaf name { type leafref { path "/if:interfaces/if:interface/if:name"; } } leaf address { type ieee:mac-address; } leaf type { type enumeration { enum IEEE-802.3; enum ISO-IEC-8802-4; enum ISO-IEC-8802-5; enum ISO-IEC-8802-6; enum ISO-IEC-8802-9; enum IEEE-802-9a; enum ISO-IEC-8802-11; enum ISO-IEC-8802-12-802.3; enum ISO-IEC-8802-12-802.5; enum ISO-IEC-9314; enum other; } } leaf pvid { type ieee:vlanid; } list vlanId { key "vid"; leaf vid { type ieee:vlanid; } leaf name { type nameType; } leaf-list untagged-ports { type portNumberType; } leaf-list egress-ports { type portNumberType; } /* -- Not supported leaf protocol-based-vlan-classification { if-feature PortAndProtocolBasedVLANClassification; type boolean; } leaf max-vid-set-entries { if-feature PortAndProtocolBasedVLANClassification; type uint16; } container protocol-group { if-feature PortAndProtocolBasedVLANClassification; leaf protocol-group-id { type uint16; } leaf vid { type ieee:vlanid; } } */ } leaf default-priority { type priorityType; } container priority-regeneration-table { uses priorityRegenerationTable; } leaf pcp-selection { type pcpSelectionType; } container pcp-decoding-table { leaf type { type pcpSelectionType; } container table { uses pcpDecodingTable; } } container pcp-encoding-table { leaf type { type pcpSelectionType; } container encoding-table { uses pcpEncodingTable; } } leaf use-dei { type boolean; } leaf drop-encoding { type boolean; } leaf service-access-priority-selection { type serviceAccessPrioritySelectionType; } container service-access-priority-table { uses serviceAccessPriorityTable; } container traffic-class-table { uses trafficClassTable; } leaf acceptable-frame { description "To configure the Acceptable Frame Types parameter associated with one or more Ports"; type acceptableFrameType; } leaf ingress-filtering { description "To configure the Enabled Ingress Filtering parameter(s) associated with one or more Ports"; type ingressFilteringType; } leaf restricted-vlan-registration { description "To configure the Restricted_VLAN_Registration parameter associated with one or more Ports."; type boolean; } } list interfaces-state { key "name"; leaf name { type leafref { path "/if:interfaces-state/if:interface/if:name"; } } config false; list vlanId { key "vid"; leaf vid { type ieee:vlanid; } leaf status { type enumeration { enum reject-no-spare-vid; enum reject-vid-out-of-range; enum accepted; } } container counters { description "The Port Counters object models the operations that can be performed on the Port counters of the Forwarding Process resource. There are multiple instances (one for each VID for each MAC Entity) of the Port Counters object per Bridge."; leaf frame-rx { type yang:counter32; } leaf octets-rx { type yang:counter64; } leaf discard-inbound { type yang:counter32; } leaf forward-outbound { type yang:counter32; } leaf discard-lack-of-buffers { type yang:counter32; } leaf discard-transit-delay-exceeded { type yang:counter32; } leaf discard-on-error { type yang:counter32; } leaf discard-on-ingress-filtering { if-feature IngressFiltering; type yang:counter32; } } } } container bridged-vlan { description "The Bridge VLAN Configuration managed object models operations that modify, or inquire about, the overall configuration of the Bridge’s VLAN resources. There is a single Bridge VLAN Configuration managed object per Bridge"; container vlan { leaf version { type uint8 { range "1..2"; } } leaf max { type ieee:vlanid; } leaf override-default-pvid { type boolean; } /* leaf protocol-template-format { if-feature PortAndProtocolBasedVLANClassification; type protocolTemplateFormatType; } leaf max-protocol-group-database-entries { // Need to work on this section if-feature PortAndProtocolBasedVLANClassification; type uint16; } */ } list vlan-learning-constraints { description "The VLAN Learning Constraints managed object models operations that modify, or inquire about, the set of VLAN Learning Constraints (8.8.8.2) and VID to FID allocations (8.8.8.1) that apply to the operation of the Learning Process and the Filtering Database. There is a single VLAN Learning Constraints managed object per Bridge. The object is modeled as a pair of fixed-length tables, as follows: a) A Learning Constraint table in which each table entry either defines a single Learning Constraint or is undefined. For some of the operations that can be performed on the table, an entry index is used; this identifies the number of the entry in the table, where index number 1 is the first, and N is the last (where the table contains N entries)."; key "entry"; leaf entry { type uint16; } leaf type { type learningConstraintType; } leaf value { // Need to work on this one for sure! Needs to be a // container which depends on the learning constraints type. type uint16; } leaf status { config false; type enumeration { enum rejected; enum accepted; } } } list vid-to-fid-allocation { key "vid"; leaf vid { type ieee:vlanid; } leaf type { type VID-FID-allocationType; } leaf fid { type ieee:vlanid; } leaf status { config false; type enumeration { enum rejected-inconsistent-learning-constraint; enum rejected-vid-exceed-max; enum rejected-fid-exceed-max; enum accepted; } } } list fid-allocation-for-vid { key "fid"; leaf fid { type ieee:vlanid; } leaf vid { type ieee:vlanid; } leaf vid-fid-allocation { type VID-FID-allocationType; } } list vid-allocated-to-fid { key "fid"; leaf fid { type ieee:vlanid; } list vid-list { key "vid"; leaf vid { type ieee:vlanid; } leaf type { type VID-FID-allocationType; } } } } /* container protocol-group-database { description "To configure a Protocol Group Database entry."; if-feature PortAndProtocolBasedVLANClassification; leaf format { type protocolTemplateFormatType; } leaf index { type union { type etherType; type protocolIdType; type SAPAddressType; } } leaf protocol-group-id { type uint16; } leaf status { type enumeration { enum rejected-no-spare-protocol-group-database-entries; enum rejected-unsupported-frame-format; enum rejected-unsupported-ethertype-pid-dssap-ssap; enum accepted; } } } */ } container filtering-database { description "The Filtering Database object models the operations that can be performed on, or affect, the Filtering Database as a whole. There is a single Filtering Database object per Bridge"; container information { leaf size { type uint16; } leaf static-entries { type uint16; } leaf dynamic-entries { type uint16; } leaf static-vlan-registration-entries { type uint16; } leaf dynamic-vlan-registration-entries { type uint16; } leaf aging-time { type yang:timeticks; units seconds; default 300; } /* leaf mac-address-registration-entries { if-feature ExtendedFilteringServices; type uint16; } */ } list filtering-entry { description "A Static Filtering Entry object models the operations that can be performed on a single Static Filtering Entry in the Filtering Database. The set of Static Filtering Entry objects within the Filtering Database changes only under management control. A Dynamic Filtering Entry object models the operations that can be performed on a single Dynamic Filtering Entry (i.e., one that is created by the Learning Process as a result of the observation of network traffic) in the Filtering Database"; key "database-id vid address"; uses databaseIndex; leaf entry-type { type enumeration { enum static; enum dynamic; } } leaf status { config false; type enumeration { enum accepted; enum rejected; } } uses portMap; } list vlan-registration-entry { description "A VLAN Registration Entry object models the operations that can be performed on a single VLAN Registration Entry in the Filtering Database. The set of VLAN Registration Entry objects within the Filtering Database changes under management control and also as a result of MVRP exchanges"; key "database-id vid address"; uses databaseIndex; leaf entry-type { type enumeration { enum static; enum dynamic; } } leaf status { config false; type enumeration { enum accepted; enum rejected; } } uses portMap; } container permanent-database { description "The Permanent Database object models the operations that can be performed on, or affect, the Permanent Database. There is a single Permanent Database per Filtering Database."; container information { leaf size { type uint16; } leaf static-entries { type uint16; } leaf static-vlan-registration-entries { type uint16; } } list filtering-entry { key "database-id vid address"; uses databaseIndex; leaf entry-type { type enumeration { enum static; enum dynamic; } } leaf status { config false; type enumeration { enum accepted; enum rejected; } } uses portMap; } } } }