--- openflow-2014-07-09.h	2015-07-23 09:54:17.712479385 -0700
+++ openflow-2013-07-05-4.h	2015-07-23 09:54:17.716479385 -0700
@@ -1427,6 +1427,7 @@
     OFPIT_CLEAR_ACTIONS = 5,    /* Clears all actions from the datapath
                                    action set */
     OFPIT_METER = 6,            /* Apply meter (rate limiter) */
+    OFPIT_STAT_TRIGGER = 7,     /* Statistics triggers */
 
     OFPIT_EXPERIMENTER = 0xFFFF  /* Experimenter instruction */
 };
@@ -1478,6 +1479,20 @@
 };
 OFP_ASSERT(sizeof(struct ofp_instruction_meter) == 8);
 
+enum ofp_stat_trigger_flags {
+    OFPSTF_PERIODIC    = 1 << 0,  /* Trigger for all multiples of thresholds. */
+    OFPSTF_ONLY_FIRST  = 1 << 1,  /* Trigger on only first reach threshold. */
+};
+
+/* Instruction structure for OFPIT_STAT_TRIGGER */
+struct ofp_instruction_stat_trigger {
+    uint16_t type;                /* OFPIT_STAT_TRIGGER */
+    uint16_t len;                 /* Length is padded to 64 bits. */
+    uint32_t flags;               /* Bitmap of OFPSTF_* flags. */
+    struct ofp_stats thresholds;  /* Threshold list. Variable size. */
+};
+OFP_ASSERT(sizeof(struct ofp_instruction_stat_trigger) == 16);
+
 /* Instruction structure for experimental instructions */
 struct ofp_instruction_experimenter_header {
     uint16_t type;              /* OFPIT_EXPERIMENTER. */
@@ -1674,6 +1689,7 @@
     OFPRR_GROUP_DELETE = 3,     /* Group was removed. */
     OFPRR_METER_DELETE = 4,     /* Meter was removed. */
     OFPRR_EVICTION     = 5,     /* Switch eviction to free resources. */
+    OFPRR_STAT_TRIGGER = 6,     /* Statistic trigger report. */
 };
 
 /* Flow removed (datapath -> controller). */
