--- openflow-2013-01-09.h	2015-07-23 09:54:17.268479367 -0700
+++ openflow-2013-01-10.h	2015-07-23 09:54:17.276479367 -0700
@@ -1862,6 +1862,11 @@
      * The reply body is an array of struct ofp_port. */
     OFPMP_PORT_DESC = 13,
 
+    /* Table description.
+     * The request body is empty.
+     * The reply body is an array of struct ofp_table_desc. */
+    OFPMP_TABLE_DESC = 14,
+
     /* Experimenter extension.
      * The request and reply bodies begin with
      * struct ofp_experimenter_multipart_header.
@@ -2099,7 +2104,7 @@
     char name[OFP_MAX_TABLE_NAME_LEN];
     uint64_t metadata_match; /* Bits of metadata table can match. */
     uint64_t metadata_write; /* Bits of metadata table can write. */
-    uint32_t config;         /* Bitmap of OFPTC_* values */
+    uint32_t capabilities;   /* Bitmap of OFPTC_* values. */
     uint32_t max_entries;    /* Max number of entries supported. */
 
     /* Table Feature Property list */
@@ -2118,6 +2123,19 @@
 };
 OFP_ASSERT(sizeof(struct ofp_table_stats) == 24);
 
+/* Body of reply to OFPMP_TABLE_DESC request. */
+struct ofp_table_desc {
+    uint16_t length;         /* Length is padded to 64 bits. */
+    uint8_t table_id;        /* Identifier of table.  Lower numbered tables
+                                are consulted first. */
+    uint8_t pad[1];          /* Align to 32-bits. */
+    uint32_t config;         /* Bitmap of OFPTC_* values. */
+
+    /* Table Mod Property list - 0 or more. */
+    struct ofp_table_mod_prop_header properties[0];
+};
+OFP_ASSERT(sizeof(struct ofp_table_desc) == 8);
+
 /* Body for ofp_multipart_request of type OFPMP_PORT_STATS. */
 struct ofp_port_stats_request {
     uint32_t port_no;        /* OFPMP_PORT message must request statistics
