11 #include <sys/types.h>
16 #include <netinet/in.h>
17 #include <arpa/inet.h>
22 static int net_port = 8765;
26 static int accept_loop(int listen_sk)
29 unsigned int len = sizeof(addr);
33 flags = fcntl(listen_sk, F_GETFL);
35 fcntl(listen_sk, F_SETFL, flags);
40 ret = poll(&pfd, 1, 100);
49 if (pfd.revents & POLLIN)
51 } while (!exit_backend);
56 sk = accept(listen_sk, &addr, &len);
58 log_err("fio: accept failed\n");
63 while (!exit_backend) {
66 ret = recv(sk, buf, 4096, 0);
68 if (!strncmp("FIO_QUIT", buf, 8)) {
72 parse_jobs_ini(buf, 1, 0);
78 if (errno == EAGAIN || errno == EINTR)
94 struct sockaddr_in saddr_in;
99 sk = socket(AF_INET, SOCK_STREAM, 0);
101 log_err("fio: socket\n");
106 if (setsockopt(sk, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) < 0) {
107 log_err("fio: setsockopt\n");
111 if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &opt, sizeof(opt)) < 0) {
112 td_verror(td, errno, "setsockopt");
117 saddr_in.sin_family = AF_INET;
118 saddr_in.sin_addr.s_addr = htonl(INADDR_ANY);
119 saddr_in.sin_port = htons(net_port);
121 if (bind(sk, (struct sockaddr *) &saddr_in, sizeof(saddr_in)) < 0) {
123 log_err("fio: bind\n");
127 if (listen(sk, 1) < 0) {
128 log_err("fio: listen\n");
133 if (getsockname(sk, &addr, &len) < 0) {
134 log_err("fio: getsockname");
138 return accept_loop(sk);