$schema: http://json-schema.org/draft-04/schema#
description: Schema describing an OpenFlow error message, version 1.0
id: of10/ofp_error.json
type: object
required: [header, type, code]
properties:
  header:
    allOf:
      - $ref: definitions.json#/ofp_header
      - properties:
          type:
            enum: [OFPT_ERROR]
            default: OFPT_ERROR
  type:
    type: string
    enum:
      - OFPET_HELLO_FAILED
      - OFPET_BAD_REQUEST
      - OFPET_BAD_ACTION
      - OFPET_FLOW_MOD_FAILED
      - OFPET_PORT_MOD_FAILED
      - OFPET_QUEUE_OP_FAILED
    default: OFPET_BAD_REQUEST
  # TODO: tie code to specific type
  code:
    type: string
    enum:
      - OFPHFC_INCOMPATIBLE
      - OFPHFC_EPERM
      - OFPBRC_BAD_VERSION
      - OFPBRC_BAD_TYPE
      - OFPBRC_BAD_STAT
      - OFPBRC_BAD_VENDOR
      - OFPBRC_BAD_SUBTYPE
      - OFPBRC_EPERM
      - OFPBRC_BAD_LEN
      - OFPBRC_BUFFER_EMPTY
      - OFPBRC_BUFFER_UNKNOWN
      - OFPBAC_BAD_TYPE
      - OFPBAC_BAD_LEN
      - OFPBAC_BAD_VENDOR
      - OFPBAC_BAD_VENDOR_TYPE
      - OFPBAC_BAD_OUT_PORT
      - OFPBAC_BAD_ARGUMENT
      - OFPBAC_EPERM
      - OFPBAC_TOO_MANY
      - OFPBAC_BAD_QUEUE
      - OFPFMFC_ALL_TABLES_FULL
      - OFPFMFC_OVERLAP
      - OFPFMFC_EPERM
      - OFPFMFC_BAD_EMERG_TIMEOUT
      - OFPFMFC_BAD_COMMAND
      - OFPFMFC_UNSUPPORTED
      - OFPPMFC_BAD_PORT
      - OFPPMFC_BAD_HW_ADDR
      - OFPQOFC_BAD_PORT
      - OFPQOFC_BAD_QUEUE
      - OFPQOFC_EPERM
    default: OFPHFC_INCOMPATIBLE
  data:
    $ref: definitions.json#/optional_data
