blob: c63acea5a4af52dea93f8ed83c721226a5c67c6a [file] [log] [blame]
Sean Condonfae8e662016-12-15 10:25:13 +00001module msea-uni-evc-interface {
2
3 namespace "http://www.microsemi.com/microsemi-edge-assure/msea-uni-evc-interface";
4 prefix "msea-if"; //MicroSemi EdgeAssure (msea)
5
6 import ietf-yang-types {
7 prefix yang;
8 revision-date 2013-07-15;
9 }
10
11 import msea-types {
12 prefix msea;
13 revision-date 2016-02-29;
14 }
15
16 import ietf-interfaces {
17 prefix "if";
18 }
19
20 import ietf-inet-types {
21 prefix inet;
22 }
23
24 import iana-if-type {
25 prefix "ianaift";
26 }
27
28 import ietf-netconf-acm {
29 prefix nacm;
30 }
31
32 organization
33 "Microsemi Inc., FTD Division";
34
35 contact
36 "Web URL: http://www.microsemi.com/
37 E-mail: info@microsemi.com
38 Postal: Microsemi Corporation Corporate Headquarters
39 One Enterprise Aliso Viejo,
40 CA 92656
41 U.S.A.
42 Phone: +1 949 380 6100
43 Fax: +1 949 215-4996";
44
45 description
46 "This YANG module is based on the MEF 40 SNMP model, for the management
47 objects for the management of User Network Interfaces (UNIs).
48 It has been converted to YANG and modified slightly to suit the
49 EdgeAssure SFP which has some extra constraints that are not handled by
50 the original model
51
52 Copyright 2016 Microsemi Inc.
53 All rights reserved.";
54
55 reference
56 "***************************************************************************
57 Reference Overview
58
59 A number of base documents have been used to create this MIB. The following
60 are the abbreviations for the baseline documents:
61 [MEF 40] refers to SNMP MIB
62 [MEF6.1] refers to MEF 6.1 'Ethernet Services Definitions - Phase 2',
63 April 2008
64 [MEF 6.1.1] refers to MEF 6.1.1 'Layer 2 Control Protocol Handling Amendment
65 to MEF 6.1', January 2012
66 [MEF 7.2] refers to MEF 7.2 'Carrier Ethernet Management Information Model',
67 January 2013
68 [MEF 10.2] refers to MEF 10.2 'Ethernet Services Attributes Phase 2',
69 October 2009
70 [MEF 26.1] refers to MEF 26.1 'External Network Network Interface (ENNI) -
71 Phase 2', January 2012
72 [Q.840.1] refers to 'ITU-T Requirements and analysis for NMS-EMS
73 management interface of Ethernet over Transport and Metro Ethernet
74 Network (EoT/MEN)', March 2007
75 ****************************************************************************";
76
77 revision "2016-03-17" {
78 description
79 "Initial Version. Sean Condon - Microsemi";
80 reference "MEF 6.2";
81 }
82
83 typedef MefServiceInterfaceType {
84 type bits {
85// bit bUni1d1;
86// bit bUni1d2;
87 bit bUni2d1 {description "Only bUni2d1 is supported by EdgeAssure 1000";}
88// bit bUni2d2;
89// bit bEnni;
90// bit bEnniVuni;
91 }
92
93 default "bUni2d1";
94 description
95 "A MEF Interface can be one of several types:
96
97 bUni1d1 UNI Type 1.1 See MEF 13. Non-multiplexed UNI for services such as EPL,
98 bUni1d2 UNI Type 1.2 See MEF 13. Multiplexed UNI for services such as EVPL,
99 bUni2d1 UNI Type 2.1 See MEF 20 section 7
100 bUni2d2 UNI Type 2.2 See MEF 20 section 7
101 bEnni ENNI
102 bEnniVuni VUNI on an ENNI";
103 reference
104 "[MEF 6.1] 6.0";
105 }
106
107 typedef l2cp-dest-mac-address {
108 type string {
109 pattern '01-80-[cC]2-(00-){2}[02][0-9a-fA-F]|01:80:[cC]2:(00:){2}[02][0-9a-fA-F]';
110 }
111 description
112 "The L2CP Destination MAC address for CoS
113 Identifier type of 'l2cp' and is ignored for other types.
114
115 Valid values are 01-80-C2-00-00-00 through 01-80-C2-00-00-0F and
116 01-80-C2-00-00-20 through 01-80-C2-00-00-2F
117
118 Values can be upper or lower case and can be separated by hyphen or colon (but not both)";
119 }
120
121 typedef l2cp-destination-address {
122 type enumeration {
123 enum destinationAddressOnly {
124 description "L2CP selection is determined by
125 MAC Destination Address only";
126 }
127
128// enum daPlusProtocol {
129// description "L2CP selection is determined by
130// MAC Destination Address plus
131// Ethernet protocol";
132// }
133//
134// enum daPlusProtocolPlusSubtype {
135// description "L2CP selection is determined by
136// MAC Destination Address plus
137// Ethernet protocol plus subtype";
138// }
139 }
140 }
141
142 typedef ip-address-origin {
143 type enumeration {
144 enum "other" {
145 value 0;
146 description
147 "None of the following.";
148 }
149 enum "static" {
150 value 1;
151 description
152 "Indicates that the address has been statically
153 configured - for example, using NETCONF or a Command Line
154 Interface.";
155 }
156 enum "dhcp" {
157 value 2;
158 description
159 "Indicates an address that has been assigned to this
160 system by a DHCP server.";
161 }
162 enum "link-layer" {
163 value 3;
164 description
165 "Indicates an address created by IPv6 stateless
166 autoconfiguration that embeds a link-layer address in its
167 interface identifier.";
168 }
169 enum "random" {
170 value 4;
171 description
172 "Indicates an address chosen by the system at
173
174 random, e.g., an IPv4 address within 169.254/16, an
175 RFC 4941 temporary address, or an RFC 7217 semantically
176 opaque address.";
177 reference
178 "RFC 4941: Privacy Extensions for Stateless Address
179 Autoconfiguration in IPv6
180 RFC 7217: A Method for Generating Semantically Opaque
181 Interface Identifiers with IPv6 Stateless
182 Address Autoconfiguration (SLAAC)";
183
184 }
185 }
186 description
187 "The origin of an address.";
188 }
189
190 typedef neighbor-origin {
191 type enumeration {
192 enum "other" {
193 value 0;
194 description
195 "None of the following.";
196 }
197 enum "static" {
198 value 1;
199 description
200 "Indicates that the mapping has been statically
201 configured - for example, using NETCONF or a Command Line
202 Interface.";
203 }
204 enum "dynamic" {
205 value 2;
206 description
207 "Indicates that the mapping has been dynamically resolved
208 using, e.g., IPv4 ARP or the IPv6 Neighbor Discovery
209 protocol.";
210 }
211 }
212 description
213 "The origin of a neighbor entry.";
214 }
215
216 feature ipv4-non-contiguous-netmasks {
217 description
218 "Indicates support for configuring non-contiguous
219 subnet masks.";
220 }
221
222 /*** OBJECT DEFINITIONS ***/
223 augment "/if:interfaces" {
224 leaf l2cp-group-index { //aka mefServiceInterfaceCfgL2cpGrpIndex
225 type leafref {
226 path "/if:interfaces/msea-if:interface-profiles/msea-if:l2cp-group/msea-if:group-index";
227 }
228 description
229 "This object is the index of the L2CP profile group
230 (mefServiceL2cpGrpCfgIndex) associated with the current interface. A
231 value of 0 indicates that no interface L2CP profile group is associated
232 with the interface. The L2CP group must be the same for both interfaces";
233 reference
234 "[MEF 6.1] 6.0; [MEF 6.1.1] 8.0; [MEF 7.2] 6.2.1.2";
235
236// must "count(//if:interfaces/if:interface[msea-if:l2cp-group-index = current()]) = 2" {
237// error-app-tag "msea-if-must-01";
238// error-message "The same L2CP Group must be used on both interfaces of this device";
239// }
240 }
241
242 leaf mef-service-type { //aka mefServiceInterfaceCfgType
243 type MefServiceInterfaceType;
244 description
245 "This object indicates the configured interface type. One
246 bit in the vector can be set at one time based upon the
247 possible values indicated by mefServiceInterfaceStatusType.";
248 //default bUni1d1; --These defaults break the validation - not using them in Eagle
249 reference
250 "[MEF 6.1] 6.0; [MEF 7.2] 6.2.1.1, 6.2.1.2, 6.2.1.3";
251 }
252
253 leaf dhcp-timeout {
254 type uint16 {range 0..max;}
255 units seconds;
256 default 0;
257 description "The DHCP timeout in seconds, after which it will use fixed IP addreses
258 A zero value specifies it should never timeout";
259 }
260
261 container zero-touch-provisioning {
262 presence "When present sets this device to be configured through Zero Touch Provisioning";
263
264 description "Setting Zero Touch Provisioning (ZTP) configures the setting up
265 of the management interface through an LLDP server
266 When ZTP is active any DHCP or fixed IP address settings must not be specified.
267
268 If this attribute is set during a NETCONF session it will have no effect until the
269 next time the device is rebooted.";
270
271 must "count(/if:interfaces/if:interface/msea-if:ipv4/msea-if:address) = 0" {
272 error-app-tag "msea-if-must-01";
273 error-message "When ZTP is specified there must not be a manually specified IP address for either interface";
274 }
275
276 must "not(/if:interfaces/if:interface[msea-if:dhcp-addressing = 'true']) " {
277 error-app-tag "msea-if-must-02";
278 error-message "When ZTP is specified there must not be a DHCP Specification for either interface";
279 }
280
281 }
282
283 container interface-profiles {
284
285 list interface-bwp-group { //aka mefServiceBwpGrpCfgEntry
286
287 key "group-index";
288 max-elements 64;
289 description
290 "Bandwidth profile group settings table entry.";
291
292 leaf group-index { //aka mefServiceBwpGrpCfgIndex
293 type uint8;
294 description
295 "Bandwidth profile group index number";
296 }
297
298 list interface-bwp { //aka mefServiceBwpCfgEntry
299 key "cos-index";//Changed to cos-index (from bwp-index) based on MEP 40 6.4.2
300 unique name;
301 max-elements 64;
302
303 description
304 "Bandwidth profile. This maps 1:1 with a COS instance. This object is
305 maintained here to keep the traditional layout of BWPGroup-BWP-COS, but does
306 not have any other purpose in the current implementation";
307
308 leaf cos-index { //aka mefServiceBwpCfgCosIndex
309 type leafref {
310 path "/if:interfaces/msea-if:interface-profiles/msea-if:interface-cos/msea-if:cos-index";
311 }
312 description
313 "This object is the index number of the CoS ID profile
314 associated with the current bandwidth profile. A value of 0 indicates
315 that no CoS ID profile is associated with the bandwidth profile and the
316 bandwidth profile applies to all CoS IDs.
317
318 This index indicates a specific CoS ID profile previously configured via
319 mefServiceCosCfgTable as indicated by the mefServiceCosCfgIndex object.";
320 reference
321 "[MEF 6.1] 6.1; [MEF 7.2] 6.2.1.3";
322
323 must "current()/../../msea-if:group-index > 0" {
324 error-app-tag "msea-if-must-10";
325 error-message "No BWP's can be added to the Bandwidth Profile Group 0, as this index represents a special case";
326 }
327 }
328
329 leaf name { //mefServiceBwpCfgIdentifier
330 type string {
331 length "1..45";
332 }
333 mandatory true;
334 description
335 "This object indicates the bandwidth profile identifier for the
336 associated bandwidth profile index and is an arbitrary
337 text string that is used to identify a bandwidth profile. Unique
338 string values are chosen to uniquely identify the bandwidth
339 profile.
340
341 Octet values of 0x00 through 0x1f are illegal.
342
343 MEF 26.1 restricts the maximum size identifiers to 45 octets.";
344 reference
345 "[MEF 6.1] 6.0, 6.1, 6.2, 6.3; [MEF 7.2] 6.2.1.2, 6.2.1.3";
346 }
347
348
349 } //End bwp
350
351 } //End bwp-group
352
353 list interface-cos { //aka mefServiceCosCfgEntry
354 key "cos-index";
355 unique name;
356 max-elements 64;
357 description
358 "Class of Service Identifier settings table entry.";
359
360 leaf cos-index { //aka mefServiceCosCfgIndex
361 type uint32 {
362 range 1..max;
363 }
364 description
365 "Class of Service Identifier profile index number.";
366 }
367
368 leaf name { //aka mefServiceCosCfgIdentifier
369 type string {
370 length 1..45;
371 }
372
373 description
374 "This object indicates the Class of Service Name for the
375 associated CoS profile index and is an arbitrary text string that is
376 used to identify a CoS ID profile. Unique string values are chosen to
377 uniquely identify the profile.
378
379 Octet values of 0x00 through 0x1f are illegal.
380
381 MEF 26.1 restricts the maximum size identifiers to 45 octets.";
382 reference
383 "[MEF 6.1] 6.0, 6.1, 6.2, 6.3; [MEF 7.2] 6.2.1.2, 6.2.1.3";
384 }
385
386 container dscp-cos-type {
387 description "Indicates that the CoS profile is associated
388 with the incoming frame's DSCP field if it is an IP frame.
389 If it is not an IP frame no action is taken on it";
390
391 choice dscp-id-choice {
392 case dscp-bits-list {
393 leaf dscp-group-bit-list {
394 type bits {
395 bit dscp-0-7 {
396 description "The set of DSCP identifiers from 0-7";
397 }
398 bit dscp-8-15 {
399 description "The set of DSCP identifiers from 8-15";
400 }
401 bit dscp-16-23 {
402 description "The set of DSCP identifiers from 16-23";
403 }
404 bit dscp-24-31 {
405 description "The set of DSCP identifiers from 24-31";
406 }
407 bit dscp-32-39 {
408 description "The set of DSCP identifiers from 32-39";
409 }
410 bit dscp-40-47 {
411 description "The set of DSCP identifiers from 40-47";
412 }
413 bit dscp-48-55 {
414 description "The set of DSCP identifiers from 48-55";
415 }
416 bit dscp-56-63 {
417 description "The set of DSCP identifiers from 56-63";
418 }
419 }
420 }
421 }
422
423 case dscp-0-63 {
424 container dscp-0-63 {
425 presence "The full set of DSCP identifiers from 0-63";
426 }
427 }
428
429 case specific-values {
430 leaf-list dscp-id {
431 type uint16 {
432 range 0..64;
433 }
434 ordered-by system;
435 description "The set of DSCP identifiers handled by this COS";
436 }
437 }
438 mandatory true;
439// msea:not-changeable;
440 }
441
442 choice color-specification {
443 case all-green {
444 container color-all-green {
445 presence "Color for all specified DSCPs mapped to green";
446 }
447 }
448 case all-yellow {
449 container color-all-yellow {
450 presence "Color for all specified DSCPs mapped to yellow";
451 }
452 }
453 case all-dropped {
454 container color-all-dropped {
455 presence "Color for all specified DSCPs mapped to dropped";
456 }
457 }
458
459 case dscp-to-color-map {
460 list dscp-color {
461 key dscp-id;
462 ordered-by system;
463 description "A list of DSCP values that apply to this COS.
464 When the COS type is DSCP a subset of the values can
465 be specified. Other DSCP values can be specified in
466 additional COS profiles. In total the same priority
467 cannot be repeated in a BWP Group";
468
469 leaf dscp-id {
470 type uint16 {
471 range 0..64;
472 }
473 }
474
475 leaf color {
476 description "Color to apply to incoming IP frames
477 with this DSCP id";
478
479 type msea:cos-color-type;
480 }
481 }
482 }
483 default all-green;
484// msea:not-changeable;
485 }
486 }
487
488 leaf outgoing-cos-value {
489 type msea:priority-type;
490 mandatory true;
491// msea:not-changeable;
492
493 description
494 "Used to set the egress COS to use for all ingress COS explicitly listed";
495 reference
496 "Edge Assure internal API";
497 }
498 }
499
500 list l2cp-group { //aka mefServiceL2cpGrpCfgEntry
501 key "group-index";
502 max-elements 64;
503 description
504 "L2CP profile group settings table entry on an interface.";
505
506 leaf group-index { //aka mefServiceL2cpGrpCfgIndex
507 type uint32;
508 description
509 "L2CP profile group index number, indicating the specific L2CP profile
510 group";
511 }
512
513 list l2cp { //aka mefServiceL2cpCfgEntry
514 key "index";
515 max-elements 64;
516 description
517 "L2CP settings table entry on an interface or a service.";
518
519 leaf index { //aka mefServiceL2cpCfgIndex
520 type uint32;
521 description
522 "This object configures the L2CP index number on an interface or a
523 Service and is used to create/access a L2CP profile within a L2CP
524 group.";
525
526 must "current()/../../msea-if:group-index > 0" {
527 error-app-tag "msea-if-must-11";
528 error-message "No L2CP's can be added to the L2CP Group 0, as this index represents a special case";
529 }
530 }
531
532 leaf handling { //aka mefServiceL2cpCfgType
533 type enumeration {
534 enum discard {description "The indicated L2CP is discarded";}
535
536 enum tunnel {description "The indicated L2CP is tunneled (passed)";}
537
538 enum peer {description "The indicated L2CP is peered with the NE";}
539
540 // enum passToEvc {description "the indicated L2CP is passed to the EVC for
541 // EVC processing of the L2CP. Final L2CP
542 // disposition is based the L2CP profile for
543 // the EVC to be tunneled, discarded, or peered.
544 // This value is not valid for EVC based L2CP";
545 // }
546 }
547 default tunnel;
548// msea:not-changeable;
549
550 description
551 "This object configures the handling of matching L2CP frames.";
552 reference
553 "[MEF 6.1] 6.0, 8.0; [MEF 6.1.1] 8.0; [MEF 7.2] 6.2.1.2";
554 }
555
556 leaf match-scope { //aka mefServiceL2cpCfgMatchScope
557 type l2cp-destination-address;
558 default destinationAddressOnly;
559// msea:not-changeable;
560
561 description
562 "This object configures the L2CP selection matching scope.";
563 reference
564 "[MEF 6.1] 6.0, 8.0; [MEF 6.1.1] 8.0; [MEF 7.2] 6.2.1.2";
565
566 }
567
568 leaf mac-address { //aka mefServiceL2cpCfgMacAddress
569 type l2cp-dest-mac-address;
570 mandatory true;
571// msea:not-changeable;
572
573 description
574 "This object configures the L2CP Destination MAC address.
575
576 Valid values are 01-80-C2-00-00-00 through 01-80-C2-00-00-0F and
577 01-80-C2-00-00-20 through 01-80-C2-00-00-2F";
578
579 must "count(current()/../../msea-if:l2cp[msea-if:mac-address = current()]) <= 1" {
580 error-app-tag "msea-if-must-12";
581 error-message "A destination address can only appear once in an L2CP Group";
582 }
583 }
584 } //End l2cp
585
586 } //End l2cp-group
587
588 } //End profiles
589 } //end augment interfaces
590
591 //
592 // Augments ietf-interfaces (only of type ethernetCsmacd) with MEF Services
593 //
594 augment "/if:interfaces/if:interface" {
595
596 //Copied IPV4 over from ietf-ip because
597 // i) We do not want to have to include IPv6
598 // ii) libnetconf only supports augmenting any container
599 // from one file (i.e. cannot augment interface here and
600 // also in ietf-ip.yang
601
602
603 container ipv4 {
604 presence
605 "Enables IPv4 unless the 'enabled' leaf
606 (which defaults to 'true') is set to 'false'";
607 description
608 "Parameters for the IPv4 address family.";
609
610 leaf enabled {
611 type boolean;
612 default true;
613
614 description
615 "Controls whether IPv4 is enabled or disabled on this
616 interface. When IPv4 is enabled, this interface is
617 connected to an IPv4 stack, and the interface can send
618 and receive IPv4 packets. When ZTP is configured it
619 will treat both interfaces as enabled and will ignore
620 what this value is set to";
621
622 must "count(/if:interfaces/if:interface[if:name='eth0' or if:name='eth1']/msea-if:ipv4[msea-if:enabled = 'true']) >= 1" {
623 error-app-tag "msea-if-must-20";
624 error-message "At least one of the interfaces eth0 and eth1 must be enabled";
625 }
626 }
627
628 leaf forwarding {
629 type boolean;
630 default false;
631 description
632 "Controls IPv4 packet forwarding of datagrams received by,
633 but not addressed to, this interface. IPv4 routers
634 forward datagrams. IPv4 hosts do not (except those
635 source-routed via the host).";
636 }
637
638 leaf mtu {
639 type uint16 {
640 range "68..max";
641 }
642 units "octets";
643 description
644 "The size, in octets, of the largest IPv4 packet that the
645 interface will send and receive.
646
647 The server may restrict the allowed values for this leaf,
648 depending on the interface's type.
649
650 If this leaf is not configured, the operationally used MTU
651 depends on the interface's type.";
652 reference
653 "RFC 791: Internet Protocol";
654
655 }
656
657 container address {
658 when "not (../../msea-if:dhcp-addressing = 'true')";
659 presence "This address being present indicates the interface has been configured";
660
661 description
662 "The configured IPv4 addresses on the interface.";
663 leaf ip {
664 type inet:ipv4-address-no-zone;
665 description
666 "The IPv4 address on the interface.";
667 }
668
669 choice subnet {
670 mandatory true;
671 description
672 "The subnet can be specified as a prefix-length, or,
673 if the server supports non-contiguous netmasks, as
674 a netmask.";
675 leaf prefix-length {
676 type uint8 {
677 range "0..32";
678 }
679 description
680 "The length of the subnet prefix.";
681 }
682 leaf netmask {
683 if-feature ipv4-non-contiguous-netmasks;
684 type yang:dotted-quad;
685 description
686 "The subnet specified as a netmask.";
687 }
688 } // choice subnet
689
690 leaf gateway {
691 type inet:ipv4-address-no-zone;
692
693 description "This will be ignored if ZTP or DHCP are configured
694 for management addressing. If unspecified then 0.0.0.0 will be used.";
695
696 }
697 } // container address
698 } // container ipv4
699
700
701
702 leaf frame-format { //aka mefServiceInterfaceCfgFrameFormat
703 when "../if:type='ianaift:ethernetCsmacd' and (../if:name='eth0' or ../if:name='eth1')";
704 type enumeration {
705 enum noTag {
706 description "Indicates that all data on the interface
707 is regarded as untagged, regardless of it ingress type";
708 }
709 enum ctag {
710 description "Ingress frames with CTAG(vlan>0) will be
711 regared as 'VLAN tagged'; with CTAG(vlan=0) as Priority; otherwise untagged";
712 }
713 enum stag {
714 description "Ingress frames with STAG(vlan>0) will be
715 regared as 'VLAN tagged'; with STAG(vlan=0) as Priority; otherwise untagged";
716 }
717// enum stagCtag { description "Indicates that service traffic identified
718// with both an S-TAG (outer tag) and a C-TAG
719// (inner tag)"; }
720 //default noTag; --These defaults break the validation - not using them in Eagle
721 }
722 description
723 "This object indicates the interface frame format type that the
724 interface can recognize. Default is noTag";
725 reference
726 "[MEF 6.1] 6.0";
727 } //end frame-format
728
729 leaf interface-ingress-bwp-group-index { //aka mefServiceInterfaceCfgIngressBwpGrpIndex
730 when "../if:type='ianaift:ethernetCsmacd' and (../if:name='eth0' or ../if:name='eth1')";
731 type leafref {
732 path "/if:interfaces/msea-if:interface-profiles/msea-if:interface-bwp-group/msea-if:group-index";
733 }
734 description
735 "This object is the index number of the ingress bandwidth profile group
736 associated with the current interface. A value of 0 indicates that no
737 interface ingress bandwidth profile group is associated with the
738 interface.
739
740 This index indicates the specific bandwidth profile group previously
741 configured via mefServiceBwpGrpCfgTable and mefServiceBwpCfgTable
742 using this value for mefServiceBwpGrpCfgIndex. There may be multiple
743 entries in mefServiceBwpCfgTable using this index, each containing
744 bandwidth parameters for a different Class of Service Identifier.";
745 reference
746 "[MEF 6.1] 6.0; [MEF 7.2] 6.2.1.2";
747 }
748
749 leaf ce-vid-untagged { //aka mefServiceUniCfgCeVidUntagged
750 when "../if:type='ianaift:ethernetCsmacd' and (../if:name='eth0' or ../if:name='eth1')";
751 type msea:vlan-id-type;
752
753// mandatory true;
754 description
755 "Configures the CE VLAN ID associated with untagged and priority
756 Service Frames. It allows the identification of untagged and
757 priority tagged traffic with a specific CE-VLAN ID. This object
758 is ignored for all to one bundling at the UNI.
759 This attribute has been placed on the interface (rather than the UNI)
760 as it can be defined regardless of whether a UNI exists or not";
761 reference
762 "[MEF 6.1] 6.0, [MEF 7.2] 6.2.1.2";
763 }
764
765 leaf ce-priority-untagged { //aka mefServiceUniCfgCePriorityUntagged
766 when "../if:type='ianaift:ethernetCsmacd' and (../if:name='eth0' or ../if:name='eth1')";
767 type msea:priority-type;
768// mandatory true;
769
770 description
771 "Configures the CE VLAN Priority associated with untagged Service
772 Frames. It allows the assignment of a specific VLAN priority to
773 untagged traffic. This object is ignored for all to one bundling
774 at the UNI.
775 This attribute has been placed on the interface (rather than the UNI)
776 as it can be defined regardless of whether a UNI exists or not";
777 reference
778 "[MEF 7.2] 6.2.1.2";
779 }
780
781 leaf admittance-criteria {
782 when "../if:type='ianaift:ethernetCsmacd' and (../if:name='eth0' or ../if:name='eth1')";
783 type enumeration {
784 enum admitAll {
785 description "Admit all frames";
786 }
787// enum admitPrioUntaggedOnly {description "Admit only frames that are not Priority tagged";}
788// enum admitVlanOnly {description "Admit only frames that are VLAN tagged";}
789 }
790
791// default admitAll;
792
793 description "Criteria for admitting packets to this interface.
794 The Frame Format attribute to determintes how frames are tagged";
795 }
796
797 leaf color-aware {
798 type boolean;
799 default true;
800
801 description
802 "Defines whether the interface should handle color mappings.
803 If true the color is extracted from the packet tag (DEI bit)
804 or for IPv4 packets, the DSCP field.
805 If false the packet is always assumed to be green.";
806 reference
807 "Edge Assure internal API";
808 }
809
810 leaf color-forward {
811 type boolean;
812 default true;
813
814 description
815 "Defines whether the interface should handle color mappings.
816 If true color mappings defined in the interface-cos
817 associated with the active interface-ingress-bwp-group will be applied";
818 reference
819 "Edge Assure internal API";
820 }
821
822 leaf dhcp-addressing {
823 when "../if:type='ianaift:ethernetCsmacd' and (../if:name='eth0' or ../if:name='eth1')";
824 type boolean;
825
826 description "This element can only be specified when ZTP
827 is not specified.
828
829 If this element is not present and ZTP is not
830 present then the fixed IP addresses specified at
831 /if:interfaces/if:interface/msea-if:ipv4
832 will be used
833
834 This element is specified per interface";
835
836 must "(not(/if:interfaces/if:interface[if:name = current()/../if:name]/msea-if:ipv4/msea-if:address) and not(/if:interfaces/msea-if:zero-touch-provisioning) and current() = 'true') or ((boolean(/if:interfaces/if:interface[if:name = current()/../if:name]/msea-if:ipv4/msea-if:address) or boolean(/if:interfaces/if:interface[if:name = current()/../if:name]/msea-if:ipv4[msea-if:enabled='false']) or (/if:interfaces/msea-if:zero-touch-provisioning)) and current() = 'false')" {
837 error-app-tag "msea-if-must-21";
838 error-message "When DHCP is 'true' there must be neither a fixed IP address for that interface NOR a ZTP node. When DHCP is 'false' there must be either a fixed IP address for that interface, a disabled interface OR a ZTP node";
839 }
840
841 }
842 } //End augment "/if:interfaces/if:interface
843
844 augment "/if:interfaces-state" {
845 leaf mef-service-type-options { //aka mefServiceInterfaceStatusType
846 type MefServiceInterfaceType;
847 description
848 "This object is a vector of bits that indicates the possible
849 interface types that an interface can be configured to. An interface,
850 for instance, can be configured to be a UNI type 1 or 2, or an ENNI.
851
852 All the possible capabilities of an interface are indicated, one bit
853 per possible type. At least one bit must be set for MEF compliant NEs.";
854 reference
855 "[MEF 6.1] 6.0";
856 }
857
858 leaf zero-touch-provisioning-state {
859 type enumeration {
860 enum complete {
861 description "The device was configured through ZTP at last reboot";
862 }
863 enum incomplete {
864 description "The device was configured through ZTP at last reboot but is not yet complete";
865 }
866 enum dhcp-failed {
867 description "Communication with DHCP server found through ZTP failed
868 and default values were used instead.";
869 }
870 enum needs-reboot {
871 description "ZTP was added to the configuration since last reboot";
872 }
873 }
874 description "A read only set of attributes indicating the status of
875 Zero Touch Provisioning. This only appears when ZTP is configured";
876 }
877 } //End augment "/if:interfaces-state
878
879
880 augment "/if:interfaces-state/if:interface" {
881
882 container ipv4 {
883 presence
884 "Present if IPv4 is enabled on this interface";
885 config false;
886 description
887 "Interface-specific parameters for the IPv4 address family.";
888 leaf forwarding {
889 type boolean;
890 description
891 "Indicates whether IPv4 packet forwarding is enabled or
892 disabled on this interface.";
893 }
894
895 leaf mtu {
896 type uint16 {
897 range "68..max";
898 }
899 units "octets";
900 description
901 "The size, in octets, of the largest IPv4 packet that the
902 interface will send and receive.";
903 reference
904 "RFC 791: Internet Protocol";
905
906 }
907
908 container address {
909 description
910 "The list of IPv4 addresses on the interface.";
911 leaf ip {
912 type inet:ipv4-address-no-zone;
913 description
914 "The IPv4 address on the interface.";
915 }
916
917 choice subnet {
918 description
919 "The subnet can be specified as a prefix-length, or,
920 if the server supports non-contiguous netmasks, as
921 a netmask.";
922 leaf prefix-length {
923 type uint8 {
924 range "0..32";
925 }
926 description
927 "The length of the subnet prefix.";
928 }
929 leaf netmask {
930 if-feature ipv4-non-contiguous-netmasks;
931 type yang:dotted-quad;
932 description
933 "The subnet specified as a netmask.";
934 }
935 } // choice subnet
936
937 leaf origin {
938 type ip-address-origin;
939 description
940 "The origin of this address.";
941 }
942 } // list address
943
944 leaf gateway {
945 type inet:ipv4-address;
946 description "The gateway IP address assigned through ZTP";
947 }
948
949 list neighbor {
950 key "ip";
951 description
952 "A list of mappings from IPv4 addresses to
953 link-layer addresses.
954
955 This list represents the ARP Cache.";
956 reference
957 "RFC 826: An Ethernet Address Resolution Protocol";
958
959 leaf ip {
960 type inet:ipv4-address-no-zone;
961 description
962 "The IPv4 address of the neighbor node.";
963 }
964
965 leaf link-layer-address {
966 type yang:phys-address;
967 description
968 "The link-layer address of the neighbor node.";
969 }
970
971 leaf origin {
972 type neighbor-origin;
973 description
974 "The origin of this neighbor entry.";
975 }
976 } // list neighbor
977 } // container ipv4
978
979 leaf max-vc { //aka mefServiceInterfaceStatusMaxVc
980 type uint32 {
981 range "1..4095";
982 }
983 description
984 "This object indicates the maximum number of EVCs that the
985 interface can support.";
986 reference
987 "[MEF 6.1] 6.0; [MEF 7.2] 6.2.1.2";
988 }
989
990 leaf configured-by {
991 type enumeration {
992 enum zero-touch-provisioning {
993 description "ZTP is active and has configured this interface";
994 }
995 enum dhcp {
996 description "Interface has been configured by a DHCP server without ZTP";
997 }
998 enum fixed-ipv4 {
999 description "Interface has been configured manually";
1000 }
1001 }
1002 }
1003 } //End augment "/if:interfaces-state/if:interface"
1004
1005
1006 augment "/if:interfaces-state/if:interface/if:statistics" {
1007
1008 leaf ingress-undersized { //aka mefServiceInterfaceStatisticsIngressUndersized
1009 type yang:counter32;
1010 units "Ethernet frames";
1011 description
1012 "This object is incremented for each frame received
1013 on a NE interface that was smaller than 64 octets.
1014
1015 This object defaults to '0'. ";
1016 reference
1017 "[MEF 15] 8.2; [Q.840.1] 6.2.4";
1018 }
1019
1020 leaf ingress-oversized { //aka mefServiceInterfaceStatisticsIngressOversized
1021 type yang:counter32;
1022 units "Ethernet frames";
1023 description
1024 "This object is incremented for each frame received
1025 on a NE interface that was larger than the maximum MTU size.
1026
1027 This object defaults to '0'.";
1028 reference
1029 "[MEF 15] 8.2; [Q.840.1] 6.2.4";
1030 }
1031
1032 leaf ingress-fragments { //aka mefServiceInterfaceStatisticsIngressFragments
1033 type yang:counter32;
1034 units "Ethernet frames";
1035 description
1036 "This object is incremented for each frame received
1037 on a NE interface that was less than 64 octets in length
1038 (excluding framing bits but including FCS octets) and had
1039 either a bad Frame Check Sequence (FCS) with an integral
1040 number of octets (FCS Error) or a bad FCS with a non-integral
1041 number of octets (Alignment Error).
1042
1043 Note that it is entirely normal for this counter to
1044 increment. This is because it counts both runts (which are
1045 normal occurrences due to collisions) and noise hits.
1046
1047 This object defaults to '0'.";
1048 reference
1049 "[MEF 15] 8.2; [Q.840.1] 6.2.4";
1050 }
1051
1052 leaf ingress-crc-alignment { //aka mefServiceInterfaceStatisticsIngressCrcAlignment
1053 type yang:counter32;
1054 units "Ethernet frames";
1055 description
1056 "This object is incremented for each frame received
1057 on a NE interface that was from 64 octets to the maximum MTU
1058 size in length, but had either a bad Frame Check Sequence (FCS)
1059 with an integral number of octets (FCS Error) or a bad FCS with
1060 a non-integral number of octets (Alignment Error).
1061
1062 This object defaults to '0'.";
1063 reference
1064 "[MEF 15] 8.2; [Q.840.1] 6.2.4";
1065 }
1066
1067 leaf ingress-invalid-vid { //aka mefServiceInterfaceStatisticsIngressInvalidVid
1068 type yang:counter32;
1069 units "Ethernet frames";
1070 description
1071 "This object is incremented for each frame received
1072 on a NE interface with an invalid VLAN ID.
1073
1074 This object defaults to '0'.";
1075 reference
1076 "[MEF 15] 8.2; [Q.840.1] 6.2.4";
1077 }
1078
1079 leaf ingress-octets { //aka mefServiceInterfaceStatisticsIngressOctets
1080 type yang:counter64;
1081 units "octets";
1082 description
1083 "This object is incremented by the number of octets in a
1084 valid frame received on a NE interface.
1085
1086 This object defaults to '0'.";
1087 reference
1088 "[MEF 15] 8.2; [Q.840.1] 6.2.4";
1089 }
1090
1091 leaf ingress-unicast { //aka mefServiceInterfaceStatisticsIngressUnicast
1092 type yang:counter64;
1093 units "Ethernet frames";
1094 description
1095 "This object is incremented for each valid unicast frame received
1096 on a NE interface.
1097
1098 NEs that do not support 64 bit counters can return the
1099 upper half of the counter as all zeros.
1100
1101 This object defaults to '0'.";
1102 reference
1103 "[MEF 15] 8.2; [Q.840.1] 6.2.4";
1104 }
1105
1106 leaf ingress-multicast { //aka mefServiceInterfaceStatisticsIngressMulticast
1107 type yang:counter64;
1108 units "Ethernet frames";
1109 description
1110 "This object is incremented for each valid multicast frame received
1111 on a NE interface.
1112
1113 ME-NEs that do not support 64 bit counters can return the
1114 upper half of the counter as all zeros.
1115
1116 This object defaults to '0'.";
1117 reference
1118 "[MEF 15] 8.2; [Q.840.1] 6.2.4";
1119 }
1120
1121 leaf ingress-broadcast { //aka mefServiceInterfaceStatisticsIngressBroadcast
1122 type yang:counter64;
1123 units "Ethernet frames";
1124 description
1125 "This object is incremented for each valid broadcast frame received
1126 on a NE interface.
1127
1128 ME-NEs that do not support 64 bit counters can return the
1129 upper half of the counter as all zeros.
1130
1131 This object defaults to '0'.";
1132 reference
1133 "[MEF 15] 8.2; [Q.840.1] 6.2.4";
1134 }
1135
1136 leaf egress-octets { //aka mefServiceInterfaceStatisticsEgressOctets
1137 type yang:counter64;
1138 units "octets";
1139 description
1140 "This object is incremented by the number of octets in a frame
1141 transmitted on a NE interface.
1142
1143 This object defaults to '0'.";
1144 reference
1145 "[MEF 15] 8.2; [Q.840.1] 6.2.4";
1146 }
1147
1148 leaf egress-unicast { //aka mefServiceInterfaceStatisticsEgressUnicast
1149 type yang:counter64;
1150 units "Ethernet frames";
1151 description
1152 "This object is incremented for each unicast frame transmitted on a
1153 NE interface.
1154
1155 ME-NEs that do not support 64 bit counters can return the
1156 upper half of the counter as all zeros.
1157
1158 This object defaults to '0'.";
1159 reference
1160 "[MEF 15] 8.2; [Q.840.1] 6.2.4";
1161 }
1162
1163 leaf egress-multicast { //aka mefServiceInterfaceStatisticsEgressMulticast
1164 type yang:counter64;
1165 units "Ethernet frames";
1166 description
1167 "This object is incremented for each multicast frame transmitted on a
1168 NE interface.
1169
1170 ME-NEs that do not support 64 bit counters can return the
1171 upper half of the counter as all zeros.
1172
1173 This object defaults to '0'.";
1174 reference
1175 "[MEF 15] 8.2; [Q.840.1] 6.2.4";
1176 }
1177
1178 leaf egress-broadcast { //aka mefServiceInterfaceStatisticsEgressBroadcast
1179 type yang:counter64;
1180 units "Ethernet frames";
1181 description
1182 "This object is incremented for each broadcast frame transmitted on a
1183 NE interface.
1184
1185 ME-NEs that do not support 64 bit counters can return the
1186 upper half of the counter as all zeros.
1187
1188 This object defaults to '0'.";
1189 reference
1190 "[MEF 15] 8.2; [Q.840.1] 6.2.4";
1191 }
1192 } //End augment "/if:interfaces-state/if:interface/if:statistics
1193
1194
1195
1196 rpc ztp-reset-and-reboot {
1197// nacm:default-deny-all;
1198 description
1199 "Request that the ZTP system should be reset and the system rebooted.
1200 This can only be run when the zero-touch-provisioning element
1201 already exists on the interfaces element
1202
1203 If the zero-touch-provisioning element has been added since the last
1204 reboot then the reset will be pending already and will be brought
1205 in to effect by this reboot.";
1206 }
1207
1208 } /* end of module msea-uni-evc-interface */