- }
- }
-
- grouping group {
- leaf group {
- type oft:group-id; // define action group-id type;
- }
- }
-
- grouping set-queue {
- leaf queue {
- type oft:queue-id;
- }
- }
-
- grouping set-mpls-ttl {
- leaf mpls_ttl {
- type uint8;
- }
- }
-
- grouping set-nw-ttl {
- leaf nw_ttl {
- type uint8;
- }
- }
-
- grouping push-pbb {
- leaf ethertype {
- type oft:ether-type;
- }
- }
-
- grouping push-mpls {
- leaf ethertype {
- type oft:ether-type;
- }
- }
-
- grouping push-vlan {
- leaf ethertype {
- type oft:ether-type;
- }
- }
-
- grouping pop-mpls {
- leaf ethertype {
- type oft:ether-type;
- }
- }
-
- grouping set-field {
- container field {
- // TODO: figure definition
- }
- }
- */
-
- container actions-container {
- uses action-header;
- }
-
- grouping action-header {
- container action {
- leaf type {
- type identityref {
- base oft:action;
+ case pop-vlan-case {
+ // empty action
+ }
+ case push-mpls-case {
+ container push-mpls-action {
+ leaf ethertype {
+ type oft:ether-type;
+ }
+ }
+ }
+ case pop-mpls-case {
+ container pop-mpls-action {
+ leaf ethertype {
+ type oft:ether-type;
+ }
+ }
+ }
+ case set-queue-case {
+ container set-queue-action {
+ leaf queue-id {
+ type uint32;
+ }
+ }
+ }
+ case group-case {
+ container group-action {
+ leaf group-id {
+ type uint32;
+ }
+ }
+ }
+ case set-nw-ttl-case {
+ container set-nw-ttl-action {
+ leaf nw-ttl {
+ type uint8;
+ }
+ }
+ }
+ case dec-nw-ttl-case {
+ // empty action
+ }
+ case set-field-case {
+ container set-field-action {
+ uses oxm:match-entries-grouping;
+ }
+ }
+ case push-pbb-case {
+ container push-pbb-action {
+ leaf ethertype {
+ type oft:ether-type;
+ }
+ }
+ }
+ case pop-pbb-case {
+ // empty action
+ }
+ // OF1.0 structures
+ case set-vlan-vid-case {
+ container set-vlan-vid-action {
+ leaf vlan-vid {
+ type uint16;
+ }
+ }
+ }
+ case set-vlan-pcp-case {
+ container set-vlan-pcp-action {
+ leaf vlan-pcp {
+ type uint8;
+ }
+ }
+ }
+ case strip-vlan-case {
+ // empty action
+ }
+ case set-dl-src-case {
+ container set-dl-src-action {
+ leaf dl-src-address {
+ type yang:mac-address;
+ }
+ }
+ }
+ case set-dl-dst-case {
+ container set-dl-dst-action {
+ leaf dl-dst-address {
+ type yang:mac-address;
+ }
+ }
+ }
+ case set-nw-src-case {
+ container set-nw-src-action {
+ leaf ip-address {
+ type inet:ipv4-address;
+ }
+ }
+ }
+ case set-nw-dst-case {
+ container set-nw-dst-action {
+ leaf ip-address {
+ type inet:ipv4-address;
+ }
+ }
+ }
+ case set-nw-tos-case {
+ container set-nw-tos-action {
+ leaf nw-tos {
+ type uint8;
+ }
+ }
+ }
+ case set-tp-src-case {
+ container set-tp-src-action {
+ leaf port {
+ type oft:port-number;
+ }
+ }
+ }
+ case set-tp-dst-case {
+ container set-tp-dst-action {
+ leaf port {
+ type oft:port-number;
+ }
+ }
+ }
+ case enqueue-case {
+ container enqueue-action {
+ leaf port {
+ type oft:port-number;
+ }
+ leaf queue-id {
+ type oft:queue-id;
+ }