mirror of
https://github.com/clearlinux/graphene.git
synced 2026-09-05 13:21:37 +00:00
52 lines
1.3 KiB
C
52 lines
1.3 KiB
C
/* Unit test for issues #92 and #644 */
|
|
|
|
#define _GNU_SOURCE
|
|
#include <assert.h>
|
|
#include <errno.h>
|
|
#include <netinet/tcp.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <sys/socket.h>
|
|
|
|
int main(int argc, char** argv) {
|
|
int ret;
|
|
socklen_t optlen; /* Option length */
|
|
|
|
int fd = socket(PF_INET, SOCK_STREAM, 0);
|
|
if (fd < 0) {
|
|
perror("socket failed");
|
|
return 1;
|
|
}
|
|
|
|
int so_type;
|
|
optlen = sizeof(so_type);
|
|
ret = getsockopt(fd, SOL_SOCKET, SO_TYPE, &so_type, &optlen);
|
|
if (ret < 0) {
|
|
perror("getsockopt(SOL_SOCKET, SO_TYPE) failed");
|
|
return 1;
|
|
}
|
|
|
|
if (optlen != sizeof(so_type) || so_type != SOCK_STREAM) {
|
|
fprintf(stderr, "getsockopt(SOL_SOCKET, SO_TYPE) failed\n");
|
|
return 1;
|
|
}
|
|
|
|
printf("getsockopt: Got socket type OK\n");
|
|
|
|
int so_flags = 1;
|
|
optlen = sizeof(so_flags);
|
|
ret = getsockopt(fd, SOL_TCP, TCP_NODELAY, (void*)&so_flags, &optlen);
|
|
if (ret < 0) {
|
|
perror("getsockopt(SOL_TCP, TCP_NODELAY) failed");
|
|
return 1;
|
|
}
|
|
|
|
if (optlen != sizeof(so_flags) || (so_flags != 0 && so_flags != 1)) {
|
|
fprintf(stderr, "getsockopt(SOL_TCP, TCP_NODELAY) failed\n");
|
|
return 1;
|
|
}
|
|
|
|
printf("getsockopt: Got TCP_NODELAY flag OK\n");
|
|
return 0;
|
|
}
|