static int test_validate_tlv16_list(void) { of_flow_modify_t *obj = of_flow_modify_new(OF_VERSION_1_0); of_list_action_t list; of_action_set_tp_dst_t element1; of_action_output_t element2; of_message_t msg; of_flow_modify_actions_bind(obj, &list); of_action_set_tp_dst_init(&element1, OF_VERSION_1_0, -1, 1); of_list_action_append_bind(&list, (of_action_t *)&element1); of_action_output_init(&element2, OF_VERSION_1_0, -1, 1); of_list_action_append_bind(&list, (of_action_t *)&element2); msg = OF_OBJECT_TO_MESSAGE(obj); TEST_ASSERT(of_validate_message(msg, of_message_length_get(msg)) == 0); of_message_length_set(msg, of_message_length_get(msg) - 1); TEST_ASSERT(of_validate_message(msg, of_message_length_get(msg)) == -1); of_message_length_set(msg, of_message_length_get(msg) + 2); TEST_ASSERT(of_validate_message(msg, of_message_length_get(msg)) == -1); of_flow_modify_delete(obj); return TEST_PASS; }
/** * Set the length of a message object as reported on the wire * @param obj The object to check * @param bytes The new length of the object * @returns OF_ERROR_ code */ void of_object_message_wire_length_set(of_object_t *obj, int bytes) { ASSERT(OF_OBJECT_TO_WBUF(obj) != NULL); // ASSERT(obj is message) of_message_length_set(OF_OBJECT_TO_MESSAGE(obj), bytes); }
:: import of_g :: from loxi_utils import loxi_utils :: from loxi_front_end import type_maps /** * Test message validator * * Run the message validator on corrupt messages to ensure it catches them. */ #include "loci_log.h" #include <locitest/test_common.h> #include <loci/loci_validator.h> static int test_validate_fixed_length(void) { of_table_stats_request_t *obj = of_table_stats_request_new(OF_VERSION_1_0); of_message_t msg = OF_OBJECT_TO_MESSAGE(obj); TEST_ASSERT(of_validate_message(msg, of_message_length_get(msg)) == 0); of_message_length_set(msg, of_message_length_get(msg) - 1); TEST_ASSERT(of_validate_message(msg, of_message_length_get(msg)) == -1); of_table_stats_request_delete(obj); return TEST_PASS; }
static int test_validate_fixed_length(void) { of_table_stats_request_t *obj = of_table_stats_request_new(OF_VERSION_1_0); of_message_t msg = OF_OBJECT_TO_MESSAGE(obj); TEST_ASSERT(of_validate_message(msg, of_message_length_get(msg)) == 0); of_message_length_set(msg, of_message_length_get(msg) - 1); TEST_ASSERT(of_validate_message(msg, of_message_length_get(msg)) == -1); of_table_stats_request_delete(obj); return TEST_PASS; }
/** * Helper function to push values into the wire buffer */ static inline int of_hello_push_wire_values(of_hello_t *obj) { of_hello_push_wire_types(obj); /* Message obj; set length */ of_message_t msg; if ((msg = OF_OBJECT_TO_MESSAGE(obj)) != NULL) { of_message_length_set(msg, obj->length); } return OF_ERROR_NONE; }
/** * Helper function to push values into the wire buffer */ static inline int of_bsn_gentable_entry_desc_stats_reply_push_wire_values(of_bsn_gentable_entry_desc_stats_reply_t *obj) { of_bsn_gentable_entry_desc_stats_reply_push_wire_types(obj); /* Message obj; set length */ of_message_t msg; if ((msg = OF_OBJECT_TO_MESSAGE(obj)) != NULL) { of_message_length_set(msg, obj->length); } return OF_ERROR_NONE; }
static int test_validate_fixed_length_list(void) { of_table_stats_reply_t *obj = of_table_stats_reply_new(OF_VERSION_1_0); of_list_table_stats_entry_t list; of_table_stats_entry_t element; of_message_t msg; of_table_stats_reply_entries_bind(obj, &list); of_table_stats_entry_init(&element, OF_VERSION_1_0, -1, 1); of_list_table_stats_entry_append_bind(&list, &element); of_list_table_stats_entry_append_bind(&list, &element); msg = OF_OBJECT_TO_MESSAGE(obj); TEST_ASSERT(of_validate_message(msg, of_message_length_get(msg)) == 0); of_message_length_set(msg, of_message_length_get(msg) - 1); TEST_ASSERT(of_validate_message(msg, of_message_length_get(msg)) == -1); of_table_stats_reply_delete(obj); return TEST_PASS; }