X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fofp-errors.h;h=593241dec11ae6a96d0f0ae346390a48894338d0;hb=f40869bdf6feca4d3ff7c59a1fb1f7ac101bc967;hp=cdeddc9b23de1a7d6207beef23a20c110550b621;hpb=130b77cd9451731b0dcca077ad61e026109d53b5;p=sliver-openvswitch.git diff --git a/lib/ofp-errors.h b/lib/ofp-errors.h index cdeddc9b2..593241dec 100644 --- a/lib/ofp-errors.h +++ b/lib/ofp-errors.h @@ -45,6 +45,19 @@ struct ofpbuf; #define OFPERR_OFS (1 << 30) +/* OpenFlow error codes. + * + * The comments below are parsed by the extract-ofp-errors program at build + * time and used to determine the mapping between "enum ofperr" constants and + * error type/code values used in the OpenFlow protocol: + * + * - The first part of each comment specifies OpenFlow type/code for each + * protocol that supports the error. + * + * - Additional text is a human-readable description of the meaning of each + * error, used to explain the error to the user. Any text enclosed in + * square brackets is omitted; this can be used to explain rationale for + * choice of error codes in the case where this is desirable. */ enum ofperr { /* Expected duplications. */ @@ -55,11 +68,8 @@ enum ofperr { /* ## OFPET_HELLO_FAILED ## */ /* ## ------------------ ## */ - /* OF1.0+(0). Hello protocol failed. */ - OFPERR_OFPET_HELLO_FAILED = OFPERR_OFS, - /* OF1.0+(0,0). No compatible version. */ - OFPERR_OFPHFC_INCOMPATIBLE, + OFPERR_OFPHFC_INCOMPATIBLE = OFPERR_OFS, /* OF1.0+(0,1). Permissions error. */ OFPERR_OFPHFC_EPERM, @@ -68,9 +78,6 @@ enum ofperr { /* ## OFPET_BAD_REQUEST ## */ /* ## ----------------- ## */ - /* OF1.0+(1). Request was not understood. */ - OFPERR_OFPET_BAD_REQUEST, - /* OF1.0+(1,0). ofp_header.version not supported. */ OFPERR_OFPBRC_BAD_VERSION, @@ -99,18 +106,27 @@ enum ofperr { /* OF1.0+(1,8). Specified buffer does not exist. */ OFPERR_OFPBRC_BUFFER_UNKNOWN, - /* OF1.1+(1,9). Specified table-id invalid or does not exist. */ + /* NX1.0(1,512), OF1.1+(1,9). Specified table-id invalid or does not exist. + * [ A non-standard error (1,512), formerly OFPERR_NXBRC_BAD_TABLE_ID, + * is used for OpenFlow 1.0 as there seems to be no appropriste error + * code defined the specification. ] */ OFPERR_OFPBRC_BAD_TABLE_ID, /* OF1.2+(1,10). Denied because controller is slave. */ OFPERR_OFPBRC_IS_SLAVE, - /* OF1.2+(1,11). Invalid port. */ + /* NX1.0(1,514), NX1.1(1,514), OF1.2+(1,11). Invalid port. + * [ A non-standard error (1,514), formerly + * OFPERR_NXBRC_BAD_IN_PORT is used for OpenFlow 1.0 and 1.1 as there + * seems to be no appropriste error code defined the specifications. ] */ OFPERR_OFPBRC_BAD_PORT, /* OF1.2+(1,12). Invalid packet in packet-out. */ OFPERR_OFPBRC_BAD_PACKET, + /* OF1.3+(1,13). Multipart request overflowed the assigned buffer. */ + OFPERR_OFPBRC_MULTIPART_BUFFER_OVERFLOW, + /* NX1.0+(1,256). Invalid NXM flow match. */ OFPERR_NXBRC_NXM_INVALID, @@ -118,12 +134,6 @@ enum ofperr { * nxm_hasmask or nxm_length or both, is invalid or not implemented. */ OFPERR_NXBRC_NXM_BAD_TYPE, - /* NX1.0+(1,512). A request specified a nonexistent table ID. */ - OFPERR_NXBRC_BAD_TABLE_ID, - - /* NX1.0+(1,514). The in_port in an ofp_packet_out request is invalid. */ - OFPERR_NXBRC_BAD_IN_PORT, - /* NX1.0+(1,515). Must-be-zero field had nonzero value. */ OFPERR_NXBRC_MUST_BE_ZERO, @@ -145,13 +155,19 @@ enum ofperr { * the id of any existing monitor. */ OFPERR_NXBRC_FM_BAD_ID, + /* NX1.0+(1,520). The 'event' in an NXST_FLOW_MONITOR reply does not + * specify one of the NXFME_ABBREV, NXFME_ADD, NXFME_DELETE, or + * NXFME_MODIFY. */ + OFPERR_NXBRC_FM_BAD_EVENT, + + /* NX1.0+(1,521). The error that occurred cannot be represented in this + * OpenFlow version. */ + OFPERR_NXBRC_UNENCODABLE_ERROR, + /* ## ---------------- ## */ /* ## OFPET_BAD_ACTION ## */ /* ## ---------------- ## */ - /* OF1.0+(2). Error in action description. */ - OFPERR_OFPET_BAD_ACTION, - /* OF1.0+(2,0). Unknown action type. */ OFPERR_OFPBAC_BAD_TYPE, @@ -208,9 +224,6 @@ enum ofperr { /* ## OFPET_BAD_INSTRUCTION ## */ /* ## --------------------- ## */ - /* OF1.1+(3). Error in instruction list. */ - OFPERR_OFPIT_BAD_INSTRUCTION, - /* OF1.1+(3,0). Unknown instruction. */ OFPERR_OFPBIC_UNKNOWN_INST, @@ -242,9 +255,6 @@ enum ofperr { /* ## OFPET_BAD_MATCH ## */ /* ## --------------- ## */ - /* OF1.1+(4). Error in match. */ - OFPERR_OFPET_BAD_MATCH, - /* OF1.1+(4,0). Unsupported match type specified by the match */ OFPERR_OFPBMC_BAD_TYPE, @@ -290,16 +300,10 @@ enum ofperr { /* ## OFPET_FLOW_MOD_FAILED ## */ /* ## --------------------- ## */ - /* OF1.0(3), OF1.1+(5). Problem modifying flow entry. */ - OFPERR_OFPET_FLOW_MOD_FAILED, - /* OF1.1+(5,0). Unspecified error. */ OFPERR_OFPFMFC_UNKNOWN, - /* OF1.0(3,0). Flow not added because of full tables. */ - OFPERR_OFPFMFC_ALL_TABLES_FULL, - - /* OF1.1+(5,1). Flow not added because table was full. */ + /* OF1.0(3,0), OF1.1+(5,1). Flow not added because of full table(s). */ OFPERR_OFPFMFC_TABLE_FULL, /* OF1.1+(5,2). Table does not exist */ @@ -341,9 +345,6 @@ enum ofperr { /* ## OFPET_GROUP_MOD_FAILED ## */ /* ## ---------------------- ## */ - /* OF1.1+(6). Problem modifying group entry. */ - OFPERR_OFPET_GROUP_MOD_FAILED, - /* OF1.1+(6,0). Group not added because a group ADD attempted to replace * an already-present group. */ OFPERR_OFPGMFC_GROUP_EXISTS, @@ -399,9 +400,6 @@ enum ofperr { /* ## OFPET_PORT_MOD_FAILED ## */ /* ## --------------------- ## */ - /* OF1.0(4), OF1.1+(7). OFPT_PORT_MOD failed. */ - OFPERR_OFPET_PORT_MOD_FAILED, - /* OF1.0(4,0), OF1.1+(7,0). Specified port does not exist. */ OFPERR_OFPPMFC_BAD_PORT, @@ -422,9 +420,6 @@ enum ofperr { /* ## OFPET_TABLE_MOD_FAILED ## */ /* ## ---------------------- ## */ - /* OF1.1+(8). Table mod request failed. */ - OFPERR_OFPET_TABLE_MOD_FAILED, - /* OF1.1+(8,0). Specified table does not exist. */ OFPERR_OFPTMFC_BAD_TABLE, @@ -438,9 +433,6 @@ enum ofperr { /* ## OFPET_QUEUE_OP_FAILED ## */ /* ## --------------------- ## */ - /* OF1.0(5), OF1.1+(9). Queue operation failed. */ - OFPERR_OFPET_QUEUE_OP_FAILED, - /* OF1.0(5,0), OF1.1+(9,0). Invalid port (or port does not exist). */ OFPERR_OFPQOFC_BAD_PORT, @@ -454,9 +446,6 @@ enum ofperr { /* ## OFPET_SWITCH_CONFIG_FAILED ## */ /* ## -------------------------- ## */ - /* OF1.1+(10). Switch config request failed. */ - OFPERR_OFPET_SWITCH_CONFIG_FAILED, - /* OF1.1+(10,0). Specified flags is invalid. */ OFPERR_OFPSCFC_BAD_FLAGS, @@ -470,9 +459,6 @@ enum ofperr { /* ## OFPET_ROLE_REQUEST_FAILED ## */ /* ## ------------------------- ## */ - /* OF1.2+(11). Controller Role request failed. */ - OFPERR_OFPET_ROLE_REQUEST_FAILED, - /* OF1.2+(11,0). Stale Message: old generation_id. */ OFPERR_OFPRRFC_STALE, @@ -482,23 +468,81 @@ enum ofperr { /* NX1.0(1,513), NX1.1(1,513), OF1.2+(11,2). Invalid role. */ OFPERR_OFPRRFC_BAD_ROLE, +/* ## ---------------------- ## */ +/* ## OFPET_METER_MOD_FAILED ## */ +/* ## ---------------------- ## */ + + /* OF1.3+(12,0). Unspecified error. */ + OFPERR_OFPMMFC_UNKNOWN, + + /* OF1.3+(12,1). Meter not added because a Meter ADD attempted to + * replace an existing Meter. */ + OFPERR_OFPMMFC_METER_EXISTS, + + /* OF1.3+(12,2). Meter not added because Meter specified is invalid. */ + OFPERR_OFPMMFC_INVALID_METER, + + /* OF1.3+(12,3). Meter not modified because a Meter MODIFY attempted + * to modify a non-existent Meter. */ + OFPERR_OFPMMFC_UNKNOWN_METER, + + /* OF1.3+(12,4). Unsupported or unknown command. */ + OFPERR_OFPMMFC_BAD_COMMAND, + + /* OF1.3+(12,5). Flag configuration unsupported. */ + OFPERR_OFPMMFC_BAD_FLAGS, + + /* OF1.3+(12,6). Rate unsupported. */ + OFPERR_OFPMMFC_BAD_RATE, + + /* OF1.3+(12,7). Burst size unsupported. */ + OFPERR_OFPMMFC_BAD_BURST, + + /* OF1.3+(12,8). Band unsupported. */ + OFPERR_OFPMMFC_BAD_BAND, + + /* OF1.3+(12,9). Band value unsupported. */ + OFPERR_OFPMMFC_BAD_BAND_VALUE, + + /* OF1.3+(12,10). No more meters available. */ + OFPERR_OFPMMFC_OUT_OF_METERS, + + /* OF1.3+(12,11). The maximum number of properties for a meter has + * been exceeded. */ + OFPERR_OFPMMFC_OUT_OF_BANDS, + +/* ## --------------------------- ## */ +/* ## OFPET_TABLE_FEATURES_FAILED ## */ +/* ## --------------------------- ## */ + + /* OF1.3+(13,0). Specified table does not exist. */ + OFPERR_OFPTFFC_BAD_TABLE, + + /* OF1.3+(13,1). Invalid metadata mask. */ + OFPERR_OFPTFFC_BAD_METADATA, + + /* OF1.3+(13,2). Unknown property type. */ + OFPERR_OFPTFFC_BAD_TYPE, + + /* OF1.3+(13,3). Length problem in properties. */ + OFPERR_OFPTFFC_BAD_LEN, + + /* OF1.3+(13,4). Unsupported property value. */ + OFPERR_OFPTFFC_BAD_ARGUMENT, + + /* OF1.3+(13,5). Permissions error. */ + OFPERR_OFPTFFC_EPERM, + /* ## ------------------ ## */ /* ## OFPET_EXPERIMENTER ## */ /* ## ------------------ ## */ - - /* OF1.2+(0xffff). Experimenter error messages. */ - OFPERR_OFPET_EXPERIMENTER, }; const char *ofperr_domain_get_name(enum ofp_version); bool ofperr_is_valid(enum ofperr); -bool ofperr_is_category(enum ofperr); -bool ofperr_is_nx_extension(enum ofperr); -bool ofperr_is_encodable(enum ofperr, enum ofp_version); enum ofperr ofperr_decode(enum ofp_version, uint16_t type, uint16_t code); -enum ofperr ofperr_decode_type(enum ofp_version, uint16_t type); enum ofperr ofperr_from_name(const char *); enum ofperr ofperr_decode_msg(const struct ofp_header *,