X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibsystemd-rtnl%2Ftest-rtnl.c;h=a512a7b2f72c7cd343adf33d27fd746fb2fce7e8;hp=75a210d3fbbca9d816e3dbd6ac79708b3c88b498;hb=4987623d011c534a22a490b17a8e0ec81d1ac30c;hpb=b4f2a5b19718e63767e9e43db5b048caf4209b3f diff --git a/src/libsystemd-rtnl/test-rtnl.c b/src/libsystemd-rtnl/test-rtnl.c index 75a210d3f..a512a7b2f 100644 --- a/src/libsystemd-rtnl/test-rtnl.c +++ b/src/libsystemd-rtnl/test-rtnl.c @@ -206,6 +206,45 @@ static void test_pipe(int ifindex) { } } +static void test_container(void) { + _cleanup_sd_rtnl_message_unref_ sd_rtnl_message *m = NULL; + uint16_t type; + void *data; + + assert(sd_rtnl_message_link_new(RTM_NEWLINK, 0, 0, 0, &m) >= 0); + + assert(sd_rtnl_message_open_container(m, IFLA_LINKINFO) >= 0); + assert(sd_rtnl_message_open_container(m, IFLA_LINKINFO) == -EINVAL); + assert(sd_rtnl_message_append(m, IFLA_INFO_KIND, "kind") >= 0); + 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); + +/* TODO: add support for entering containers + 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); +*/ +} + +static void test_match(void) { + _cleanup_sd_rtnl_unref_ sd_rtnl *rtnl = NULL; + + assert(sd_rtnl_open(0, &rtnl) >= 0); + + assert(sd_rtnl_add_match(rtnl, 0, &link_handler, NULL) == -EINVAL); + + assert(sd_rtnl_add_match(rtnl, RTMGRP_LINK, &link_handler, NULL) >= 0); + assert(sd_rtnl_add_match(rtnl, RTMGRP_LINK, &link_handler, NULL) >= 0); + + assert(sd_rtnl_remove_match(rtnl, RTMGRP_LINK, &link_handler, NULL) == 1); + assert(sd_rtnl_remove_match(rtnl, RTMGRP_LINK, &link_handler, NULL) == 1); + assert(sd_rtnl_remove_match(rtnl, RTMGRP_LINK, &link_handler, NULL) == 0); +} + int main(void) { sd_rtnl *rtnl; sd_rtnl_message *m; @@ -216,10 +255,14 @@ int main(void) { unsigned int mtu = 0; unsigned int *mtu_reply; + test_match(); + test_multiple(); test_route(); + test_container(); + assert(sd_rtnl_open(0, &rtnl) >= 0); assert(rtnl);