Signed-off-by: Simon Horman <ho...@verge.net.au> --- build-aux/extract-ofp-errors | 23 ++++++--- lib/ofp-errors.h | 101 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 115 insertions(+), 9 deletions(-)
diff --git a/build-aux/extract-ofp-errors b/build-aux/extract-ofp-errors index 5c3cd26..765e079 100755 --- a/build-aux/extract-ofp-errors +++ b/build-aux/extract-ofp-errors @@ -145,7 +145,7 @@ def extract_ofp_errors(filenames): names = [] domain = {} reverse = {} - for domain_name in ("OF1.0", "OF1.1", "NX1.0", "NX1.1"): + for domain_name in ("OF1.0", "OF1.1", "OF1.2", "NX1.0", "NX1.1"): domain[domain_name] = {} reverse[domain_name] = {} @@ -194,22 +194,28 @@ def extract_ofp_errors(filenames): names.append(enum) for dst in dsts.split(', '): - m = re.match(r'([A-Z0-9.]+)\((\d+)(?:,(\d+))?\)$', dst) + m = re.match(r'([A-Z0-9.]+(?:only)?)\((\d+|(0x)[0-9a-fA-F]+)(?:,(\d+))?\)$', dst) if not m: fatal("%s: syntax error in destination" % dst) targets = m.group(1) - type_ = int(m.group(2)) if m.group(3): - code = int(m.group(3)) + base = 16 + else: + base = 10 + type_ = int(m.group(2), base) + if m.group(4): + code = int(m.group(4)) else: code = None - target_map = {"OF": ("OF1.0", "OF1.1"), + target_map = {"OF": ("OF1.0", "OF1.1", "OF1.2"), "OF1.0": ("OF1.0",), - "OF1.1": ("OF1.1",), - "NX": ("OF1.0", "OF1.1"), + "OF1.1only": ("OF1.1",), + "OF1.1": ("OF1.1", "OF1.2"), + "NX": ("OF1.0", "OF1.1", "OF1.2"), "NX1.0": ("OF1.0",), - "NX1.1": ("OF1.1",)} + "NX1.1": ("OF1.1",), + "OF1.2": ("OF1.2",)}; if targets not in target_map: fatal("%s: unknown error domain" % target) for target in target_map[targets]: @@ -306,6 +312,7 @@ const struct ofperr_domain %s = { output_domain(reverse["OF1.0"], "ofperr_of10", "OpenFlow 1.0", 0x01) output_domain(reverse["OF1.1"], "ofperr_of11", "OpenFlow 1.1", 0x02) + output_domain(reverse["OF1.2"], "ofperr_of12", "OpenFlow 1.2", 0x03) if __name__ == '__main__': if '--help' in sys.argv: diff --git a/lib/ofp-errors.h b/lib/ofp-errors.h index cef32f2..5062f3e 100644 --- a/lib/ofp-errors.h +++ b/lib/ofp-errors.h @@ -95,6 +95,15 @@ enum ofperr { /* OF1.1(1,9). Specified table-id invalid or does not exist. */ OFPERR_OFPBRC_BAD_TABLE_ID, + /* OF1.2(1,10). Denied because controller is slave. */ + OFPERR_OFPBRC_IS_SLAVE, + + /* OF1.2(1,11). Invalid port. */ + OFPERR_OFPBRC_BAD_PORT, + + /* OF1.2(1,12). Invalid packet in packet-out. */ + OFPERR_OFPBRC_BAD_PACKET, + /* NX(1,256). Invalid NXM flow match. */ OFPERR_NXBRC_NXM_INVALID, @@ -176,6 +185,15 @@ enum ofperr { /* OF1.1(2,12). Actions uses an unsupported tag/encap. */ OFPERR_OFPBAC_BAD_TAG, + /* OF1.2(2,13). Unsupported type in SET_FIELD action. */ + OFPERR_OFPBAC_SET_TYPE, + + /* OF1.2(2,14). Length problem in SET_FIELD action. */ + OFPERR_OFPBAC_SET_LEN, + + /* OF1.2(2,15). Bad argument in SET_FIELD action. */ + OFPERR_OFPBAC_ARGUMENT, + /* NX(2,256). Must-be-zero action argument had nonzero value. */ OFPERR_NXBAC_MUST_BE_ZERO, @@ -201,9 +219,21 @@ enum ofperr { /* OF1.1(3,4). Metadata mask value unsupported by datapath. */ OFPERR_OFPBIC_UNSUP_METADATA_MASK, - /* OF1.1(3,5). Specific experimenter instruction unsupported. */ + /* OF1.1only(3,5). Specific experimenter instruction unsupported. */ OFPERR_OFPBIC_UNSUP_EXP_INST, + /* OF1.2(3,5). Unknown experimenter id specified. */ + OFPERR_OFPBIC_BAD_EXPERIMENTER, + + /* OF1.2(3,6). Unknown instruction for experimenter id. */ + OFPERR_OFPBIC_BAD_EXP_TYPE, + + /* OF1.2(3,7). Length problem in instructions. */ + OFPERR_OFPBIC_BAD_LEN, + + /* OF1.2(3,8). Permissions error. */ + OFPERR_OFPBIC_EPERM, + /* ## --------------- ## */ /* ## OFPET_BAD_MATCH ## */ /* ## --------------- ## */ @@ -237,6 +267,19 @@ enum ofperr { /* OF1.1(4,7). Unsupported value in a match field. */ OFPERR_OFPBMC_BAD_VALUE, + /* OF1.2(4,8). Unsupported mask specified in the match, + field is not dl-address or nw-address. */ + OFPERR_OFPBMC_BAD_MASK, + + /* OF1.2(4,9). A prerequisite was not met. */ + OFPERR_OFPBMC_BAD_PREREQ, + + /* OF1.2(4,10). A field type was duplicated. */ + OFPERR_OFPBMC_DUP_FIELD, + + /* OF1.2(4,11). Permissions error. */ + OFPERR_OFPBMC_EPERM, + /* ## --------------------- ## */ /* ## OFPET_FLOW_MOD_FAILED ## */ /* ## --------------------- ## */ @@ -272,6 +315,9 @@ enum ofperr { /* OF1.0(3,4), OF1.1(5,6). Unsupported or unknown command. */ OFPERR_OFPFMFC_BAD_COMMAND, + /* OF1.2(5,7). Unsupported or unknown flags. */ + OFPERR_OFPFMFC_BAD_FLAGS, + /* OF1.0(3,5). Unsupported action list - cannot process in the order * specified. */ OFPERR_OFPFMFC_UNSUPPORTED, @@ -323,6 +369,25 @@ enum ofperr { * modify a non-existent group. */ OFPERR_OFPGMFC_UNKNOWN_GROUP, + /* OF1.2(6,9). Group not deleted because another + group is forwarding to it. */ + OFPERR_OFPGMFC_CHAINED_GROUP, + + /* OF1.2(6,10). Unsupported or unknown group type. */ + OFPERR_OFPGMFC_BAD_TYPE, + + /* OF1.2(6,11). Unsupported or unknown command. */ + OFPERR_OFPGMFC_BAD_COMMAND, + + /* OF1.2(6,12). Error in bucket. */ + OFPERR_OFPGMFC_OFPGMFC_BAD_BUCKET, + + /* OF1.2(6,13). Error in watch port/group. */ + OFPERR_OFPGMFC_OFPGMFC_BAD_WATCH, + + /* OF1.2(6,14). Permissions error. */ + OFPERR_OFPGMFC_OFPGMFC_EPERM, + /* ## --------------------- ## */ /* ## OFPET_PORT_MOD_FAILED ## */ /* ## --------------------- ## */ @@ -343,6 +408,9 @@ enum ofperr { /* OF1.1(7,3). Specified advertise is invalid. */ OFPERR_OFPPMFC_BAD_ADVERTISE, + /* OF1.2(7,4). Permissions error. */ + OFPERR_OFPPMFC_EPERM, + /* ## ---------------------- ## */ /* ## OFPET_TABLE_MOD_FAILED ## */ /* ## ---------------------- ## */ @@ -356,6 +424,9 @@ enum ofperr { /* OF1.1(8,1). Specified config is invalid. */ OFPERR_OFPTMFC_BAD_CONFIG, + /* OF1.2(8,2). Permissions error. */ + OFPERR_OFPTMFC_EPERM, + /* ## --------------------- ## */ /* ## OFPET_QUEUE_OP_FAILED ## */ /* ## --------------------- ## */ @@ -384,10 +455,38 @@ enum ofperr { /* OF1.1(10,1). Specified len is invalid. */ OFPERR_OFPSCFC_BAD_LEN, + + /* OF1.2(10,2). Permissions error. */ + OFPERR_OFPSCFC_EPERM, + +/* ## ------------------------- ## */ +/* ## 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, + + /* OF1.2(11,1). Controller role change unsupported. */ + OFPERR_OFPRRFC_UNSUP, + + /* OF1.2(11,2). Invalid role. */ + OFPERR_OFPERR_BAD_ROLE, + + +/* ## ------------------ ## */ +/* ## OFPET_EXPERIMENTER ## */ +/* ## ------------------ ## */ + + /* OF1.2(0xffff). Experimenter error messages. */ + OFPERR_OFPET_EXPERIMENTER, }; extern const struct ofperr_domain ofperr_of10; extern const struct ofperr_domain ofperr_of11; +extern const struct ofperr_domain ofperr_of12; const struct ofperr_domain *ofperr_domain_from_version(uint8_t version); -- 1.7.6.3 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev