Exemple #1
0
static int
test_list_limits_bind(void)
{
    of_flow_stats_reply_t *obj = of_flow_stats_reply_new(OF_VERSION_1_0);
    of_list_flow_stats_entry_t list;
    int i = 0;
    of_flow_stats_reply_entries_bind(obj, &list);


    while (1) {
        of_flow_stats_entry_t element;
        int rv;
        of_flow_stats_entry_init(&element, OF_VERSION_1_0, -1, 1);
        rv = of_list_flow_stats_entry_append_bind(&list, &element);
        ASSERT(rv == OF_ERROR_NONE || rv == OF_ERROR_RESOURCE);
        if (rv != OF_ERROR_NONE) {
            break;
        }
        i++;
    }

    ASSERT(i == 744);

    of_flow_stats_reply_delete(obj);
    return TEST_PASS;
}
Exemple #2
0
/* Generated from of10/flow_stats_reply.data */
static int
test_of10_flow_stats_reply(void) {
    uint8_t binary[] = {
        0x01, 0x11, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x06, 
        0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x03, 0x00, 
        0x00, 0x3f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 
        0x00, 0x64, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x01, 0x23, 0x45, 0x67, 
        0x89, 0xab, 0xcd, 0xef, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x03, 0xe8, 0x00, 0x00, 0x00, 0x08, 
        0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 
        0x00, 0x02, 0x00, 0x00, 0x00, 0x70, 0x04, 0x00, 
        0x00, 0x3f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 
        0x00, 0x64, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x01, 0x23, 0x45, 0x67, 
        0x89, 0xab, 0xcd, 0xef, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x03, 0xe8, 0x00, 0x00, 0x00, 0x08, 
        0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 
        0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 
        0x00, 0x03, 0x00, 0x00, 
    };

    of_object_t *obj;

    obj = of_flow_stats_reply_new(OF_VERSION_1_0);
    of_flow_stats_reply_flags_set(obj, 0);
    of_flow_stats_reply_xid_set(obj, 6);
    {
        of_object_t *entries = of_list_flow_stats_entry_new(OF_VERSION_1_0);
        {
            of_object_t *elem = of_flow_stats_entry_new(OF_VERSION_1_0);
            of_flow_stats_entry_byte_count_set(elem, 1000);
            of_flow_stats_entry_cookie_set(elem, 81985529216486895);
            of_flow_stats_entry_duration_nsec_set(elem, 2);
            of_flow_stats_entry_duration_sec_set(elem, 1);
            of_flow_stats_entry_hard_timeout_set(elem, 10);
            of_flow_stats_entry_idle_timeout_set(elem, 5);
            of_flow_stats_entry_packet_count_set(elem, 10);
            of_flow_stats_entry_priority_set(elem, 100);
            of_flow_stats_entry_table_id_set(elem, 3);
            {
                of_match_t match = { OF_VERSION_1_0 };
                of_flow_stats_entry_match_set(elem, &match);
            }
            {
                of_object_t *actions = of_list_action_new(OF_VERSION_1_0);
                {
                    of_object_t *elem = of_action_output_new(OF_VERSION_1_0);
                    of_action_output_max_len_set(elem, 0);
                    of_action_output_port_set(elem, 1);
                    of_list_append(actions, elem);
                    of_object_delete(elem);
                }
                {
                    of_object_t *elem = of_action_output_new(OF_VERSION_1_0);
                    of_action_output_max_len_set(elem, 0);
                    of_action_output_port_set(elem, 2);
                    of_list_append(actions, elem);
                    of_object_delete(elem);
                }
                of_flow_stats_entry_actions_set(elem, actions);
                of_object_delete(actions);
            }
            of_list_append(entries, elem);
            of_object_delete(elem);
        }
        {
            of_object_t *elem = of_flow_stats_entry_new(OF_VERSION_1_0);
            of_flow_stats_entry_byte_count_set(elem, 1000);
            of_flow_stats_entry_cookie_set(elem, 81985529216486895);
            of_flow_stats_entry_duration_nsec_set(elem, 2);
            of_flow_stats_entry_duration_sec_set(elem, 1);
            of_flow_stats_entry_hard_timeout_set(elem, 10);
            of_flow_stats_entry_idle_timeout_set(elem, 5);
            of_flow_stats_entry_packet_count_set(elem, 10);
            of_flow_stats_entry_priority_set(elem, 100);
            of_flow_stats_entry_table_id_set(elem, 4);
            {
                of_match_t match = { OF_VERSION_1_0 };
                of_flow_stats_entry_match_set(elem, &match);
            }
            {
                of_object_t *actions = of_list_action_new(OF_VERSION_1_0);
                {
                    of_object_t *elem = of_action_output_new(OF_VERSION_1_0);
                    of_action_output_max_len_set(elem, 0);
                    of_action_output_port_set(elem, 1);
                    of_list_append(actions, elem);
                    of_object_delete(elem);
                }
                {
                    of_object_t *elem = of_action_output_new(OF_VERSION_1_0);
                    of_action_output_max_len_set(elem, 0);
                    of_action_output_port_set(elem, 2);
                    of_list_append(actions, elem);
                    of_object_delete(elem);
                }
                {
                    of_object_t *elem = of_action_output_new(OF_VERSION_1_0);
                    of_action_output_max_len_set(elem, 0);
                    of_action_output_port_set(elem, 3);
                    of_list_append(actions, elem);
                    of_object_delete(elem);
                }
                of_flow_stats_entry_actions_set(elem, actions);
                of_object_delete(actions);
            }
            of_list_append(entries, elem);
            of_object_delete(elem);
        }
        of_flow_stats_reply_entries_set(obj, entries);
        of_object_delete(entries);
    }

    if (sizeof(binary) != WBUF_CURRENT_BYTES(OF_OBJECT_TO_WBUF(obj))
        || memcmp(binary, WBUF_BUF(OF_OBJECT_TO_WBUF(obj)), sizeof(binary))) {
	show_failure(binary, sizeof(binary),
		     WBUF_BUF(OF_OBJECT_TO_WBUF(obj)),
		     WBUF_CURRENT_BYTES(OF_OBJECT_TO_WBUF(obj)));
	of_object_delete(obj);
	return TEST_FAIL;
    }

    of_object_delete(obj);
    return TEST_PASS;
}