/* The most significant bit being set in the version field indicates an
* experimental OpenFlow version.
*/
-#define OFP_VERSION 0x95
+#define OFP_VERSION 0x96
#define OFP_MAX_TABLE_NAME_LEN 32
#define OFP_MAX_PORT_NAME_LEN 16
-#define OFP_TCP_PORT 975
-#define OFP_SSL_PORT 976
+#define OFP_TCP_PORT 6633
+#define OFP_SSL_PORT 6633
#define OFP_ETH_ALEN 6 /* Bytes in an Ethernet address. */
/* Port numbering. Physical ports are numbered starting from 0. */
enum ofp_port {
/* Maximum number of physical switch ports. */
- OFPP_MAX = 255,
+ OFPP_MAX = 0xff00,
/* Fake output "ports". */
OFPP_IN_PORT = 0xfff8, /* Send the packet out the input port. This
OFPT_PACKET_OUT, /* Controller/switch message */
OFPT_FLOW_MOD, /* Controller/switch message */
OFPT_PORT_MOD, /* Controller/switch message */
- OFPT_TABLE, /* Controller/switch message */
/* Statistics messages. */
OFPT_STATS_REQUEST, /* Controller/switch message */
struct ofp_action_output {
uint16_t type; /* OFPAT_OUTPUT. */
uint16_t len; /* Length is 8. */
- uint16_t port; /* Ouptut port. */
+ uint16_t port; /* Output port. */
uint16_t max_len; /* Max length to send to controller. */
};
OFP_ASSERT(sizeof(struct ofp_action_output) == 8);
enum ofp_error_type {
OFPET_HELLO_FAILED, /* Hello protocol failed. */
OFPET_BAD_REQUEST, /* Request was not understood. */
- OFPET_BAD_ACTION /* Error in action description. */
+ OFPET_BAD_ACTION, /* Error in action description. */
+ OFPET_FLOW_MOD_FAILED /* Problem modifying flow entry. */
};
/* ofp_error_msg 'code' values for OFPET_HELLO_FAILED. 'data' contains an
OFPBRC_BAD_VERSION, /* ofp_header.version not supported. */
OFPBRC_BAD_TYPE, /* ofp_header.type not supported. */
OFPBRC_BAD_STAT, /* ofp_stats_request.type not supported. */
- OFPBRC_BAD_VENDOR /* Vendor not supported (in ofp_vendor or
+ OFPBRC_BAD_VENDOR, /* Vendor not supported (in ofp_vendor or
* ofp_stats_request or ofp_stats_reply). */
+ OFPBRC_BAD_SUBTYPE /* Vendor subtype not supported. */
};
/* ofp_error_msg 'code' values for OFPET_BAD_ACTION. 'data' contains at least
OFPBAC_BAD_LEN, /* Length problem in actions. */
OFPBAC_BAD_VENDOR, /* Unknown vendor id specified. */
OFPBAC_BAD_VENDOR_TYPE, /* Unknown action type for vendor id. */
- OFPBAC_BAD_OUT_PORT /* Problem validating output action. */
+ OFPBAC_BAD_OUT_PORT, /* Problem validating output action. */
+ OFPBAC_BAD_ARGUMENT /* Bad action argument. */
+};
+
+/* ofp_error_msg 'code' values for OFPET_FLOW_MOD_FAILED. 'data' contains
+ * at least the first 64 bytes of the failed request. */
+enum ofp_flow_mod_failed_code {
+ OFPFMFC_ALL_TABLES_FULL /* Flow not added because of full tables. */
};
/* OFPT_ERROR: Error message (datapath -> controller). */
OFP_ASSERT(sizeof(struct ofp_port_stats) == 104);
/* Vendor extension. */
-struct ofp_vendor {
+struct ofp_vendor_header {
struct ofp_header header; /* Type OFPT_VENDOR. */
uint32_t vendor; /* Vendor ID:
* - MSB 0: low-order bytes are IEEE OUI.
* consortium. */
/* Vendor-defined arbitrary additional data. */
};
-OFP_ASSERT(sizeof(struct ofp_vendor) == 12);
+OFP_ASSERT(sizeof(struct ofp_vendor_header) == 12);
#endif /* openflow.h */