loxigen: generate legacy type_maps data from the IR
The C backend (and, for the moment, the python and java backends) still need
the type_maps data. Duplicating it between the type_maps file and the input
files is not ideal because adding a new object would require editing both
places.
This change does the minimal work to generate most of the type_maps data from
the IR. There are some stragglers where LOXI is particularly unclean (stats and
flow-mod subtypes not really using inheritance) but the goal is for a developer
who needs to add a new object to be able to do it without modifying Python
code.
diff --git a/openflow_input/bsn_l2_table b/openflow_input/bsn_l2_table
index d5135d0..1fb48b6 100644
--- a/openflow_input/bsn_l2_table
+++ b/openflow_input/bsn_l2_table
@@ -30,11 +30,11 @@
// BSN L2 table configuration messages
struct of_bsn_set_l2_table {
uint8_t version;
- uint8_t type;
+ uint8_t type == 4;
uint16_t length;
uint32_t xid;
- uint32_t experimenter; // OF_EXPERIMENTER_ID_BSN
- uint32_t subtype; // BSN_L2_TABLE_SET
+ uint32_t experimenter == 0x5c16c7;
+ uint32_t subtype == 12;
uint8_t l2_table_enable; // 1 == enabled, 0 == disabled
uint8_t pad;
uint16_t l2_table_priority; // priority of all flows in L2 table
@@ -43,20 +43,20 @@
struct of_bsn_get_l2_table_request {
uint8_t version;
- uint8_t type;
+ uint8_t type == 4;
uint16_t length;
uint32_t xid;
- uint32_t experimenter; // OF_EXPERIMENTER_ID_BSN
- uint32_t subtype; // BSN_L2_TABLE_GET_REQUEST
+ uint32_t experimenter == 0x5c16c7;
+ uint32_t subtype == 13;
};
struct of_bsn_get_l2_table_reply {
uint8_t version;
- uint8_t type;
+ uint8_t type == 4;
uint16_t length;
uint32_t xid;
- uint32_t experimenter; // OF_EXPERIMENTER_ID_BSN
- uint32_t subtype; // BSN_L2_TABLE_GET_REPLY
+ uint32_t experimenter == 0x5c16c7;
+ uint32_t subtype == 14;
uint8_t l2_table_enable; // 1 == enabled, 0 == disabled
uint8_t pad;
uint16_t l2_table_priority; // priority of all flows in L2 table