[PATCH 2/2] tests: add check for decoding netlink get and new flags

Dmitry V. Levin ldv at altlinux.org
Wed Jun 7 12:59:08 UTC 2017


On Wed, Jun 07, 2017 at 12:47:46PM +0800, JingPiao Chen wrote:
> * tests/netlink_route.c: Add check for
> NETLINK_ROUTE get and new flags.
> * tests/netlink_sock_diag.c: Add check for
> NETLINK_SOCK_DIAG get flags.
> * tests/netlink_xfrm.c: Add check for
> NETLINK_XFRM get and new flags.
> ---
>  tests/netlink_route.c     | 26 ++++++++++++++++++++++++++
>  tests/netlink_sock_diag.c | 18 ++++++++++++++++++
>  tests/netlink_xfrm.c      | 26 ++++++++++++++++++++++++++
>  3 files changed, 70 insertions(+)
> 
> diff --git a/tests/netlink_route.c b/tests/netlink_route.c
> index 7946121..0198e8a 100644
> --- a/tests/netlink_route.c
> +++ b/tests/netlink_route.c
> @@ -50,6 +50,31 @@ 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 = RTM_GETLINK;
> +	nlh.nlmsg_flags = NLM_F_DUMP;
> +	rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
> +	printf("sendto(%d, {{len=%u, type=RTM_GETLINK"
> +	       ", flags=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 = RTM_NEWLINK;
> +	nlh.nlmsg_flags = NLM_F_REPLACE;
> +	rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
> +	printf("sendto(%d, {{len=%u, type=RTM_NEWLINK"
> +	       ", flags=NLM_F_REPLACE, seq=0, pid=0}}"
> +	       ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
> +	       fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));

Please add a case with nlmsg_flags neither "get" nor "new".

> +}
> +
>  int main(void)
>  {
>  	skip_if_unavailable("/proc/self/fd/");
> @@ -57,6 +82,7 @@ int main(void)
>  	int fd = create_nl_socket(NETLINK_ROUTE);
>  
>  	test_nlmsg_type(fd);
> +	test_nlmsg_flags(fd);
>  
>  	printf("+++ exited with 0 +++\n");
>  
> diff --git a/tests/netlink_sock_diag.c b/tests/netlink_sock_diag.c
> index 09eb2bf..943e90b 100644
> --- a/tests/netlink_sock_diag.c
> +++ b/tests/netlink_sock_diag.c
> @@ -55,6 +55,23 @@ 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),
> +		.nlmsg_type = SOCK_DIAG_BY_FAMILY,
> +		.nlmsg_flags = NLM_F_DUMP,
> +	};
> +
> +	rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
> +	printf("sendto(%d, {{len=%u, type=SOCK_DIAG_BY_FAMILY"
> +	       ", flags=NLM_F_DUMP, seq=0, pid=0}}"
> +	       ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
> +	       fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
> +}
> +
>  int main(void)
>  {
>  	skip_if_unavailable("/proc/self/fd/");
> @@ -62,6 +79,7 @@ int main(void)
>  	int fd = create_nl_socket(NETLINK_SOCK_DIAG);
>  
>  	test_nlmsg_type(fd);
> +	test_nlmsg_flags(fd);
>  
>  	printf("+++ exited with 0 +++\n");
>  
> diff --git a/tests/netlink_xfrm.c b/tests/netlink_xfrm.c
> index fa50080..7183230 100644
> --- a/tests/netlink_xfrm.c
> +++ b/tests/netlink_xfrm.c
> @@ -51,6 +51,31 @@ 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 = XFRM_MSG_GETSA;
> +	nlh.nlmsg_flags = NLM_F_DUMP;
> +	rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
> +	printf("sendto(%d, {{len=%u, type=XFRM_MSG_GETSA"
> +	       ", flags=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 = XFRM_MSG_NEWSA;
> +	nlh.nlmsg_flags = NLM_F_REPLACE;
> +	rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
> +	printf("sendto(%d, {{len=%u, type=XFRM_MSG_NEWSA"
> +	       ", flags=NLM_F_REPLACE, seq=0, pid=0}}"
> +	       ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
> +	       fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));

Likewise, please add a case with nlmsg_flags neither "get" nor "new".


-- 
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20170607/8b4c1e68/attachment.bin>


More information about the Strace-devel mailing list