Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F115844848
D43852.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
D43852.diff
View Options
diff --git a/tests/sys/kern/unix_seqpacket_test.c b/tests/sys/kern/unix_seqpacket_test.c
--- a/tests/sys/kern/unix_seqpacket_test.c
+++ b/tests/sys/kern/unix_seqpacket_test.c
@@ -68,32 +68,50 @@
}
/*
- * Returns a pair of sockets made the hard way: bind, listen, connect & accept
+ * Returns a bound and listening socket.
* @return const char* The path to the socket
*/
-static const char*
-mk_pair_of_sockets(int *sv)
+static const struct sockaddr_un *
+mk_listening_socket(int *sv)
{
- struct sockaddr_un sun;
/* ATF's isolation mechanisms will guarantee uniqueness of this file */
- const char *path = "sock";
- int s, err, s2, s1;
+ static const struct sockaddr_un sun = {
+ .sun_family = AF_LOCAL,
+ .sun_len = sizeof(sun),
+ .sun_path = "sock",
+ };
+ int s, r, l;
s = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
ATF_REQUIRE(s >= 0);
- bzero(&sun, sizeof(sun));
- sun.sun_family = AF_LOCAL;
- sun.sun_len = sizeof(sun);
- strlcpy(sun.sun_path, path, sizeof(sun.sun_path));
- err = bind(s, (struct sockaddr *)&sun, sizeof(sun));
- err = listen(s, -1);
- ATF_CHECK_EQ(0, err);
+ r = bind(s, (struct sockaddr *)&sun, sizeof(sun));
+ l = listen(s, -1);
+ ATF_CHECK_EQ(0, r);
+ ATF_CHECK_EQ(0, l);
+
+ if (sv != NULL)
+ *sv = s;
+
+ return (&sun);
+}
+
+/*
+ * Returns a pair of sockets made the hard way: bind, listen, connect & accept
+ * @return const char* The path to the socket
+ */
+static const struct sockaddr_un *
+mk_pair_of_sockets(int *sv)
+{
+ const struct sockaddr_un *sun;
+ int s, s2, err, s1;
+
+ sun = mk_listening_socket(&s);
/* Create the other socket */
s2 = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
ATF_REQUIRE(s2 >= 0);
- err = connect(s2, (struct sockaddr*)&sun, sizeof(sun));
+ err = connect(s2, (struct sockaddr *)sun, sizeof(*sun));
if (err != 0) {
perror("connect");
atf_tc_fail("connect(2) failed");
@@ -106,12 +124,14 @@
atf_tc_fail("accept(2) failed");
}
- sv[0] = s1;
- sv[1] = s2;
+ if (sv != NULL) {
+ sv[0] = s1;
+ sv[1] = s2;
+ }
close(s);
- return (path);
+ return (sun);
}
static volatile sig_atomic_t got_sigpipe = 0;
@@ -454,22 +474,9 @@
ATF_TC_WITHOUT_HEAD(listen_bound);
ATF_TC_BODY(listen_bound, tc)
{
- struct sockaddr_un sun;
- /* ATF's isolation mechanisms will guarantee uniqueness of this file */
- const char *path = "sock";
- int s, r, l;
-
- s = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
- ATF_REQUIRE(s >= 0);
+ int s;
- bzero(&sun, sizeof(sun));
- sun.sun_family = AF_LOCAL;
- sun.sun_len = sizeof(sun);
- strlcpy(sun.sun_path, path, sizeof(sun.sun_path));
- r = bind(s, (struct sockaddr *)&sun, sizeof(sun));
- l = listen(s, -1);
- ATF_CHECK_EQ(0, r);
- ATF_CHECK_EQ(0, l);
+ (void)mk_listening_socket(&s);
close(s);
}
@@ -477,27 +484,15 @@
ATF_TC_WITHOUT_HEAD(connect);
ATF_TC_BODY(connect, tc)
{
- struct sockaddr_un sun;
- /* ATF's isolation mechanisms will guarantee uniqueness of this file */
- const char *path = "sock";
- int s, r, err, l, s2;
+ const struct sockaddr_un *sun;
+ int s, err, s2;
- s = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
- ATF_REQUIRE(s >= 0);
-
- bzero(&sun, sizeof(sun));
- sun.sun_family = AF_LOCAL;
- sun.sun_len = sizeof(sun);
- strlcpy(sun.sun_path, path, sizeof(sun.sun_path));
- r = bind(s, (struct sockaddr *)&sun, sizeof(sun));
- l = listen(s, -1);
- ATF_CHECK_EQ(0, r);
- ATF_CHECK_EQ(0, l);
+ sun = mk_listening_socket(&s);
/* Create the other socket */
s2 = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
ATF_REQUIRE(s2 >= 0);
- err = connect(s2, (struct sockaddr*)&sun, sizeof(sun));
+ err = connect(s2, (struct sockaddr *)sun, sizeof(*sun));
if (err != 0) {
perror("connect");
atf_tc_fail("connect(2) failed");
@@ -670,7 +665,7 @@
ATF_TC_BODY(sendto_recvfrom, tc)
{
#ifdef TEST_SEQ_PACKET_SOURCE_ADDRESS
- const char* path;
+ const sockaddr_un *sun;
#endif
struct sockaddr_storage from;
int sv[2];
@@ -683,7 +678,7 @@
/* setup the socket pair */
#ifdef TEST_SEQ_PACKET_SOURCE_ADDRESS
- path =
+ sun =
#endif
mk_pair_of_sockets(sv);
@@ -714,7 +709,7 @@
* these checks may be reenabled
*/
ATF_CHECK_EQ(PF_LOCAL, from.ss_family);
- ATF_CHECK_STREQ(path, ((struct sockaddr_un*)&from)->sun_path);
+ ATF_CHECK_STREQ(sun->sun_path, ((struct sockaddr_un*)&from)->sun_path);
#endif
close(sv[0]);
close(sv[1]);
@@ -756,28 +751,17 @@
ATF_TC_WITHOUT_HEAD(shutdown_send);
ATF_TC_BODY(shutdown_send, tc)
{
- struct sockaddr_un sun;
- /* ATF's isolation mechanisms will guarantee uniqueness of this file */
- const char *path = "sock";
+ const struct sockaddr_un *sun;
const char *data = "data";
ssize_t datalen, ssize;
int s, err, s2;
- s = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
- ATF_REQUIRE(s >= 0);
-
- bzero(&sun, sizeof(sun));
- sun.sun_family = AF_LOCAL;
- sun.sun_len = sizeof(sun);
- strlcpy(sun.sun_path, path, sizeof(sun.sun_path));
- err = bind(s, (struct sockaddr *)&sun, sizeof(sun));
- err = listen(s, -1);
- ATF_CHECK_EQ(0, err);
+ sun = mk_listening_socket(&s);
/* Create the other socket */
s2 = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
ATF_REQUIRE(s2 >= 0);
- err = connect(s2, (struct sockaddr*)&sun, sizeof(sun));
+ err = connect(s2, (struct sockaddr *)sun, sizeof(*sun));
if (err != 0) {
perror("connect");
atf_tc_fail("connect(2) failed");
@@ -797,28 +781,17 @@
ATF_TC_WITHOUT_HEAD(shutdown_send_sigpipe);
ATF_TC_BODY(shutdown_send_sigpipe, tc)
{
- struct sockaddr_un sun;
- /* ATF's isolation mechanisms will guarantee uniqueness of this file */
- const char *path = "sock";
+ const struct sockaddr_un *sun;
const char *data = "data";
ssize_t datalen;
int s, err, s2;
- s = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
- ATF_REQUIRE(s >= 0);
-
- bzero(&sun, sizeof(sun));
- sun.sun_family = AF_LOCAL;
- sun.sun_len = sizeof(sun);
- strlcpy(sun.sun_path, path, sizeof(sun.sun_path));
- err = bind(s, (struct sockaddr *)&sun, sizeof(sun));
- err = listen(s, -1);
- ATF_CHECK_EQ(0, err);
+ sun = mk_listening_socket(&s);
/* Create the other socket */
s2 = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
ATF_REQUIRE(s2 >= 0);
- err = connect(s2, (struct sockaddr*)&sun, sizeof(sun));
+ err = connect(s2, (struct sockaddr *)sun, sizeof(*sun));
if (err != 0) {
perror("connect");
atf_tc_fail("connect(2) failed");
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Apr 30, 11:23 AM (13 h, 46 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17857030
Default Alt Text
D43852.diff (6 KB)
Attached To
Mode
D43852: tests/unix_seqpacket: provide function that returns bound & listening sock
Attached
Detach File
Event Timeline
Log In to Comment