X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflow-protocol-api%2Fsrc%2Fmain%2Fyang%2Fopenflow-action.yang;h=4655d15a76a03efc81eff00b8ec699d3db2ce9bf;hb=5f5622e79402f70a944fa93fd7ee2d84d1776b08;hp=2b244ac98c4fcecf1fef6adbf13e4f13aa63fdcc;hpb=84ceefc03687a6864eb70ac434fd839302aafe10;p=openflowjava.git diff --git a/openflow-protocol-api/src/main/yang/openflow-action.yang b/openflow-protocol-api/src/main/yang/openflow-action.yang index 2b244ac9..4655d15a 100644 --- a/openflow-protocol-api/src/main/yang/openflow-action.yang +++ b/openflow-protocol-api/src/main/yang/openflow-action.yang @@ -1,94 +1,208 @@ -module openflow-action { +/* + * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + + module openflow-action { namespace "urn:opendaylight:openflow:common:action"; prefix "ofaction"; + import ietf-inet-types {prefix inet;} + import ietf-yang-types {prefix yang;} + import openflow-types { prefix oft; } + import openflow-extensible-match { prefix oxm;} - revision "2013-07-31" { + revision "2015-02-03" { description "OpenFlow 1.3 - action model"; } - identity output { - description " Output to switch port. "; - base oft:action; - } - identity copy_ttl_out { - description " Copy TTL \"outwards\" -- from next-to-outermost to outermost "; - base oft:action; - } - identity copy_ttl_in { - description " Copy TTL \"inwards\" -- from outermost to next-to-outermost "; - base oft:action; - } - identity set_mpls_ttl { - description " MPLS TTL "; - base oft:action; - } - identity dec_mpls_ttl { - description " Decrement MPLS TTL "; - base oft:action; - } - identity push_vlan { - description " Push a new VLAN tag "; - base oft:action; - } - identity pop_vlan { - description " Pop the outer VLAN tag "; - base oft:action; - } - identity push_mpls { - description " Push a new MPLS tag "; - base oft:action; - } - identity pop_mpls { - description " Pop the outer MPLS tag "; - base oft:action; - } - identity set_queue { - description " Set queue id when outputting to a port "; - base oft:action; - } - identity group { - description " Apply group. "; - base oft:action; - } - identity set_nw_ttl { - description " IP TTL. "; - base oft:action; - } - identity dec_nw_ttl { - description " Decrement IP TTL. "; - base oft:action; - } - identity set_field { - description " Set a header field using OXM TLV format. "; - base oft:action; - } - identity push_pbb { - description " Push a new PBB service tag (I-TAG) "; - base oft:action; + identity experimenter-action-sub-type { + description "The base identity for vendor's actions."; } - identity pop_pbb { - description " Pop the outer PBB service tag (I-TAG) "; - base oft:action; - } - identity experimenter { - description ""; - base oft:action; + + container action-container { + uses action-grouping; } - container actions-container { - uses action-header; + grouping actions-grouping { + list action { + uses action-grouping; + } } - grouping action-header { - container action { - leaf type { - type identityref { - base oft:action; + 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; + } } } } } -} \ No newline at end of file +}