Ticket #18534: socketpairtest.c

File socketpairtest.c, 902 bytes (added by kohlschuetter, 10 months ago)

test case; compile with "gcc -o socketpairtest -lnetwork socketpairtest.c"

Line 
1#include <stdio.h>
2#include <sys/socket.h>
3#include <stdbool.h>
4
5int check(int fd, bool peer) {
6
7 struct sockaddr_storage addr = {0};
8 socklen_t len = sizeof(addr);
9 int ret;
10 if(peer) {
11 ret = getpeername(fd, (struct sockaddr *)&addr, &len);
12 } else {
13 ret = getsockname(fd, (struct sockaddr *)&addr, &len);
14 }
15 if(ret) {
16 if(peer) {
17 perror("peername");
18 } else {
19 perror("sockname");
20 }
21 return -1;
22 }
23 return (int)len;
24}
25
26int main() {
27 int fds[2];
28 int domain;
29 domain = AF_UNIX;
30 // domain = AF_INET; // works for AF_INET
31 printf("Domain: %i\n", domain);
32 int ret = socketpair(domain, SOCK_STREAM, 0, fds);
33 if(ret) {
34 perror("Could not get socketpair");
35 return 1;
36 }
37 printf("FDs: a=%i b=%i\n", fds[0], fds[1]);
38 printf("Lengths: La=%i Lb=%i Ra=%i Rb=%i\n"
39 , check(fds[0], false)
40 , check(fds[1], false)
41 , check(fds[0], true)
42 , check(fds[1], true)
43 );
44
45 return 0;
46}