12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- /*
- * tests/check-attr.c nla_attr unit tests
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation version 2.1
- * of the License.
- *
- * Copyright (c) 2013 Thomas Graf <tgraf@suug.ch>
- */
- #include "util.h"
- #include <netlink/attr.h>
- #include <netlink/msg.h>
- START_TEST(attr_size)
- {
- fail_if(nla_attr_size(0) != NLA_HDRLEN,
- "Length of empty attribute should match header size");
- fail_if(nla_attr_size(1) != NLA_HDRLEN + 1,
- "Length of 1 bytes payload should be NLA_HDRLEN + 1");
- fail_if(nla_attr_size(2) != NLA_HDRLEN + 2,
- "Length of 2 bytes payload should be NLA_HDRLEN + 2");
- fail_if(nla_attr_size(3) != NLA_HDRLEN + 3,
- "Length of 3 bytes payload should be NLA_HDRLEN + 3");
- fail_if(nla_attr_size(4) != NLA_HDRLEN + 4,
- "Length of 4 bytes payload should be NLA_HDRLEN + 4");
- fail_if(nla_total_size(1) != NLA_HDRLEN + 4,
- "Total size of 1 bytes payload should result in 8 bytes");
- fail_if(nla_total_size(2) != NLA_HDRLEN + 4,
- "Total size of 2 bytes payload should result in 8 bytes");
- fail_if(nla_total_size(3) != NLA_HDRLEN + 4,
- "Total size of 3 bytes payload should result in 8 bytes");
- fail_if(nla_total_size(4) != NLA_HDRLEN + 4,
- "Total size of 4 bytes payload should result in 8 bytes");
- fail_if(nla_padlen(1) != 3,
- "2 bytes of payload should result in 3 padding bytes");
- fail_if(nla_padlen(2) != 2,
- "2 bytes of payload should result in 2 padding bytes");
- fail_if(nla_padlen(3) != 1,
- "3 bytes of payload should result in 1 padding bytes");
- fail_if(nla_padlen(4) != 0,
- "4 bytes of payload should result in 0 padding bytes");
- fail_if(nla_padlen(5) != 3,
- "5 bytes of payload should result in 3 padding bytes");
- }
- END_TEST
- START_TEST(msg_construct)
- {
- struct nl_msg *msg;
- struct nlmsghdr *nlh;
- struct nlattr *a;
- int i, rem;
- msg = nlmsg_alloc();
- fail_if(!msg, "Unable to allocate netlink message");
- for (i = 1; i < 256; i++) {
- fail_if(nla_put_u32(msg, i, i+1) != 0,
- "Unable to add attribute %d", i);
- }
- nlh = nlmsg_hdr(msg);
- i = 1;
- nlmsg_for_each_attr(a, nlh, 0, rem) {
- fail_if(nla_type(a) != i, "Expected attribute %d", i);
- i++;
- fail_if(nla_get_u32(a) != i, "Expected attribute value %d", i);
- }
- nlmsg_free(msg);
- }
- END_TEST
- Suite *make_nl_attr_suite(void)
- {
- Suite *suite = suite_create("Netlink attributes");
- TCase *nl_attr = tcase_create("Core");
- tcase_add_test(nl_attr, attr_size);
- tcase_add_test(nl_attr, msg_construct);
- suite_add_tcase(suite, nl_attr);
- return suite;
- }
|