aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/yang/openconfig/openconfig-ospf-types.yang
blob: 05446702bc4908ad69e922092fa38fe72b9ded57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
module openconfig-ospf-types {

  yang-version "1";

  // namespace
  namespace "http://openconfig.net/yang/ospf-types";

  prefix "oc-ospf-types";

  // import some basic types
  import ietf-yang-types { prefix "yang"; }
  import openconfig-extensions { prefix "oc-ext"; }

  // meta
  organization "OpenConfig working group";

  contact
    "OpenConfig working group
    www.openconfig.net";

  description
    "Type definitions for OSPF";

  oc-ext:openconfig-version "0.1.2";

  revision "2018-06-05" {
    description
      "Bug fixes in when statements in lsdb";
    reference "0.1.2";
  }

  revision "2017-08-24" {
    description
      "Minor formatting fixes.";
    reference "0.1.1";
  }

  revision "2017-02-28"{
    description
      "Initial public release of OSPFv2";
    reference "0.1.0";
  }

  revision "2016-06-24" {
    description
      "Initial revision";
    reference "0.0.1";
  }

  // typedefs
  typedef ospf-area-identifier {
    type union {
      type uint32;
      type yang:dotted-quad;
    }
    description
      "An identifier for an area with OSPF version 2 or 3. This value
      is expressed as either a dotted-quad, or a unsigned 32-bit
      number";
  }

  typedef ospf-metric {
    type uint16;
    description
      "A common type that can be utilised to express an OSPF metric";
  }

  typedef sr-sid-type {
    type enumeration {
      enum LABEL {
        description
          "When the length of the SR/Label Sub-TLV is specified to be 3, then
          the right-most 20-bits represent a label value within the SR/Label
          Sub-TLV. When this leaf is set to a value of Label the first-entry
          leaf should be interpreted to be an MPLS label.";
      }
      enum SID {
        description
          "When the length of the SR/Label Sub-TLV is specified to be 4, then
          the value specified in the first-entry leaf should be specified to
          be a segment identifier.";
      }
    }
    description
      "A common type used to express the type of segment identifier that is
      used in LSDB entries relating to segment routing";
  }

  // identities
  identity OSPF_LSA_TYPE {
    description
      "Base identity for an OSPF LSA type. This identity is intended
      to be used across both OSPFv2 and OSPFv3. Identity values that
      correspond to only one OSPF version are marked as such.";
  }

  identity ROUTER_LSA {
    base "OSPF_LSA_TYPE";
    description
      "Type 1 - ROUTER_LSA. An LSA originated by each router within
      the area describing the state and cost of the router's links
      in the area.";
    reference "RFC2328";
  }

  identity NETWORK_LSA {
    base "OSPF_LSA_TYPE";
    description
      "Type 2 - NETWORK_LSA. An LSA originated for each broadcast and
      non-broadcast multiple access (NBMA) in the area. This LSA is
      originated by the designated router.";
    reference "RFC2328";
  }

  identity SUMMARY_IP_NETWORK_LSA {
    base "OSPF_LSA_TYPE";
    description
      "Type 3 - SUMMARY_IP_NETWORK_LSA. An LSA originated by area
      border routers describing inter-area destinations. This LSA type
      is used when the destination is an IP network";
    reference "RFC2328";
  }

  identity SUMMARY_ASBR_LSA {
    base "OSPF_LSA_TYPE";
    description
      "Type 4 - SUMMARY_ASBR_LSA. An LSA originated by an area border
      router describing inter-area destinations. This LSA type is used
      when the destination is an AS boundary router.";
    reference "RFC2328";
  }

  identity AS_EXTERNAL_LSA {
    base "OSPF_LSA_TYPE";
    description
      "Type 5 - AS_EXTERNAL_LSA. This LSA type is used to describe
      destinations external to the autonomous system, and is
      originated by an AS boundary router (ASBR).";
    reference "RFC2328";
  }

  identity NSSA_AS_EXTERNAL_LSA {
    base "OSPF_LSA_TYPE";
    description
      "Type 7 - NSSA_AS_EXTERNAL_LSA. This LSA type is used by
      systems within a not-so-stubby-area (NSSA) to inject external
      prefixes into the LSDB. They are translated to Type 5 LSAs
      at an ABR device.";
    reference "RFC3101";
  }

  identity OSPFV2_LINK_SCOPE_OPAQUE_LSA {
    base "OSPF_LSA_TYPE";
    description
      "Type 9 - OSPFV2_LINK_SCOPE_OPAQUE_LSA. This LSA type is used
      in OSPFv2 to distribute arbitrary information via the OSPF
      protocol. The contents is specific to the application defining
      the Opaque Type specified within the LSDB. LSAs with Type 9 have
      a scope of the link that they are being transmitted on (and the
      associated network or subnetwork).";
    reference "RFC5250";
  }

  identity OSPFV2_AREA_SCOPE_OPAQUE_LSA {
    base "OSPF_LSA_TYPE";
    description
      "Type 10 - OSPFV2_AREA_SCOPE_OPAQUE_LSA. This LSA type is used
      in OSPFv2 to distribute arbitrary information via the OSPF
      protocol. The contents is specific to the application defining
      the Opaque Type specified within the LSDB. LSAs with Type 10 have
      a scope of the area that they are transmitted within.";
    reference "RFC5250";
  }

  identity OSPFV2_AS_SCOPE_OPAQUE_LSA {
    base "OSPF_LSA_TYPE";
    description
      "Type 11 - OSPFV2_AS_SCOPE_OPAQUE_LSA. This LSA type is used
      in OSPFv2 to distribute arbitrary information via the OSPF
      protocol. The contents is specific to the application defining
      the Opaque Type specified within the LSDB. LSAs with Type 11
      have a scope of the autonomous system that they are transmitted
      within.";
    reference "RFC5250";
  }

  identity ROUTER_LSA_TYPES {
    description
      "Sub-types of the router LSA";
  }

  identity ROUTER_LSA_P2P {
    base "ROUTER_LSA_TYPES";
    description
      "The LSA represents a point-to-point connection to another
      router";
  }

  identity ROUTER_LSA_TRANSIT_NETWORK {
    base "ROUTER_LSA_TYPES";
    description
      "The LSA represents a connection to a transit network";
  }

  identity ROUTER_LSA_STUB_NETWORK {
    base "ROUTER_LSA_TYPES";
    description
      "The LSA represents a connection to a stub network";
  }

  identity ROUTER_LSA_VIRTUAL_LINK {
    base "ROUTER_LSA_TYPES";
    description
      "The LSA represents a virtual link connection";
  }

  identity OSPF_NEIGHBOR_STATE {
    description
      "The state of an adjacency between the local system and a remote
      device";
  }

  identity DOWN {
    base "OSPF_NEIGHBOR_STATE";
    description
      "The initial state of a neighbor, indicating that no recent
      information has been received from the neighbor.";
    reference "RFC2328";
  }

  identity ATTEMPT {
    base "OSPF_NEIGHBOR_STATE";
    description
      "Utilised for neighbors that are attached to NBMA networks, it
      indicates that no information has been recently received from
      the neighbor but that Hello packets should be directly sent
      to that neighbor.";
    reference "RFC2328";
  }

  identity INIT {
    base "OSPF_NEIGHBOR_STATE";
    description
      "Indicates that a Hello packet has been received from the
      neighbor but bi-directional communication has not yet been
      established. That is to say that the local Router ID does
      not appear in the list of neighbors in the remote system's
      Hello packet.";
    reference "RFC2328";
  }

  identity TWO_WAY {
    base "OSPF_NEIGHBOR_STATE";
    description
      "Communication between the local and remote system is
      bi-directional such that the local system's Router ID is listed
      in the received remote system's Hello packet.";
    reference "RFC2328";
  }

  identity EXSTART {
    base "OSPF_NEIGHBOR_STATE";
    description
      "An adjacency with the remote system is being formed. The local
      system is currently transmitting empty database description
      packets in order to establish the master/slave relationship for
      the adjacency.";
    reference "RFC2328";
  }

  identity EXCHANGE {
    base "OSPF_NEIGHBOR_STATE";
    description
      "The local and remote systems are currently exchanging database
      description packets in order to determine which elements of
      their local LSDBs are out of date.";
    reference "RFC2328";
  }

  identity LOADING {
    base "OSPF_NEIGHBOR_STATE";
    description
      "The local system is sending Link State Request packets to the
      remote system in order to receive the more recently LSAs that
      were discovered during the Exchange phase of the procedure
      establishing the adjacency.";
    reference "RFC2328";
  }

  identity FULL {
    base "OSPF_NEIGHBOR_STATE";
    description
      "The neighboring routers are fully adjacent such that both
      LSDBs are synchronized. The adjacency will appear in Router and
      Network LSAs";
    reference "RFC2328";
  }

  identity OSPF_NETWORK_TYPE {
    description
      "Types of network that OSPF should consider attached to an
      interface";
  }

  identity POINT_TO_POINT_NETWORK {
    base "OSPF_NETWORK_TYPE";
    description
      "A interface that connects two routers.";
    reference "RFC2328";
  }

  identity BROADCAST_NETWORK {
    base "OSPF_NETWORK_TYPE";
    description
      "An interface that supports >2 attached routers which has the
      ability to address all connected systems via a single
      (broadcast) address.";
  }

  identity NON_BROADCAST_NETWORK {
    base "OSPF_NETWORK_TYPE";
    description
      "An interface that supports >2 attached rotuers which does not
      have the ability to address all connected systems with a
      broadcast address.";
  }

  // rjs TODO: Maybe need p2mp here.


  identity OSPF_OPAQUE_LSA_TYPE {
    description
      "This identity is the base used for opaque LSA types. The values
      that extend this base are those that are described in the IANA
      OSPF Opaque Link-State Advertisements (LSA) Option Types registry";
  }

  identity TRAFFIC_ENGINEERING {
    base "OSPF_OPAQUE_LSA_TYPE";
    description
      "The Traffic Engineering LSA. This type is used only with area-scope
      Opaque LSAs - and is used to describe routers, point-to-point links
      and connections to multi-access networks for traffic engineering
      purposes.";
    reference "RFC3630";
  }

  identity GRACE_LSA {
    base "OSPF_OPAQUE_LSA_TYPE";
    description
      "Grace LSAs are announced by a system undergoing graceful-restart.
      A system that is attempting an OSPF graceful restart announces
      Grace-LSAs with a specified grace period, indicating the intention
      to have completed an restart within the specified period.";
    reference "RFC3623";
  }

  identity ROUTER_INFORMATION {
    base "OSPF_OPAQUE_LSA_TYPE";
    description
      "The Router Information LSA is used by an OSPFv2 system to announce
      optional capabilities of the local system, over and above those that
      are included within the OSPF hello message field.  The flooding scope
      of the LSA can be link-, area-, or AS-wide (i.e., the LSA type can
      be 9, 10 or 11).";
    reference "RFC7770";
  }

  identity OSPFV2_EXTENDED_PREFIX {
    base "OSPF_OPAQUE_LSA_TYPE";
    description
      "The Extended Prefix LSA is used in OSPFv2 to carry a set of attributes
      that are to be associated with a prefix that is advertised in OSPF. The
      attributes are carried as one or more TLV tuples. The flooding scope
      of the LSA can be link-, area-, or AS-wide as specified by the
      advertising system. The flooding scope of the LSA may exceed the scope
      of the corresponding prefix.";
    reference "RFC7684";
  }

  identity OSPFV2_EXTENDED_LINK {
    base "OSPF_OPAQUE_LSA_TYPE";
    description
      "The Extended Link LSA is used in OSPFv2 to carry a set of attributes
      that are to be associated with a link that is advertised in OSPF. The
      link attributes are carried as one or more TLV tuples. The flooding
      scope of the link LSA is area-local - i.e., it is carried in a Type 10
      opaque LSA.";
    reference "RFC7684";
  }

  identity OSPF_TE_LSA_TLV_TYPE {
    description
      "This identity is the base used for the type field of TLVs that are
      included within the Traffic Engineering Opaque LSA.";
  }

  identity TE_ROUTER_ADDRESS {
    base "OSPF_TE_LSA_TLV_TYPE";
    description
      "A stable IP address of the advertising router that is always reachable
      if the node has connectivity.";
  }

  identity TE_LINK {
    base "OSPF_TE_LSA_TLV_TYPE";
    description
      "A single link within a traffic engineering topology. A set of sub-TLVs
      are carried within this attribute to indicate traffic engineering
      characteristics of the link.";
  }

  identity TE_ROUTER_IPV6_ADDRESS {
    base "OSPF_TE_LSA_TLV_TYPE";
    description
      "A stable IPv6 address of the advertising router that is always
      reachable if the node has connectivity. This TLV is used only with
      OSPFv3";
    reference "RFC5329";
  }

  identity TE_LINK_LOCAL {
    base "OSPF_TE_LSA_TLV_TYPE";
    description
      "Attributes associated with the local link by the system.";
    reference "RFC4203";
  }

  identity TE_NODE_ATTRIBUTE {
    base "OSPF_TE_LSA_TLV_TYPE";
    description
      "Attributes associted with the local system";
    reference "RFC5786";
  }

  identity TE_OPTICAL_NODE_PROPERTY {
    base "OSPF_TE_LSA_TLV_TYPE";
    description
      "Attributes associated with the local optical node. A set of sub-TLVs
      are carried within this TLV which are used within the GMPLS control
      plane when using OSPF";
  }

  identity OSPF_TE_LINK_TLV_TYPE {
    description
      "This identity is the based used for the type field for sub-TLVs of the
      Link TLV of the OSPF Traffic Engineering Opaque LSA";
  }

  identity TE_LINK_TYPE {
    base "OSPF_TE_LINK_TLV_TYPE";
    description
      "The OSPF-TE Link Type sub-TLV appears exactly once per OSPF-TE Link
      and describes the type of the link";
  }

  identity TE_LINK_ID {
    base "OSPF_TE_LINK_TLV_TYPE";
    description
      "The OSPF-TE Link ID sub-TLV appears exactly once per OSPF-TE link and
      identifies the remote end of the link.";
  }

  identity TE_LINK_LOCAL_IP {
    base "OSPF_TE_LINK_TLV_TYPE";
    description
      "The OSPF-TE Local IP specifies a list of the interface addresses of the
      local system corresponding to the traffic engineering link.";
  }

  identity TE_LINK_REMOTE_IP {
    base "OSPF_TE_LINK_TLV_TYPE";
    description
      "The OSPF-TE Remote IP specifies a list of IP addresses of the remote
      neighbors associated with the traffic engineering link.";
  }

  identity TE_LINK_METRIC {
    base "OSPF_TE_LINK_TLV_TYPE";
    description
      "The OSPF-TE Metric specifies the link metric for traffic engineering
      purposes";
  }

  identity TE_LINK_MAXIMUM_BANDWIDTH {
    base "OSPF_TE_LINK_TLV_TYPE";
    description
      "The OSPF-TE Maximum Bandwidth specifies the maximum bandwidth of the
      link that it is associated with.";
  }

  identity TE_LINK_MAXIMUM_RESERVABLE_BANDWIDTH {
    base "OSPF_TE_LINK_TLV_TYPE";
    description
      "The OSPF-TE Maximum Reservable Bandwidth specifies the maximum
      bandwidth that may be reserved on the link in bytes per second";
  }

  identity TE_LINK_UNRESERVED_BANDWIDTH {
    base "OSPF_TE_LINK_TLV_TYPE";
    description
      "The OSPF-TE unreserved bandwidth indicates the amount of bandwidth
      at each priority level that is currently not reserved";
  }

  identity TE_LINK_ADMIN_GROUP {
    base "OSPF_TE_LINK_TLV_TYPE";
    description
      "The OSPF-TE administrative group indicates the administrative group
      that the is assigned to the interface";
  }

  identity TE_NODE_ATTRIBUTE_TLV_TYPE {
    description
      "This identity forms the base for sub-TLVs of the Node Attribute TLV
      of the Traffic Engineering LSA";
  }

  identity NODE_IPV4_LOCAL_ADDRESS {
    base "TE_NODE_ATTRIBUTE_TLV_TYPE";
    description
      "The Node Attribute Sub-TLV contains a list of the IPv4 addresses of
      the local system";
  }

  identity NODE_IPV6_LOCAL_ADDRESS {
    base "TE_NODE_ATTRIBUTE_TLV_TYPE";
    description
      "The Node Attribute Sub-TLV contains a list of the IPv6 addresses of
      the local system";
  }

  identity GRACE_LSA_TLV_TYPES {
    description
      "This identity is used as the base for TLVs within the Grace LSA";
  }

  identity GRACE_PERIOD {
    base "GRACE_LSA_TLV_TYPES";
    description
      "This sub-TLV describes the period for which adjacencies should be
      maintained with the restarting system";
  }

  identity GRACE_RESTART_REASON {
    base "GRACE_LSA_TLV_TYPES";
    description
      "This sub-TLV describes the reason for the OSPF restart of the system
      that is restarting";
  }

  identity GRACE_IP_INTERFACE_ADDRESS {
    base "GRACE_LSA_TLV_TYPES";
    description
      "This sub-TLV specifies the restarting system's IP address on the
      interface via which it is advertising the Grace LSA";
  }

  identity RI_LSA_TLV_TYPES {
    description
      "This identity is used as the base for the TLVs within the Router
      Information LSA";
    reference "RFC7770";
  }

  identity RI_INFORMATIONAL_CAPABILITIES {
    base "RI_LSA_TLV_TYPES";
    description
      "Informational capabilities of the advertising system";
    reference "RFC7770";
  }

  identity RI_FUNCTIONAL_CAPABILITIES {
    base "RI_LSA_TLV_TYPES";
    description
      "Functional capabilities of the advertising system";
    reference "RFC7770";
  }

  identity RI_NODE_ADMIN_TAG {
    base "RI_LSA_TLV_TYPES";
    description
      "Operator-defined administrative tags associated with the advertising
      system";
    reference "RFC7777";
  }

  identity RI_SR_SID_LABEL_RANGE {
    base "RI_LSA_TLV_TYPES";
    description
      "SID or Label ranges for use with segment routing when forwarding to
      the advertising system";
    reference "draft-ietf-ospf-segment-routing-extensions";
  }

  identity RI_SR_ALGORITHM {
    base "RI_LSA_TLV_TYPES";
    description
      "The algorithms that are supported for segment routing by the
      advertising system";
    reference "draft-ietf-ospf-segment-routing-extensions";
  }

  // will be shared with IS-IS
  identity SR_ALGORITHM {
    description
      "This identity is used as a base for the algorithms that can be
      supported for segment routing and are advertised by a system in the RI
      LSA";
  }

  identity SPF {
    base "SR_ALGORITHM";
    description
      "The standard shortest path algorithm based on link metric,
      as used by the OSPF protocol";
  }

  identity STRICT_SPF {
    base "SR_ALGORITHM";
    description
      "The standard shortest path algorithm based on link metric, with the
      requirement that all nodes along the path honor the SPF decision. That
      is to say that the SPF decision cannot be altered by local policy at
      the node";
  }

  identity OSPF_RI_SR_SID_LABEL_TLV_TYPES {
    description
      "This identity is used as a base for the sub-TLVs of the Segment
      Routing SID/Label Range TLV";
  }

  identity SR_SID_LABEL_TLV {
    base "OSPF_RI_SR_SID_LABEL_TLV_TYPES";
    description
      "A range of SID/Label values used by the local system";
    reference "draft-ietf-ospf-segment-routing-extensions";
  }

  identity OSPFV2_ROUTER_LINK_TYPE {
    description
      "OSPFv2 Router Link Types as per the IANA registry defined in
      RFC2740";
  }

  identity POINT_TO_POINT_LINK {
    base "OSPFV2_ROUTER_LINK_TYPE";
    description
      "The link is a point-to-point connection to another router";
  }

  identity TRANSIT_NETWORK_LINK {
    base "OSPFV2_ROUTER_LINK_TYPE";
    description
      "The link is a connection to a transit network";
  }

  identity STUB_NETWORK_LINK {
    base "OSPFV2_ROUTER_LINK_TYPE";
    description
      "The link is a connection to a stub network";
  }

  identity VIRTUAL_LINK {
    base "OSPFV2_ROUTER_LINK_TYPE";
    description
      "The link is a virtual connection to another router";
  }

  identity OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE {
    description
      "Sub-TLVs of the OSPFv2 Extended Prefix LSA as defined by
      RFC7684";
  }

  identity EXTENDED_PREFIX_RANGE {
    base "OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE";
    description
      "The attributes being described relate to a range of prefixes";
  }

  identity PREFIX_SID {
    base "OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE";
    description
      "The TLV describes a Segment Routing Prefix Segment Identifier
      associated with a prefix";
  }

  identity SID_LABEL_BINDING {
    base "OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE";
    description
      "The TLV describes a binding of a SID to a path to the prefix,
      which may have associated path characteristics";
  }

  identity OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE {
    description
      "Sub-TLV types carried in the SID/Label Binding Sub-TLV of
      the Extended Prefix Sub-TLV";
  }

  identity SID_MPLS_LABEL_BINDING {
    base "OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE";
    description
      "This sub-TLV indicates a binding between an SR SID and an
      MPLS label and must be present in the sub-TLV";
  }

  identity ERO_METRIC {
    base "OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE";
    description
      "This sub-TLV indicates the cost of the ERO path being
      advertised in the SID/Label TLV";
  }

  identity ERO_PATH {
    base "OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE";
    description
      "This sub-TLV indicates the path associated with an ERO
      being advertised in the SID/Label TLV";
  }

  identity OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE {
    description
      "The types of segment included within an ERO Path described
      within the SID/Label binding sub-TLV";
  }

  identity IPV4_SEGMENT {
    base "OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE";
    description
      "The segment is specified as an IPv4 address";
  }

  identity UNNUMBERED_INTERFACE_SEGMENT {
    base "OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE";
    description
      "The segment is specified as an unnumbered interface of
      a remote system";
  }

  identity OSPFV2_EXTENDED_LINK_SUBTLV_TYPE {
    description
      "Sub-TLVs of the Extended Link TLV for OSPFv2";
  }

  identity ADJACENCY_SID {
    base "OSPFV2_EXTENDED_LINK_SUBTLV_TYPE";
    description
      "The extended link sub-TLV indicates an Adjacency SID";
  }

  identity MAX_METRIC_TRIGGER {
    description
      "Triggers which cause the maximum metric to be set for
      entities advertised in OSPF";
  }

  identity MAX_METRIC_ON_SYSTEM_BOOT {
    base "MAX_METRIC_TRIGGER";
    description
      "Set the maximum metric when the system boots.";
  }

  identity MAX_METRIC_INCLUDE {
    description
      "Entities that may optionally be included when advertising
      the maximum metric.";
  }

  identity MAX_METRIC_INCLUDE_STUB {
    base "MAX_METRIC_INCLUDE";
    description
      "Include stub networks when advertising the maximum metric.";
  }

  identity MAX_METRIC_INCLUDE_TYPE2_EXTERNAL {
    base "MAX_METRIC_INCLUDE";
    description
      "Include OSPF Type 2 external routes when advertising
      the maximum metric.";
  }
}