def get_type_values(cls, version): """ Returns a map from the name of the type member to its value. """ type_values = {} # Primary wire type if utils.class_is_message(cls): type_values['version'] = 'const.OFP_VERSION' type_values['type'] = util.constant_for_value(version, "ofp_type", util.primary_wire_type(cls, version)) if cls in type_maps.flow_mod_list: type_values['_command'] = util.constant_for_value(version, "ofp_flow_mod_command", type_maps.flow_mod_types[version][cls[8:]]) if cls in type_maps.stats_request_list: type_values['stats_type'] = util.constant_for_value(version, "ofp_stats_types", type_maps.stats_types[version][cls[3:-14]]) if cls in type_maps.stats_reply_list: type_values['stats_type'] = util.constant_for_value(version, "ofp_stats_types", type_maps.stats_types[version][cls[3:-12]]) if type_maps.message_is_extension(cls, version): type_values['experimenter'] = '%#x' % type_maps.extension_to_experimenter_id(cls) type_values['subtype'] = type_maps.extension_message_to_subtype(cls, version) elif utils.class_is_action(cls): type_values['type'] = util.constant_for_value(version, "ofp_action_type", util.primary_wire_type(cls, version)) if type_maps.action_is_extension(cls, version): type_values['experimenter'] = '%#x' % type_maps.extension_to_experimenter_id(cls) type_values['subtype'] = type_maps.extension_action_to_subtype(cls, version) elif utils.class_is_queue_prop(cls): type_values['type'] = util.constant_for_value(version, "ofp_queue_properties", util.primary_wire_type(cls, version)) elif utils.class_is_hello_elem(cls): type_values['type'] = util.constant_for_value(version, "ofp_hello_elem_type", util.primary_wire_type(cls, version)) elif utils.class_is_oxm(cls): oxm_class = 0x8000 oxm_type = util.primary_wire_type(cls, version) oxm_masked = cls.find('masked') != -1 and 1 or 0 oxm_len = of_g.base_length[(cls, version)] - 4 type_values['type_len'] = '%#x' % (oxm_class << 16 | oxm_type << 8 | \ oxm_masked << 8 | oxm_len) elif cls == "of_match_v2": type_values['type'] = 0 elif cls == "of_match_v3": type_values['type'] = 1 elif utils.class_is_meter_band(cls): type_values['type'] = util.constant_for_value(version, "ofp_meter_band_type", util.primary_wire_type(cls, version)) elif utils.class_is_instruction(cls): type_values['type'] = util.constant_for_value(version, "ofp_instruction_type", util.primary_wire_type(cls, version)) return type_values
def get_type_values(cls, version): """ Returns a map from the name of the type member to its value. """ type_values = {} # Primary wire type if utils.class_is_message(cls): type_values['version'] = 'const.OFP_VERSION' type_values['type'] = util.constant_for_value(version, "ofp_type", util.primary_wire_type(cls, version)) if cls in type_maps.flow_mod_list: type_values['_command'] = util.constant_for_value(version, "ofp_flow_mod_command", type_maps.flow_mod_types[version][cls[8:]]) if cls in type_maps.stats_request_list: type_values['stats_type'] = util.constant_for_value(version, "ofp_stats_types", type_maps.stats_types[version][cls[3:-14]]) if cls in type_maps.stats_reply_list: type_values['stats_type'] = util.constant_for_value(version, "ofp_stats_types", type_maps.stats_types[version][cls[3:-12]]) if type_maps.message_is_extension(cls, version): type_values['experimenter'] = '%#x' % type_maps.extension_to_experimenter_id(cls) type_values['subtype'] = type_maps.extension_message_to_subtype(cls, version) elif utils.class_is_action(cls): type_values['type'] = util.constant_for_value(version, "ofp_action_type", util.primary_wire_type(cls, version)) if type_maps.action_is_extension(cls, version): type_values['experimenter'] = '%#x' % type_maps.extension_to_experimenter_id(cls) type_values['subtype'] = type_maps.extension_action_to_subtype(cls, version) elif utils.class_is_queue_prop(cls): type_values['type'] = util.constant_for_value(version, "ofp_queue_properties", util.primary_wire_type(cls, version)) return type_values