-
- // OF1.0 structures
- identity set_vlan_vid {
- description "Set the 802.1q VLAN id (OF v1.0).";
- base oft:action-base;
- }
- identity set_vlan_pcp {
- description "Set the 802.1q priority (OF v1.0).";
- base oft:action-base;
- }
- identity strip_vlan {
- description "Strip the 802.1q header (OF v1.0).";
- base oft:action-base;
- }
- identity set_dl_src {
- description "Ethernet source address (OF v1.0).";
- base oft:action-base;
- }
- identity set_dl_dst {
- description "Ethernet destination address (OF v1.0).";
- base oft:action-base;
- }
- identity set_nw_src {
- description "IP source address (OF v1.0).";
- base oft:action-base;
- }
- identity set_nw_dst {
- description "IP destination address (OF v1.0).";
- base oft:action-base;
- }
- identity set_nw_tos {
- description "IP ToS (DSCP field, 6 bits) (OF v1.0).";
- base oft:action-base;
- }
- identity set_tp_src {
- description "TCP/UDP source port (OF v1.0).";
- base oft:action-base;
- }
- identity set_tp_dst {
- description "TCP/UDP destination port (OF v1.0).";
- base oft:action-base;
- }
- identity enqueue {
- description "Output to queue (OF v1.0).";
- base oft:action-base;
+
+ grouping action-grouping {
+ choice action-choice {
+ case output-action-case {
+ container output-action {
+ leaf port {
+ type oft:port-number;
+ }
+ leaf max-length {
+ type uint16;
+ }
+ }
+ }
+ case copy-ttl-out-case {
+ // empty action
+ }
+ case copy-ttl-in-case {
+ // empty action
+ }
+ case set-mpls-ttl-case {
+ container set-mpls-ttl-action {
+ leaf mpls-ttl {
+ type uint8;
+ }
+ }
+ }
+ case dec-mpls-ttl-case {
+ // empty action
+ }
+ case push-vlan-case {
+ container push-vlan-action {
+ leaf ethertype {
+ type oft:ether-type;
+ }
+ }
+ }
+ 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;
+ }
+ }
+ }
+ }