X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=openflowjava.git;a=blobdiff_plain;f=openflow-protocol-api%2Fsrc%2Fmain%2Fyang%2Fopenflow-approved-extensions.yang;fp=openflow-protocol-api%2Fsrc%2Fmain%2Fyang%2Fopenflow-approved-extensions.yang;h=17c89408bd2f17da07a1d7531af9a87bf135475a;hp=d4afa880003d51ecc3b168ead51b3872833a6488;hb=d17ee1296b9aeefa8d8c1dfa0ad52d9dac7feee9;hpb=b7aa041859f3b74f0951d57edc5e4a9662c214ab diff --git a/openflow-protocol-api/src/main/yang/openflow-approved-extensions.yang b/openflow-protocol-api/src/main/yang/openflow-approved-extensions.yang index d4afa880..17c89408 100644 --- a/openflow-protocol-api/src/main/yang/openflow-approved-extensions.yang +++ b/openflow-protocol-api/src/main/yang/openflow-approved-extensions.yang @@ -19,6 +19,77 @@ module openflow-approved-extensions { //ONF Approved OpenFlow Extensions + // ONF experimenter error codes + typedef onf-experimenter-error-code { + description "Error codes for experimenter error type."; + type enumeration { + enum ONFERR_ET_UNKNOWN { + description "Unspecified error."; + value 2300; + } + enum ONFERR_ET_EPERM { + description "Permissions error."; + value 2301; + } + enum ONFERR_ET_BAD_ID { + description "Bundle ID doesn’t exist."; + value 2302; + } + enum ONFERR_ET_BUNDLE_EXIST { + description "Bundle ID already exist."; + value 2303; + } + enum ONFERR_ET_BUNDLE_CLOSED { + description "Bundle ID is closed."; + value 2304; + } + enum ONFERR_ET_OUT_OF_BUNDLES { + description "Too many bundles IDs."; + value 2305; + } + enum ONFERR_ET_BAD_TYPE { + description "Unsupported or unknown message control type."; + value 2306; + } + enum ONFERR_ET_BAD_FLAGS { + description "Unsupported, unknown, or inconsistent flags."; + value 2307; + } + enum ONFERR_ET_MSG_BAD_LEN { + description "Length problem in included message."; + value 2308; + } + enum ONFERR_ET_MSG_BAD_XID { + description "Inconsistent or duplicate XID."; + value 2309; + } + enum ONFERR_ET_MSG_UNSUP { + description "Unsupported message in this bundle."; + value 2310; + } + enum ONFERR_ET_MSG_CONFLICT { + description "Unsupported message combination in this bundle."; + value 2311; + } + enum ONFERR_ET_MSG_TOO_MANY { + description "Can not handle this many messages in bundle."; + value 2312; + } + enum ONFERR_ET_MSG_FAILED { + description "One message in bundle failed."; + value 2313; + } + enum ONFERR_ET_TIMEOUT { + description "Bundle is taking too long."; + value 2314; + } + enum ONFERR_ET_BUNDLE_IN_PROGRESS { + description "Bundle is locking the resource."; + value 2315; + } + } + } + // Extension 109 - TCP FLAGS identity tcp_flags { base oxm:match-field; @@ -37,4 +108,124 @@ module openflow-approved-extensions { } } + // Extension 230 - Bundle Extension (experimenterID 0x4F4E4600) + typedef bundle-id { + description "Identify the bundle."; + type uint32; + } + + typedef bundle-control-type { + description "Bundle control message type."; + type enumeration { + enum ONF_BCT_OPEN_REQUEST { + value 0; + } + enum ONF_BCT_OPEN_REPLY { + value 1; + } + enum ONF_BCT_CLOSE_REQUEST { + value 2; + } + enum ONF_BCT_CLOSE_REPLY { + value 3; + } + enum ONF_BCT_COMMIT_REQUEST { + value 4; + } + enum ONF_BCT_COMMIT_REPLY { + value 5; + } + enum ONF_BCT_DISCARD_REQUEST { + value 6; + } + enum ONF_BCT_DISCARD_REPLY { + value 7; + } + } + } + + typedef bundle-flags { + description "Bundle configuration flags."; + type bits { + bit atomic { + description "Execute atomically."; + position 0; + } + bit ordered { + description "Execute in specified order."; + position 1; + } + } + } + + typedef bundle-property-type { + description "Bundle property types."; + type enumeration { + enum ONF_ET_BPT_EXPERIMENTER { + description "Experimenter property."; + value 65535; //0xFFFF + } + } + } + + grouping bundle-properties { + list bundle-property { + description "Bundle properties list."; + leaf type { + type bundle-property-type; + } + choice bundle-property-entry { + case bundle-experimenter-property { + leaf experimenter { + type oft:experimenter-id; + } + leaf exp-type { + type uint32; + } + choice bundle-experimenter-property-data { + // to be augmented by vendors + } + } + } + } + } + + augment "/ofproto:experimenter/ofproto:input/ofproto:experimenter-data-of-choice" { + case bundle-control { + description "ONF_ET_BUNDLE_CONTROL message in OpenFlow Switch Extension 230."; + leaf bundle-id { + type bundle-id; + } + leaf type { + type bundle-control-type; + } + leaf flags { + type bundle-flags; + } + uses bundle-properties; + } + case bundle-add-message { + description "ONF_ET_BUNDLE_ADD_MESSAGE in OpenFlow Switch Extension 230."; + leaf bundle-id { + type bundle-id; + } + leaf flags { + type bundle-flags; + } + // Inner message + choice message { + description "Message added to the bundle."; + case flow-mod-case { + uses ofproto:flow-mod; + } + case group-mod-case { + uses ofproto:group-mod; + } + case port-mod-case { + uses ofproto:port-mod; + } + } + uses bundle-properties; + } + } } \ No newline at end of file