]> granicus.if.org Git - strace/commitdiff
tests: check decoding of NETLINK_CRYPTO nlmsg_flags
authorJingPiao Chen <chenjingpiao@gmail.com>
Fri, 9 Jun 2017 11:44:57 +0000 (19:44 +0800)
committerDmitry V. Levin <ldv@altlinux.org>
Wed, 12 Jul 2017 21:08:03 +0000 (21:08 +0000)
* tests/netlink_crypto.c (test_nlmsg_flags): New function.
(main): Use it.

tests/netlink_crypto.c

index c43b8e97efe6b4bc7311da47e45272c6cfda7300..376baa822c80421f9e7a10b6bfecc0ba43f5a0de 100644 (file)
@@ -53,6 +53,40 @@ test_nlmsg_type(const int fd)
               fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
 }
 
+static void
+test_nlmsg_flags(const int fd)
+{
+       long rc;
+       struct nlmsghdr nlh = {
+               .nlmsg_len = sizeof(nlh),
+       };
+
+       nlh.nlmsg_type = CRYPTO_MSG_GETALG;
+       nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+       rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
+       printf("sendto(%d, {len=%u, type=CRYPTO_MSG_GETALG"
+              ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}"
+              ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+              fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
+
+       nlh.nlmsg_type = CRYPTO_MSG_NEWALG;
+       nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_REPLACE;
+       rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
+       printf("sendto(%d, {len=%u, type=CRYPTO_MSG_NEWALG"
+              ", flags=NLM_F_ECHO|NLM_F_REPLACE, seq=0, pid=0}"
+              ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+              fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
+
+       nlh.nlmsg_type = CRYPTO_MSG_DELALG;
+       nlh.nlmsg_flags = NLM_F_REPLACE;
+       rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
+       printf("sendto(%d, {len=%u, type=CRYPTO_MSG_DELALG"
+              ", flags=%#x /* NLM_F_??? */, seq=0, pid=0}"
+              ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+              fd, nlh.nlmsg_len, NLM_F_REPLACE,
+              (unsigned) sizeof(nlh), sprintrc(rc));
+}
+
 int
 main(void)
 {
@@ -61,6 +95,7 @@ main(void)
        int fd = create_nl_socket(NETLINK_CRYPTO);
 
        test_nlmsg_type(fd);
+       test_nlmsg_flags(fd);
 
        printf("+++ exited with 0 +++\n");