From nobody Thu Jan 11 04:52:11 2024 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4T9XMb60TRz56PjV; Thu, 11 Jan 2024 04:52:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4T9XMb3Ppxz40XB; Thu, 11 Jan 2024 04:52:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1704948731; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/KWehZoBD+8S3U9zsIX+Ml1dCH75ohHXIehKwhGOits=; b=O9tzfqHTALChocCc9bjcJ4Kz7DwlJN5FjpC4q/7hJmwlYcWVYoiqLN9RcsxN5kpTfwPY1s G7XMPRNxgnkbvF56b0240979BPz/KaQJE6VNtKYw2ff6J3PNiRLxS5Xpu+K1vwX0IU1uhF H30Rv/jP4L/G3z0WSXMIE7CRN3T3pd8n+rPM3sji+VpwMWT6wgWFi7LBgNrl3AmArYq/NU 4uT2kF66xeaUDq++/1/Av2efpPMxinzsZJpn/4N+6xJRcilxtaPql4Et5D/SvIhyYAaZ6O XcwsuhU1gyJzYH+DqiEbbMp6nzy93x400AetRqi9oiArN+zL1O8AXICNDqWw6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1704948731; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/KWehZoBD+8S3U9zsIX+Ml1dCH75ohHXIehKwhGOits=; b=O39BDkq/H5OOV8UY3n7u+bVrzh27T04vp2TdviXqPFiMZ5Knw0zQWxRuV5VQ7y5B3Ag31Z NqSMS3vYSHc0Ho1OYOpTEGxDxxrfpEGBc+N/X1p26KR36Q40UVmJNpJv6YouuC3CyIMqnH rHqIHRQA036B+1HzJ8RzpvReaAg41WYGkk78Vl3XMA+0GNFKUFw3+FuVlyThNI4cL3+B8K y7al6wqoG4Uji2opwr4J+FUF/jPVvXWmoFhuTdT2gFO/9i0h2oJncAHdZEon3W12L/46cG sWCfYl3Mi1rHSJ/wpFhPcX9NvkoJpPEePjZLZEybkM6WTsUsGTvpYuirFXdgiA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1704948731; a=rsa-sha256; cv=none; b=Egvf8GQSPHw0JFA/p1JhF9elpJ2XoU1X14wYj7j4AO9OS2fcY/Q/JbnMyDgZ+w24AphuXG REhzQZNTVOp0QzfUO3jf4wHsYLKCXaeacPV62hOQwBqDyTk27qKLglnP/yN633MHhIYoF6 Ynu8VVOAGq481SnUtbaTCcyrLOrESX6K+KdEe78+WyhV7kAYE1mlUNnmzo0cr9WJJteZtp NqiX4AvZGCjiOog0VfxFhRjnfCaJR+fmkv+uED8gzcQd4wkcNdONLs7DJgdq69W9rvzEeZ 9Ua017L3zvVmAXw668+EnKjHf5Mu8nZETl85Gnobwx2roo1z1y00UnCh0bpr+g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4T9XMb2VJgz14Bd; Thu, 11 Jan 2024 04:52:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40B4qBZP041509; Thu, 11 Jan 2024 04:52:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40B4qBCN041506; Thu, 11 Jan 2024 04:52:11 GMT (envelope-from git) Date: Thu, 11 Jan 2024 04:52:11 GMT Message-Id: <202401110452.40B4qBCN041506@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: 26caf57e0b0c - main - tests/netlink: improve recently added netlink_socket:membership List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 26caf57e0b0c02771b58ed99bc37b4810249d58e Auto-Submitted: auto-generated The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=26caf57e0b0c02771b58ed99bc37b4810249d58e commit 26caf57e0b0c02771b58ed99bc37b4810249d58e Author: Gleb Smirnoff AuthorDate: 2024-01-11 04:51:53 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-11 04:51:53 +0000 tests/netlink: improve recently added netlink_socket:membership Change sequence of syscalls: instead of "add, delete, check, check" run sequence "add, check, delete, check". Seems to make more sense. Do minimal parsing of incoming messages: find the IPv4 address there and compare it to the original. --- tests/sys/netlink/netlink_socket.c | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/tests/sys/netlink/netlink_socket.c b/tests/sys/netlink/netlink_socket.c index 3015a585199b..6dcc894b6695 100644 --- a/tests/sys/netlink/netlink_socket.c +++ b/tests/sys/netlink/netlink_socket.c @@ -256,6 +256,19 @@ ATF_TC_BODY(sizes, tc) cmsg_check(&msg); } +static struct nlattr * +nla_RTA_DST(struct nlattr *start, ssize_t len) +{ + struct nlattr *nla; + + for (nla = start; (char *)nla < (char *)start + len; + nla = (struct nlattr *)((char *)nla + NLA_ALIGN(nla->nla_len))) { + if (nla->nla_type == RTA_DST) + return (nla); + } + + return (NULL); +} /* * Check that NETLINK_ADD_MEMBERSHIP subscribes us. Add & delete a temporary * route and check if announcements came in. @@ -270,7 +283,7 @@ ATF_TC_BODY(membership, tc) struct in_addr dst; struct nlattr rta_oif; uint32_t oif; - } msg = { + } reply, msg = { .hdr.nlmsg_type = RTM_NEWROUTE, .hdr.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE | NLM_F_EXCL, .hdr.nlmsg_len = sizeof(msg), @@ -286,19 +299,32 @@ ATF_TC_BODY(membership, tc) .rta_oif.nla_len = sizeof(uint32_t) + sizeof(struct nlattr), .oif = 1, }; + struct nlattr *nla; int fd; ATF_REQUIRE((fd = socket(PF_NETLINK, SOCK_RAW, NETLINK_ROUTE)) != -1); ATF_REQUIRE(setsockopt(fd, SOL_NETLINK, NETLINK_ADD_MEMBERSHIP, &(int){RTNLGRP_IPV4_ROUTE}, sizeof(int)) == 0); + ATF_REQUIRE(send(fd, &msg, sizeof(msg), 0) == sizeof(msg)); + ATF_REQUIRE(recv(fd, &reply, sizeof(reply), 0) == sizeof(reply)); + ATF_REQUIRE(reply.hdr.nlmsg_type == msg.hdr.nlmsg_type); + ATF_REQUIRE(reply.rtm.rtm_type == msg.rtm.rtm_type); + ATF_REQUIRE(reply.rtm.rtm_dst_len == msg.rtm.rtm_dst_len); + ATF_REQUIRE(nla = nla_RTA_DST(&reply.rta_dst, sizeof(reply))); + ATF_REQUIRE(memcmp(&msg.dst, (char *)nla + sizeof(struct nlattr), + sizeof(struct in_addr)) == 0); + msg.hdr.nlmsg_type = RTM_DELROUTE; msg.hdr.nlmsg_len -= sizeof(struct nlattr) + sizeof(uint32_t); ATF_REQUIRE(send(fd, &msg, msg.hdr.nlmsg_len, 0) == msg.hdr.nlmsg_len); - ATF_REQUIRE(recv(fd, &msg, sizeof(msg), 0) == sizeof(msg)); - ATF_REQUIRE(msg.hdr.nlmsg_type == RTM_NEWROUTE); - ATF_REQUIRE(recv(fd, &msg, sizeof(msg), 0) == sizeof(msg)); - ATF_REQUIRE(msg.hdr.nlmsg_type == RTM_DELROUTE); + ATF_REQUIRE(recv(fd, &reply, sizeof(reply), 0) == sizeof(reply)); + ATF_REQUIRE(reply.hdr.nlmsg_type == msg.hdr.nlmsg_type); + ATF_REQUIRE(reply.rtm.rtm_type == msg.rtm.rtm_type); + ATF_REQUIRE(reply.rtm.rtm_dst_len == msg.rtm.rtm_dst_len); + ATF_REQUIRE(nla = nla_RTA_DST(&reply.rta_dst, sizeof(reply))); + ATF_REQUIRE(memcmp(&msg.dst, (char *)nla + sizeof(struct nlattr), + sizeof(struct in_addr)) == 0); } ATF_TP_ADD_TCS(tp)