diff options
author | Tom Gundersen <teg@jklm.no> | 2014-01-24 21:04:05 +0100 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2014-01-24 22:20:34 +0100 |
commit | e5c4350b0d91551041795eb3c4fd4f22b2604ee2 (patch) | |
tree | 0444279a3e163630e68a6ef53b668461c68a7821 /src/libsystemd/sd-rtnl/test-rtnl.c | |
parent | 1fa132931a3eed8556da801d9fe91aa4c166445e (diff) |
sd-rtnl: add support for reading containers
Also insist on messages being sealed before reading them. In other
words we don't allow interleaving of reading and appending to messages.
Diffstat (limited to 'src/libsystemd/sd-rtnl/test-rtnl.c')
-rw-r--r-- | src/libsystemd/sd-rtnl/test-rtnl.c | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/src/libsystemd/sd-rtnl/test-rtnl.c b/src/libsystemd/sd-rtnl/test-rtnl.c index 98213d6782..a173b0fc61 100644 --- a/src/libsystemd/sd-rtnl/test-rtnl.c +++ b/src/libsystemd/sd-rtnl/test-rtnl.c @@ -27,6 +27,7 @@ #include "sd-rtnl.h" #include "socket-util.h" #include "rtnl-util.h" +#include "rtnl-internal.h" #include "event-util.h" static void test_link_configure(sd_rtnl *rtnl, int ifindex) { @@ -42,6 +43,8 @@ static void test_link_configure(sd_rtnl *rtnl, int ifindex) { assert(sd_rtnl_message_append_ether_addr(message, IFLA_ADDRESS, ether_aton(mac)) >= 0); assert(sd_rtnl_message_append_u32(message, IFLA_MTU, mtu) >= 0); + assert(sd_rtnl_call(rtnl, message, 0, NULL) == 1); + assert(sd_rtnl_message_read(message, &type, &data) > 0); assert(type == IFLA_IFNAME); assert(streq(name, (char *) data)); @@ -53,8 +56,6 @@ static void test_link_configure(sd_rtnl *rtnl, int ifindex) { assert(sd_rtnl_message_read(message, &type, &data) > 0); assert(type == IFLA_MTU); assert(mtu == *(unsigned int *) data); - - assert(sd_rtnl_call(rtnl, message, 0, NULL) == 1); } static void test_route(void) { @@ -85,6 +86,8 @@ static void test_route(void) { return; } + assert(message_seal(NULL, req) >= 0); + assert(sd_rtnl_message_read(req, &type, &data) > 0); assert(type == RTA_GATEWAY); assert(((struct in_addr *)data)->s_addr == addr.s_addr); @@ -224,15 +227,26 @@ static void test_container(void) { assert(sd_rtnl_message_close_container(m) >= 0); assert(sd_rtnl_message_close_container(m) == -EINVAL); - assert(sd_rtnl_message_read(m, &type, &data) == -EINVAL); + assert(message_seal(NULL, m) >= 0); -/* TODO: add support for entering containers - assert(sd_rtnl_message_read(m, &type, &data) > 0); + assert(sd_rtnl_message_read(m, &type, &data) >= 0); + assert(type == IFLA_LINKINFO); + assert(data == NULL); + assert(sd_rtnl_message_read(m, &type, &data) >= 0); assert(type == IFLA_INFO_KIND); - assert(streq("kind", (char *) data)); - - assert(sd_rtnl_message_read(m, &type, &data) == 0); -*/ + assert(streq("kind", (char *)data)); + assert(sd_rtnl_message_read(m, &type, &data) >= 0); + assert(type == IFLA_INFO_DATA); + assert(data == NULL); + assert(sd_rtnl_message_read(m, &type, &data) >= 0); + assert(type == IFLA_VLAN_ID); + assert(*(uint16_t *)data == 100); + assert(sd_rtnl_message_exit_container(m) >= 0); + assert(sd_rtnl_message_read(m, &type, &data) >= 0); + assert(type == IFLA_INFO_KIND); + assert(streq("kind", (char *)data)); + assert(sd_rtnl_message_exit_container(m) >= 0); + assert(sd_rtnl_message_exit_container(m) == -EINVAL); } static void test_match(void) { @@ -286,7 +300,7 @@ int main(void) { assert(sd_rtnl_message_get_type(m, &type) >= 0); assert(type == RTM_GETLINK); - assert(sd_rtnl_message_read(m, &type, &data) == 0); + assert(sd_rtnl_message_read(m, &type, &data) == -EPERM); assert(sd_rtnl_call(rtnl, m, 0, &r) == 1); assert(sd_rtnl_message_get_type(r, &type) >= 0); @@ -303,6 +317,8 @@ int main(void) { assert(m); assert(sd_rtnl_message_append_u32(m, IFLA_MTU, mtu) >= 0); + assert(sd_rtnl_message_read(m, &type, (void **) &mtu_reply) == -EPERM); + assert(sd_rtnl_call(rtnl, m, -1, &r) == 1); assert(sd_rtnl_message_read(m, &type, (void **) &mtu_reply) == 1); assert(type == IFLA_MTU); @@ -310,7 +326,6 @@ int main(void) { assert(sd_rtnl_message_read(m, &type, &data) == 0); - assert(sd_rtnl_call(rtnl, m, -1, &r) == 1); while (sd_rtnl_message_read(r, &type, &data) > 0) { switch (type) { // case IFLA_MTU: |