--- openflow-2012-10-03.h	2015-07-23 09:54:17.356479371 -0700
+++ openflow-2012-10-09-3.h	2015-07-23 09:54:17.360479371 -0700
@@ -2537,12 +2537,13 @@
     /* When to send updates. */
     OFPFMF_INITIAL = 1 << 0,     /* Initially matching flows. */
     OFPFMF_ADD = 1 << 1,         /* New matching flows as they are added. */
-    OFPFMF_DELETE = 1 << 2,      /* Old matching flows as they are removed. */
+    OFPFMF_REMOVED = 1 << 2,     /* Old matching flows as they are removed. */
     OFPFMF_MODIFY = 1 << 3,      /* Matching flows as they are changed. */
 
     /* What to include in updates. */
     OFPFMF_INSTRUCTIONS = 1 << 4,/* If set, instructions are included. */
-    OFPFMF_OWN = 1 << 5,         /* If set, include own changes in full. */
+    OFPFMF_NO_ABBREV = 1 << 5,   /* If set, include own changes in full. */
+    OFPFMF_ONLY_OWN = 1 << 6,    /* If set, don't include other controllers. */
 };
 
 /* OFPMP_FLOW_MONITOR reply header.
@@ -2563,25 +2564,26 @@
 /* 'event' values in struct ofp_flow_update_header. */
 enum ofp_flow_update_event {
     /* struct ofp_flow_update_full. */
-    OFPFME_ADDED = 0,            /* Flow was added. */
-    OFPFME_DELETED = 1,          /* Flow was deleted. */
-    OFPFME_MODIFIED = 2,         /* Flow instructions were changed. */
+    OFPFME_INITIAL = 0,          /* Flow present when flow monitor created. */
+    OFPFME_ADDED = 1,            /* Flow was added. */
+    OFPFME_REMOVED = 2,          /* Flow was removed. */
+    OFPFME_MODIFIED = 3,         /* Flow instructions were changed. */
 
     /* struct ofp_flow_update_abbrev. */
-    OFPFME_ABBREV = 3,           /* Abbreviated reply. */
+    OFPFME_ABBREV = 4,           /* Abbreviated reply. */
 
     /* struct ofp_flow_update_header. */
-    OFPFME_PAUSED = 4,          /* Monitoring paused (out of buffer space). */
-    OFPFME_RESUMED = 5,         /* Monitoring resumed. */
+    OFPFME_PAUSED = 5,          /* Monitoring paused (out of buffer space). */
+    OFPFME_RESUMED = 6,         /* Monitoring resumed. */
 };
 
-/* OFPMP_FLOW_MONITOR reply for OFPFME_ADDED, OFPFME_DELETED, and
- * OFPFME_MODIFIED. */
+/* OFPMP_FLOW_MONITOR reply for OFPFME_INITIAL, OFPFME_ADDED, OFPFME_REMOVED,
+ * and OFPFME_MODIFIED. */
 struct ofp_flow_update_full {
-    uint16_t length;            /* Length is 24. */
+    uint16_t length;            /* Length is 32 + match + instructions. */
     uint16_t event;             /* One of OFPFME_*. */
     uint8_t table_id;           /* ID of flow's table. */
-    uint8_t reason;             /* OFPRR_* for OFPFME_DELETED, else zero. */
+    uint8_t reason;             /* OFPRR_* for OFPFME_REMOVED, else zero. */
     uint16_t idle_timeout;      /* Number of seconds idle before expiration. */
     uint16_t hard_timeout;      /* Number of seconds before expiration. */
     uint16_t priority;          /* Priority of the entry. */
@@ -2590,7 +2592,7 @@
     struct ofp_match match;     /* Fields to match. Variable size. */
     /*     Instruction set.
      *     If OFPFMF_INSTRUCTIONS was not specified, or 'event' is
-     *     OFPFME_DELETED, no instructions are included.
+     *     OFPFME_REMOVED, no instructions are included.
      */
     //struct ofp_instruction instructions[0];
 };
@@ -2612,6 +2614,15 @@
 };
 OFP_ASSERT(sizeof(struct ofp_flow_update_abbrev) == 8);
 
+/* OFPMP_FLOW_MONITOR reply for OFPFME_PAUSED and OFPFME_RESUMED.
+ */
+struct ofp_flow_update_paused {
+    uint16_t length;            /* Length is 8. */
+    uint16_t event;             /* One of OFPFME_*. */
+    uint8_t zeros[4];           /* Reserved, currently zeroed. */
+};
+OFP_ASSERT(sizeof(struct ofp_flow_update_paused) == 8);
+
 /* Body for ofp_multipart_request/reply of type OFPMP_EXPERIMENTER. */
 struct ofp_experimenter_multipart_header {
     uint32_t experimenter;    /* Experimenter ID. */
