--- openflow-2013-12-16.h	2015-07-23 09:54:17.664479383 -0700
+++ openflow-2013-10-15-2.h	2015-07-23 09:54:17.668479383 -0700
@@ -380,6 +380,7 @@
     OFPPDPT_OPTICAL           = 1,      /* Optical property. */
     OFPPDPT_PIPELINE_INPUT    = 2,      /* Ingress pipeline fields. */
     OFPPDPT_PIPELINE_OUTPUT   = 3,      /* Egress pipeline fields. */
+    OFPPDPT_RECIRCULATE       = 4,      /* Recirculation property. */
     OFPPDPT_EXPERIMENTER      = 0xFFFF, /* Experimenter property. */
 };
 
@@ -446,6 +447,22 @@
 };
 OFP_ASSERT(sizeof(struct ofp_port_desc_prop_oxm) == 4);
 
+/* Recirculate port description property. */
+struct ofp_port_desc_prop_recirculate {
+    uint16_t     type;          /* OFPPDPT_RECIRCULATE. */
+    uint16_t     length;        /* Length in bytes of the property,
+                                   including this header, excluding padding. */
+    /* Followed by:
+     *   - Exactly (length - 4) bytes containing the port numbers, then
+     *   - Exactly (length + 7)/8*8 - (length) (between 0 and 7)
+     *     bytes of all-zero bytes */
+    uint32_t     port_nos[0];    /* List of recirculated input port numbers.
+                                    0 or more. The number of port numbers
+                                    is inferred from the length field in
+                                    the header. */
+};
+OFP_ASSERT(sizeof(struct ofp_port_desc_prop_recirculate) == 4);
+
 /* Experimenter port description property. */
 struct ofp_port_desc_prop_experimenter {
     uint16_t         type;    /* OFPPDPT_EXPERIMENTER. */
