openflow: Split OFPAT_* into OFPAT10_* and OFPAT11_*.
[sliver-openvswitch.git] / include / openflow / openflow-1.1.h
index 8b407e3..0e5c901 100644 (file)
@@ -1,4 +1,4 @@
-/* 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 */