-/* Copyright (c) 2008, 2011 The Board of Trustees of The Leland Stanford
+/* Copyright (c) 2008, 2011, 2012 The Board of Trustees of The Leland Stanford
* Junior University
*
* We are making the OpenFlow specification and associated documentation
#include "openflow/openflow-common.h"
-/* Nothing here yet. */
+/* OpenFlow 1.1 uses 32-bit port numbers. Open vSwitch, for now, uses OpenFlow
+ * 1.0 port numbers internally. We map them to OpenFlow 1.0 as follows:
+ *
+ * OF1.1 <=> OF1.0
+ * ----------------------- ---------------
+ * 0x00000000...0x0000feff <=> 0x0000...0xfeff "physical" ports
+ * 0x0000ff00...0xfffffeff <=> not supported
+ * 0xffffff00...0xffffffff <=> 0xff00...0xffff "reserved" OFPP_* ports
+ *
+ * OFPP11_OFFSET is the value that must be added or subtracted to convert
+ * an OpenFlow 1.0 reserved port number to or from, respectively, the
+ * corresponding OpenFlow 1.1 reserved port number.
+ */
+#define OFPP11_MAX 0xffffff00
+#define OFPP11_OFFSET (OFPP11_MAX - OFPP_MAX)
+
+/* OpenFlow 1.1 specific message types, in addition to the common message
+ * types. */
+enum ofp11_type {
+ /* Controller command messages. */
+ OFPT11_PACKET_OUT = 13, /* Controller/switch message */
+ OFPT11_FLOW_MOD, /* Controller/switch message */
+ OFPT11_GROUP_MOD, /* Controller/switch message */
+ OFPT11_PORT_MOD, /* Controller/switch message */
+ OFPT11_TABLE_MOD, /* Controller/switch message */
+
+ /* Statistics messages. */
+ OFPT11_STATS_REQUEST, /* Controller/switch message */
+ OFPT11_STATS_REPLY, /* Controller/switch message */
+
+ /* Barrier messages. */
+ OFPT11_BARRIER_REQUEST, /* Controller/switch message */
+ OFPT11_BARRIER_REPLY, /* Controller/switch message */
+
+ /* Queue Configuration messages. */
+ OFPT11_QUEUE_GET_CONFIG_REQUEST, /* Controller/switch message */
+ OFPT11_QUEUE_GET_CONFIG_REPLY, /* Controller/switch message */
+};
+
+enum ofp11_action_type {
+ OFPAT11_OUTPUT, /* Output to switch port. */
+ OFPAT11_SET_VLAN_VID, /* Set the 802.1q VLAN id. */
+ OFPAT11_SET_VLAN_PCP, /* Set the 802.1q priority. */
+ OFPAT11_SET_DL_SRC, /* Ethernet source address. */
+ OFPAT11_SET_DL_DST, /* Ethernet destination address. */
+ OFPAT11_SET_NW_SRC, /* IP source address. */
+ OFPAT11_SET_NW_DST, /* IP destination address. */
+ OFPAT11_SET_NW_TOS, /* IP ToS (DSCP field, 6 bits). */
+ OFPAT11_SET_NW_ECN, /* IP ECN (2 bits). */
+ OFPAT11_SET_TP_SRC, /* TCP/UDP/SCTP source port. */
+ OFPAT11_SET_TP_DST, /* TCP/UDP/SCTP destination port. */
+ OFPAT11_COPY_TTL_OUT, /* Copy TTL "outwards" -- from next-to-outermost
+ to outermost */
+ OFPAT11_COPY_TTL_IN, /* Copy TTL "inwards" -- from outermost to
+ next-to-outermost */
+ OFPAT11_SET_MPLS_LABEL, /* MPLS label */
+ OFPAT11_SET_MPLS_TC, /* MPLS TC */
+ OFPAT11_SET_MPLS_TTL, /* MPLS TTL */
+ OFPAT11_DEC_MPLS_TTL, /* Decrement MPLS TTL */
+
+ OFPAT11_PUSH_VLAN, /* Push a new VLAN tag */
+ OFPAT11_POP_VLAN, /* Pop the outer VLAN tag */
+ OFPAT11_PUSH_MPLS, /* Push a new MPLS tag */
+ OFPAT11_POP_MPLS, /* Pop the outer MPLS tag */
+ OFPAT11_SET_QUEUE, /* Set queue id when outputting to a port */
+ OFPAT11_GROUP, /* Apply group. */
+ OFPAT11_SET_NW_TTL, /* IP TTL. */
+ OFPAT11_DEC_NW_TTL, /* Decrement IP TTL. */
+ OFPAT11_EXPERIMENTER = 0xffff
+};
#endif /* openflow/openflow-1.1.h */