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
......@@ -10,20 +10,24 @@
#define SK_NAME_BOUND "test-socket-bound"
#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_BOUND "data-packet-bound"
#define SK_DATA_CONN "data-packet-conn"
#define SK_DATA_BOUND_CONN "data-packet-bound-conn"
int main(void)
{
struct sockaddr_un name_bound;
struct sockaddr_un name_conn;
struct sockaddr_un name_bound_conn;
int stream_sock[2];
int sk_dgram_bound_client;
int sk_dgram_bound_server;
int sk_dgram_conn_client;
int sk_dgram_conn_server;
int sk_dgram_bound_conn;
char buf[64];
int ret;
......@@ -36,26 +40,31 @@ int main(void)
sk_dgram_bound_server = 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_bound_conn = socket(AF_UNIX, SOCK_DGRAM, 0);
if (sk_dgram_conn_server < 0 ||
sk_dgram_bound_server < 0 ||
sk_dgram_conn_client < 0 ||
sk_dgram_conn_server < 0) {
sk_dgram_conn_server < 0 ||
sk_dgram_bound_conn < 0) {
perror("socket");
exit(1);
}
unlink(SK_NAME_BOUND);
unlink(SK_NAME_CONN);
unlink(SK_NAME_BOUND_CONN);
printf("sk_dgram_bound_client: %d\n"
"sk_dgram_bound_server: %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_server,
sk_dgram_conn_client,
sk_dgram_conn_server);
sk_dgram_conn_server,
sk_dgram_bound_conn);
name_bound.sun_family = AF_UNIX;
strcpy(name_bound.sun_path, SK_NAME_BOUND);
......@@ -63,6 +72,9 @@ int main(void)
name_conn.sun_family = AF_UNIX;
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));
if (ret) {
perror("bind");
......@@ -75,12 +87,24 @@ int main(void)
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));
if (ret) {
perror("connect");
exit(1);
}
ret = connect(sk_dgram_bound_conn, &name_bound_conn, sizeof(name_bound_conn));
if (ret) {
perror("connect");
exit(1);
}
/* first packets */
write(stream_sock[0], SK_DATA_PAIR, sizeof(SK_DATA_PAIR));
......@@ -90,6 +114,8 @@ int main(void)
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) {
read(stream_sock[1], &buf, sizeof(buf));
......@@ -101,6 +127,9 @@ int main(void)
read(sk_dgram_conn_server, &buf, sizeof(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,
* we don't support queued data yet.
......@@ -114,6 +143,8 @@ int main(void)
&name_bound, sizeof(name_bound));
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;
......
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