Commit 37782e6e authored by Cyrill Gorcunov's avatar Cyrill Gorcunov

test: Update unix sockets

To include dgram bound && connected sockets, for example

CR_FD_UNIXSK: /home/cyrill/crtools/unixsk-2813.img
----------------------------------------
fd    3 type  1 state  1 namelen    0 backlog    0 id  19505 peer  19506
fd    4 type  1 state  1 namelen    0 backlog    0 id  19506 peer  19505
fd    5 type  2 state  7 namelen    0 backlog    0 id  19507 peer      0
fd    6 type  2 state  7 namelen   18 backlog   18 id  19508 peer      0 --> test-socket-bound
fd    7 type  2 state  7 namelen    0 backlog    0 id  19509 peer  19510
fd    8 type  2 state  7 namelen   17 backlog   17 id  19510 peer      0 --> test-socket-conn
fd    9 type  2 state  7 namelen   23 backlog   23 id  19511 peer  19511 --> test-socket-bound-conn
----------------------------------------

The last one is bound and connected.
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
parent dffaab57
...@@ -8,22 +8,26 @@ ...@@ -8,22 +8,26 @@
#include <sys/wait.h> #include <sys/wait.h>
#include <sys/un.h> #include <sys/un.h>
#define SK_NAME_BOUND "test-socket-bound" #define SK_NAME_BOUND "test-socket-bound"
#define SK_NAME_CONN "test-socket-conn" #define SK_NAME_CONN "test-socket-conn"
#define SK_NAME_BOUND_CONN "test-socket-bound-conn"
#define SK_DATA_PAIR "data-packet-pair" #define SK_DATA_PAIR "data-packet-pair"
#define SK_DATA_BOUND "data-packet-bound" #define SK_DATA_BOUND "data-packet-bound"
#define SK_DATA_CONN "data-packet-conn" #define SK_DATA_CONN "data-packet-conn"
#define SK_DATA_BOUND_CONN "data-packet-bound-conn"
int main(void) int main(void)
{ {
struct sockaddr_un name_bound; struct sockaddr_un name_bound;
struct sockaddr_un name_conn; struct sockaddr_un name_conn;
struct sockaddr_un name_bound_conn;
int stream_sock[2]; int stream_sock[2];
int sk_dgram_bound_client; int sk_dgram_bound_client;
int sk_dgram_bound_server; int sk_dgram_bound_server;
int sk_dgram_conn_client; int sk_dgram_conn_client;
int sk_dgram_conn_server; int sk_dgram_conn_server;
int sk_dgram_bound_conn;
char buf[64]; char buf[64];
int ret; int ret;
...@@ -36,26 +40,31 @@ int main(void) ...@@ -36,26 +40,31 @@ int main(void)
sk_dgram_bound_server = socket(AF_UNIX, SOCK_DGRAM, 0); sk_dgram_bound_server = socket(AF_UNIX, SOCK_DGRAM, 0);
sk_dgram_conn_client = socket(AF_UNIX, SOCK_DGRAM, 0); sk_dgram_conn_client = socket(AF_UNIX, SOCK_DGRAM, 0);
sk_dgram_conn_server = socket(AF_UNIX, SOCK_DGRAM, 0); sk_dgram_conn_server = socket(AF_UNIX, SOCK_DGRAM, 0);
sk_dgram_bound_conn = socket(AF_UNIX, SOCK_DGRAM, 0);
if (sk_dgram_conn_server < 0 || if (sk_dgram_conn_server < 0 ||
sk_dgram_bound_server < 0 || sk_dgram_bound_server < 0 ||
sk_dgram_conn_client < 0 || sk_dgram_conn_client < 0 ||
sk_dgram_conn_server < 0) { sk_dgram_conn_server < 0 ||
sk_dgram_bound_conn < 0) {
perror("socket"); perror("socket");
exit(1); exit(1);
} }
unlink(SK_NAME_BOUND); unlink(SK_NAME_BOUND);
unlink(SK_NAME_CONN); unlink(SK_NAME_CONN);
unlink(SK_NAME_BOUND_CONN);
printf("sk_dgram_bound_client: %d\n" printf("sk_dgram_bound_client: %d\n"
"sk_dgram_bound_server: %d\n" "sk_dgram_bound_server: %d\n"
"sk_dgram_conn_client: %d\n" "sk_dgram_conn_client: %d\n"
"sk_dgram_conn_server: %d\n", "sk_dgram_conn_server: %d\n"
"sk_dgram_bound_conn: %d\n",
sk_dgram_bound_client, sk_dgram_bound_client,
sk_dgram_bound_server, sk_dgram_bound_server,
sk_dgram_conn_client, sk_dgram_conn_client,
sk_dgram_conn_server); sk_dgram_conn_server,
sk_dgram_bound_conn);
name_bound.sun_family = AF_UNIX; name_bound.sun_family = AF_UNIX;
strcpy(name_bound.sun_path, SK_NAME_BOUND); strcpy(name_bound.sun_path, SK_NAME_BOUND);
...@@ -63,6 +72,9 @@ int main(void) ...@@ -63,6 +72,9 @@ int main(void)
name_conn.sun_family = AF_UNIX; name_conn.sun_family = AF_UNIX;
strcpy(name_conn.sun_path, SK_NAME_CONN); strcpy(name_conn.sun_path, SK_NAME_CONN);
name_bound_conn.sun_family = AF_UNIX;
strcpy(name_bound_conn.sun_path, SK_NAME_BOUND_CONN);
ret = bind(sk_dgram_bound_server, &name_bound, sizeof(name_bound)); ret = bind(sk_dgram_bound_server, &name_bound, sizeof(name_bound));
if (ret) { if (ret) {
perror("bind"); perror("bind");
...@@ -75,12 +87,24 @@ int main(void) ...@@ -75,12 +87,24 @@ int main(void)
exit(1); exit(1);
} }
ret = bind(sk_dgram_bound_conn, &name_bound_conn, sizeof(name_bound_conn));
if (ret) {
perror("bind");
exit(1);
}
ret = connect(sk_dgram_conn_client, &name_conn, sizeof(name_conn)); ret = connect(sk_dgram_conn_client, &name_conn, sizeof(name_conn));
if (ret) { if (ret) {
perror("connect"); perror("connect");
exit(1); exit(1);
} }
ret = connect(sk_dgram_bound_conn, &name_bound_conn, sizeof(name_bound_conn));
if (ret) {
perror("connect");
exit(1);
}
/* first packets */ /* first packets */
write(stream_sock[0], SK_DATA_PAIR, sizeof(SK_DATA_PAIR)); write(stream_sock[0], SK_DATA_PAIR, sizeof(SK_DATA_PAIR));
...@@ -90,16 +114,21 @@ int main(void) ...@@ -90,16 +114,21 @@ int main(void)
write(sk_dgram_conn_client, SK_DATA_CONN, sizeof(SK_DATA_CONN)); write(sk_dgram_conn_client, SK_DATA_CONN, sizeof(SK_DATA_CONN));
write(sk_dgram_bound_conn, SK_DATA_BOUND_CONN, sizeof(SK_DATA_BOUND_CONN));
while (1) { while (1) {
read(stream_sock[1], &buf, sizeof(buf)); read(stream_sock[1], &buf, sizeof(buf));
printf("stream : '%s'\n", buf); printf("stream : '%s'\n", buf);
read(sk_dgram_bound_server, &buf, sizeof(buf)); read(sk_dgram_bound_server, &buf, sizeof(buf));
printf("dgram-bound : '%s'\n", buf); printf("dgram-bound : '%s'\n", buf);
read(sk_dgram_conn_server, &buf, sizeof(buf)); read(sk_dgram_conn_server, &buf, sizeof(buf));
printf("dgram-conn : '%s'\n", buf); printf("dgram-conn : '%s'\n", buf);
read(sk_dgram_bound_conn, &buf, sizeof(buf));
printf("dgram-bound-conn : '%s'\n", buf);
/* /*
* checkpoint should be done here, * checkpoint should be done here,
...@@ -114,6 +143,8 @@ int main(void) ...@@ -114,6 +143,8 @@ int main(void)
&name_bound, sizeof(name_bound)); &name_bound, sizeof(name_bound));
write(sk_dgram_conn_client, SK_DATA_CONN, sizeof(SK_DATA_CONN)); write(sk_dgram_conn_client, SK_DATA_CONN, sizeof(SK_DATA_CONN));
write(sk_dgram_bound_conn, SK_DATA_BOUND_CONN, sizeof(SK_DATA_BOUND_CONN));
} }
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment