int
of_list_table_stats_entry_first(of_list_table_stats_entry_t *list,
    of_table_stats_entry_t *obj)
{
    int rv;

    of_table_stats_entry_init(obj,
            list->version, 0, 1);
    if ((rv = of_list_first((of_object_t *)list, (of_object_t *)obj)) < 0) {
        return rv;
    }

    of_object_wire_init((of_object_t *) obj, OF_TABLE_STATS_ENTRY,
                        list->length);
    if (obj->length == 0) {
        return OF_ERROR_PARSE;
    }

    return rv;
}
Ejemplo n.º 2
0
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;
}