-
Notifications
You must be signed in to change notification settings - Fork 22
/
of-config1.1.yang
1091 lines (1056 loc) · 30 KB
/
of-config1.1.yang
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
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
module of-config1.1 {
namespace "urn:onf:of11:config:yang";
prefix of11-config;
import ietf-yang-types { prefix yang; }
import ietf-inet-types { prefix inet; }
organization "ONF Config Management Group";
contact "tbd";
description "tbd";
revision 2011-12-07 {
description "First Version";
reference "tbd";
}
/*****************************************************************
* Features
*****************************************************************/
/*****************************************************************
* Type definitions
*****************************************************************/
typedef openflow-version {
type enumeration {
enum "1.0";
enum "1.1";
enum "1.2";
}
description "This enumeration contains the all OpenFlow versions
released so far.";
}
typedef datapath-id-type {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){7}';
}
description "The datapath-id type represents an OpenFlow
datapath identifier.";
}
typedef tenth-of-a-percent {
type uint16 {
range "0..1000";
}
units "1/10 of a percent";
description "This type defines a value in tenth of a percent.";
}
typedef up-down-state-type {
type enumeration {
enum up;
enum down;
}
description "Type to specify state information for a port or a
connection.";
}
typedef rate-type {
type enumeration {
enum 10Mb-HD;
enum 10Mb-FD;
enum 100Mb-HD;
enum 100Mb-FD;
enum 1Gb-HD;
enum 1Gb-FD;
enum 10Gb;
enum 40Gb;
enum 100Gb;
enum 1Tb;
enum other;
}
description "Type to specify the rate of a port including the
duplex transmission feature. Possible rates are 10Mb, 100Mb,
1Gb, 10Gb, 40Gb, 100Gb, 1Tb or other. Rates of 10Mb, 100Mb and
1Gb can support half or full duplex transmission.";
}
typedef action-type {
type enumeration {
enum output;
enum acopy-ttl-out;
enum copy-ttl-in;
enum set-mpls-ttl;
enum dec-mpls-ttl;
enum push-vlan;
enum pop-vlan;
enum push-mpls;
enum pop-mpls;
enum set-queue;
enum group;
enum set-nw-ttl;
enum dec-nw-ttl;
enum set-field;
}
description "The types of actions defined in OpenFlow Switch
Specification version 1.2.";
}
typedef instruction-type {
type enumeration {
enum apply-actions;
enum clear-actions;
enum write-actions;
enum write-metadata;
enum goto-table;
}
description "The types of instructions defined in OpenFlow Switch
Specification version 1.2.";
}
typedef match-field-type {
type enumeration {
enum input-port;
enum physical-input-port;
enum metadata;
enum ethernet-dest;
enum ethernet-src;
enum ethernet-frame-type;
enum vlan-id;
enum vlan-priority;
enum ip-dscp;
enum ip-ecn;
enum ip-protocol;
enum ipv4-src;
enum ipv4-dest;
enum tcp-src;
enum tcp-dest;
enum udp-src;
enum udp-dest;
enum sctp-src;
enum sctp-dest;
enum icmpv4-type;
enum icmpv4-code;
enum arp-op;
enum arp-src-ip-address;
enum arp-target-ip-address;
enum arp-src-hardware-address;
enum arp-target-hardware-address;
enum ipv6-src;
enum ipv6-dest;
enum ipv6-flow-label;
enum icmpv6-type;
enum icmpv6-code;
enum ipv6-nd-target;
enum ipv6-nd-source-link-layer;
enum ipv6-nd-target-link-layer;
enum mpls-label;
enum mpls-tc;
}
description "The types of match field defined in OpenFlow Switch
Specification version 1.2.";
}
typedef hex-binary {
type binary;
description "hex binary encoded string";
reference "http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/datatypes.html#hexBinary";
}
/*****************************************************************
* Groupings
*****************************************************************/
grouping openflow-configuration-point-grouping {
description "Representation of an OpenFlow Configuration Point.";
leaf id {
type inet:uri;
description "An identifier that identifies a Configuration
Point of the OpenFlow Capable Switch.";
}
leaf uri {
type inet:uri;
description "A locator of the Configuration Point. This element
MAY contain a locator of the Configuration Point including,
for example, anIP address and a port number.";
}
leaf protocol {
type enumeration {
enum "ssh";
enum "soap";
enum "tls";
enum "beep";
}
default "ssh";
description "The transport protocol that the Configuration
Point uses when communicating via NETCONF with the OpenFlow
Capable Switch.";
reference "The mappings of NETCONF to different transport
protocols are defined in RFC 6242 for SSH, RFC 4743 for SOAP,
RFC 4744 for BEEP, and RFC 5539 for TLS";
}
}
grouping openflow-logical-switch-grouping {
description "This grouping specifies all properties of an
OpenFlow Logical Switch.";
leaf id {
type inet:uri;
mandatory true;
description "An unique but locally arbitrary identifier that
identifies a Logical Switch within a Capable Switch and is
persistent across reboots of the system.";
}
container capabilities {
description "This container specifies all capability items of
an OpenFlow Logical Switch.";
uses openflow-logical-switch-capabilities-grouping;
}
leaf datapath-id {
type datapath-id-type;
mandatory true;
description "The datapath identifier of the Logical Switch that
uniquely identifies this Logical Switch in the controller.";
}
leaf enabled {
type boolean;
mandatory true;
description "Specifies if the Logical Switch is enabled.";
}
container controllers {
description "The list of controllers for this Logical switch.";
list controller {
key "id";
unique "id";
description "The list of controllers that are assigned to the
OpenFlow Logical Switch.";
uses openflow-controller-grouping;
}
}
container resources {
description "The following lists reference to all resources of
the OpenFlow Capable Switch that the OpenFlow Logical Switch
has exclusive access to.";
leaf-list port {
type leafref {
path "/capable-switch/resources/port/resource-id";
}
description "The list references to all port resources of the
OpenFlow Capable Switch that the OpenFlow Logical Switch
has exclusive access to.";
}
leaf-list queue {
type leafref {
path "/capable-switch/resources/queue/resource-id";
}
description "The list references to all queue resources of
the OpenFlow Capable Switch that the OpenFlow Logical
Switch has exclusive access to.";
}
leaf certificate {
type leafref {
path "/capable-switch/resources/owned-certificate/resource-id";
}
description "The reference to the owned certificate in
the OpenFlow Capable Switch that the OpenFlow Logical
Switch used to identify itself.";
}
leaf-list flow-table {
type leafref {
path "/capable-switch/resources/flow-table/resource-id";
}
description "The list references to all flow table resources
of the OpenFlow Capable Switch that the OpenFlow Logical
Switch has exclusive access to.";
}
}
}
grouping openflow-logical-switch-capabilities-grouping {
description "This grouping specifies all properties of an
OpenFlow logical switch's capabilities.";
leaf max-buffered-packets {
type uint32;
description "The maximum number of packets the logical switch
can buffer when sending packets to the controller using
packet-in messages.";
}
leaf max-tables {
type uint8;
description "The number of flow tables supported by the logical
switch.";
}
leaf max-ports {
type uint32;
description "The number of flow tables supported by the logical
switch.";
}
leaf flow-statistics {
type boolean;
default false;
description "Specifies if the logical switch supports flow
statistics.";
}
leaf table-statistics {
type boolean;
default false;
description "Specifies if the logical switch supports table
statistics.";
}
leaf port-statistics {
type boolean;
default false;
description "Specifies if the logical switch supports port
statistics.";
}
leaf group-statistics {
type boolean;
default false;
description "Specifies if the logical switch supports group
statistics.";
}
leaf queue-statistics {
type boolean;
default false;
description "Specifies if the logical switch supports queue
statistics.";
}
leaf reassemble-ip-fragments {
type boolean;
default false;
description "Specifies if the logical switch supports
reassemble IP fragments.";
}
leaf block-looping-ports {
type boolean;
default false;
description "'true' indicates that a switch protocol outside of
OpenFlow, such as 802.1D Spanning Tree, will detect topology
loops and block ports to prevent packet loops.";
}
container reserved-port-types {
description "Specify generic forwarding actions such as sending
to the controller, flooding, or forwarding using non-OpenFlow
methods, such as 'normal' switch processing.";
reference "The types of reserved ports are defined in OpenFlow
Switch Specification version 1.2.";
leaf-list type {
type enumeration {
enum all;
enum controller;
enum table;
enum inport;
enum any;
enum normal;
enum flood;
}
}
}
container group-types {
description "Specify the group types supported by the logical
switch.";
reference "The types of groups are defined in OpenFlow Switch
Specification version 1.2.";
leaf-list type {
type enumeration {
enum all;
enum select;
enum indirect;
enum fast-failover;
}
}
}
container group-capabilities {
description "Specify the group capabilities supported by the
logical switch.";
reference "The types of group capability are defined in
OpenFlow Switch Specification version 1.2.";
leaf-list capability {
type enumeration {
enum select-weight;
enum select-liveness;
enum chaining;
enum chaining-check;
}
}
}
container action-types {
description "Specify the action types supported by the logical
switch.";
leaf-list type {
type action-type;
}
}
container instruction-types {
description "Specify the instruction types supported by the
logical switch.";
leaf-list type {
type instruction-type;
}
}
}
grouping openflow-controller-grouping {
description "This grouping specifies all properties of an
OpenFlow Logical Switch Controller.";
leaf id {
type inet:uri;
mandatory true;
description "An unique but locally arbitrary identifier that
identifies a controller within a OpenFlow Logical Switch and
is persistent across reboots of the system.";
}
leaf role {
type enumeration {
enum master;
enum slave;
enum equal;
}
default equal;
description "The predefined role of the controller.";
}
leaf ip-address {
type inet:ip-address;
mandatory true;
description "The IP address of the controller to connect to.";
}
leaf port {
type inet:port-number;
default 6633;
description "The port number at the controller to connect to.";
}
leaf local-ip-address {
type inet:ip-address;
description "This specifies the source IP for packets sent to
this controller and overrides the default IP used.";
}
leaf local-port {
type inet:port-number;
default 0;
description "The port number the switch listens on. If 0 the
port is chosen dynamically.";
}
leaf protocol {
type enumeration {
enum "tcp";
enum "tls";
}
default "tcp";
description "The protocol used for connecting to the
controller.";
}
container state {
description "This container holds connection state information
that indicate if the Logical Switch is connected, what
versions are supported, and which one is used.";
leaf connection-state {
type up-down-state-type;
description "This object indicates if the Logical Switch is
connected to the controller.";
}
leaf current-version {
type openflow-version;
description "This object contains the current OpenFlow
version used between Logical Switch and Controller.";
}
leaf-list supported-versions {
type openflow-version;
description "This list of objects contains all the OpenFlow
versions supported the controller.";
}
}
}
grouping openflow-port-resource-grouping {
description "This grouping specifies all properties of a port
resource.";
leaf resource-id {
type inet:uri;
description "A unique but locally arbitrary identifier that
identifies a port and is persistent across reboots of the
system.";
}
leaf number {
type uint64;
config false;
mandatory true;
description "An unique but locally arbitrary number that
identifies a port and is persistent across reboots of the
system.";
}
leaf name {
type string {
length "1..16";
}
config false;
description "Textual port name to ease identification of the port
at the switch.";
}
leaf current-rate {
when "../features/current/rate='other'" {
description "This element is only allowed if the element rate
of the current features has value 'other'.";
}
type uint32;
units "kbit/s";
config false;
description "The current rate in kilobit/second if the current
rate selector has value 'other'.";
}
leaf max-rate {
when "../features/current/rate='other'" {
description "This element is only allowed if the element rate
of the current features has value 'other'.";
}
type uint32;
units "kbit/s";
config false;
description "The maximum rate in kilobit/second if the current
rate selector has value 'other'.";
}
container configuration {
leaf admin-state {
type up-down-state-type;
default up;
description "The administrative state of the port.";
}
leaf no-receive {
type boolean;
default false;
description "Specifies if receiving packets is not enabled on
the port.";
}
leaf no-forward {
type boolean;
default false;
description "Specifies if forwarding packets is not enabled
on that port.";
}
leaf no-packet-in {
type boolean;
default false;
description "Specifies if sending packet-in messages for
coming packets is not enabled on that port.";
}
}
container state {
config false;
leaf oper-state {
type up-down-state-type;
mandatory true;
description "The operational state of the port.";
}
leaf blocked {
type boolean;
mandatory true;
description "tbd";
}
leaf live {
type boolean;
mandatory true;
description "tbd";
}
}
container features {
container current {
uses openflow-port-current-features-grouping;
config false;
description "The features (rates, duplex, etc.) of the port
that are currently in use.";
}
container advertised {
uses openflow-port-other-features-grouping;
description "The features (rates, duplex, etc.) of the port
that are advertised to the peer port.";
}
container supported {
uses openflow-port-other-features-grouping;
config false;
description "The features (rates, duplex, etc.) of the port
that are supported on the port.";
}
container advertised-peer {
uses openflow-port-other-features-grouping;
config false;
description "The features (rates, duplex, etc.) that are
currently advertised by the peer port.";
}
}
grouping openflow-port-base-tunnel-grouping {
description "A grouping with information included in every
supported tunnel type.";
choice local-endpoint-address {
leaf local-endpoint-ipv4-adress {
type inet:ipv4-address;
description "The IPv4 address of the local tunnel
endpoint.";
}
leaf local-endpoint-ipv6-adress {
type inet:ipv6-address;
description "The IPv6 address of the local tunnel
endpoint.";
}
leaf local-endpoint-mac-adress {
type yang:mac-address;
description "The MAC address of the local tunnel endpoint.";
}
}
choice remote-endpoint-address {
leaf remote-endpoint-ipv4-adress {
type inet:ipv4-address;
description "The IPv4 address of the remote tunnel
endpoint.";
}
leaf remote-endpoint-ipv6-adress {
type inet:ipv6-address;
description "The IPv6 address of the remote tunnel
endpoint.";
}
leaf remote-endpoint-mac-adress {
type yang:mac-address;
description "The MAC address of the remote tunnel endpoint.";
}
}
}
choice tunnel-type {
container tunnel {
description "Features of a basic IP-in-GRE tunnel. Tunnels
are modeld as logical ports.";
uses openflow-port-base-tunnel-grouping;
}
container ipgre-tunnel {
description "Features of a IP-in-GRE tunnel with key,
checksum, and sequence number information.";
uses openflow-port-base-tunnel-grouping;
leaf checksum-present {
type boolean;
default true;
description "Indicates presence of the GRE checksum.";
}
leaf key-present {
type boolean;
default true;
description "Indicates presence of the GRE key.";
}
leaf key {
type uint32;
description "The (optional) key of the GRE tunnel.";
}
leaf sequence-number-present {
type boolean;
default false;
description "Indicates presence of the GRE sequence
number.";
}
}
container vxlan-tunnel {
description "Features of a VxLAN tunnel.";
uses openflow-port-base-tunnel-grouping;
leaf vni-valid {
type boolean;
default true;
description "Indicates how the corresponding flag should be
set in packets sent on the tunnel";
}
leaf vni {
type uint32;
description "Virtual network identifier assigned to all
packets sent on the tunnel";
}
leaf vni-multicast-group {
type inet:ip-address;
description "If IP multicast is used to support broadcast
on the tunnel this specifies the corresponding multicast
IP address";
}
leaf udp-source-port {
type inet:port-number;
description "Specifies the outer UDP source port number.";
}
leaf udp-dest-port {
type inet:port-number;
description "Specifies the outer UDP destination port
number, generally the well-known port number for VxLAN";
}
leaf udp-checksum {
type boolean;
default false;
description "Boolean flag to indicate whether or not the
outer UDP checksum should be set";
}
}
container nvgre-tunnel {
description "Features of a NVGRE tunnel.";
uses openflow-port-base-tunnel-grouping;
leaf tni {
type uint32;
description "Specifies the tenant network identifier
assigned to all packets sent on the tunnel";
}
leaf tni-resv {
type uint32;
description "Used to set the reserved user-defined bits of
the GRE key field";
}
leaf tni-multicast-group {
type inet:ip-address;
description "If IP multicast is used to support broadcast
on the tunnel this specifies the corresponding multicast
IP address";
}
}
}
}
grouping openflow-queue-resource-grouping {
description "This grouping specifies all properties of a queue
resource.";
leaf resource-id {
type inet:uri;
description "An unique but locally arbitrary identifier that
identifies a queue and is persistent across reboots of the
system.";
}
leaf id {
type uint64;
mandatory true;
description "An unique but locally arbitrary number that
identifies a queue and is persistent across reboots of the
system.";
}
leaf port {
type leafref {
path "/capable-switch/resources/port/resource-id";
}
description "Reference to port resources in the Capable
Switch.";
}
container properties {
description "The queue properties currently configured.";
leaf min-rate {
type tenth-of-a-percent;
description "The minimal rate that is reserved for this queue
in 1/10 of a percent of the actual rate. If not present a
min-rate is not set.";
}
leaf max-rate {
type tenth-of-a-percent;
description "The maximum rate that is reserved for this queue
in 1/10 of a percent of the actual rate. If not present the
max-rate is not set.";
}
leaf-list experimenter {
type uint32;
description "A list of experimenter identifiers of queue
properties used.";
}
}
}
grouping openflow-port-current-features-grouping {
description "The current features of a port.";
leaf rate {
type rate-type;
mandatory true;
description "The transmission rate that is currently used.";
}
leaf auto-negotiate {
type boolean;
mandatory true;
description "Specifies if auto-negotiation of transmission
parameters was used for the port.";
}
leaf medium {
type enumeration {
enum copper;
enum fiber;
}
mandatory true;
description "The transmission medium used by the port.";
}
leaf pause {
type enumeration {
enum unsupported;
enum symmetric;
enum asymmetric;
}
mandatory true;
description "Specifies if pausing of transmission is supported
at all and if yes if it is asymmetric or symmetric.";
}
}
grouping openflow-port-other-features-grouping {
description "The features of a port that are supported or
advertised.";
leaf-list rate {
type rate-type;
min-elements 1;
description "The transmission rate that is supported or
advertised. Multiple transmissions rates are allowed.";
}
leaf auto-negotiate {
type boolean;
mandatory true;
description "Specifies if auto-negotiation of transmission
parameters is enabled for the port.";
}
leaf-list medium {
type enumeration {
enum copper;
enum fiber;
}
min-elements 1;
description "The transmission medium used by the port. Multiple
media are allowed.";
}
leaf pause {
type enumeration {
enum unsupported;
enum symmetric;
enum asymmetric;
}
description "Specifies if pausing of transmission is supported
at all and if yes if it is asymmetric or symmetric.";
}
}
grouping openflow-external-certificate-grouping {
description "This grouping specifies a certificate that can be
used by an OpenFlow Logical Switch for authenticating a
controller when a TLS connection is established.";
leaf resource-id {
type inet:uri;
description "A unique but locally arbitrary identifier that
identifies an external certificate and is persistent across
reboots of the system.";
}
leaf certificate {
type string;
mandatory true;
description "An X.509 certificate in DER format base64
encoded.";
}
}
grouping openflow-owned-certificate-grouping {
description "This grouping specifies a certificate and a private
key. It can be used by an OpenFlow Logical Switch for
authenticating itself to a controller when a TLS connection is
established.";
leaf resource-id {
type inet:uri;
description "A unique but locally arbitrary identifier that
identifies an external certificate and is persistent across
reboots of the system.";
}
leaf certificate {
type string;
mandatory true;
description "An X.509 certificate in DER format base64
encoded.";
}
container private-key {
uses KeyValueType;
description "tbd.";
}
}
grouping KeyValueType {
choice key-type {
mandatory true;
case dsa {
container DSAKeyValue {
uses DSAKeyValueType;
}
}
case rsa {
container RSAKeyValue {
uses RSAKeyValueType;
}
}
}
}
grouping DSAKeyValueType {
leaf P {
when "count(../Q) != 0";
type binary;
mandatory true;
}
leaf Q {
when "count(../P) != 0";
type binary;
mandatory true;
}
leaf J {
type binary;
mandatory true;
}
leaf G {
type binary;
mandatory true;
}
leaf Y {
type binary;
mandatory true;
}
leaf Seed {
when "count(../PgenCounter) != 0";
type binary;
mandatory true;
}
leaf PgenCounter {
when "count(../Seed) != 0";
type binary;
mandatory true;
}
}
grouping RSAKeyValueType {
leaf Modulus {
type binary;
mandatory true;
}
leaf Exponent {
type binary;
mandatory true;
}
}
grouping openflow-flow-table-resource-grouping {
description "Representation of an OpenFlow Flow Table Resource.";
leaf resource-id {
type inet:uri;
description "An unique but locally arbitrary identifier that
identifies a flow table and is persistent across reboots of
the system.";
}
leaf max-entries {
type uint8;
description "The maximum number of flow entries supported by
the flow table.";
}
container next-tables {
leaf-list table-id {
type inet:uri;
}
description "The array of flow table ids that can be directly
reached from the present table using 'goto-table'
instruction.";
}
container instructions {
leaf-list type {
type instruction-type;
}
description "The instruction types supported by the flow
table.";
}
container matches {
leaf-list type {
type match-field-type;
}
description "The match types supported by the flow table.";
}
container write-actions {
leaf-list type {
type action-type;
}
description "The write action types supported by the flow
table.";
}
container apply-actions {
leaf-list type {
type action-type;
}
description "The apply action types supported by the flow
table.";
}
container write-setfields {
leaf-list type {
type match-field-type;
}
description "'set-field' action types supported by the table
using 'write-actions' instruction.";
}
container apply-setfields {
leaf-list type {
type match-field-type;
}
description "'set-field' action types supported by the table
using 'apply-actions' instruction.";
}
container wildcards {
leaf-list type {
type match-field-type;
}
description "The fields for which the table supports wildcarding.";
}
leaf metadata-match {
type hex-binary;
description "The bits of metadata the flow table can match.";
}
leaf metadata-write {
type hex-binary;
description "The bits of metadata the flow table can write.";