19 #include <sys/socket.h>
23 #include <arpa/inet.h>
25 #include <netinet/tcp.h>
28 #include "usbip_common.h"
73 static ssize_t usbip_net_xmit(
int sockfd,
void *buff,
size_t bufflen,
84 nbytes =
send(sockfd, buff, bufflen, 0);
95 }
while (bufflen > 0);
102 return usbip_net_xmit(sockfd, buff, bufflen, 0);
107 return usbip_net_xmit(sockfd, buff, bufflen, 1);
115 memset(&op_common, 0,
sizeof(op_common));
125 dbg(
"usbip_net_send failed: %d", rc);
137 memset(&op_common, 0,
sizeof(op_common));
141 dbg(
"usbip_net_recv failed: %d", rc);
148 dbg(
"version mismatch: %d %d", op_common.
version,
157 if (op_common.
code != *code) {
158 dbg(
"unexpected pdu %#0x for %#0x", op_common.
code,
165 dbg(
"request failed at peer: %d", op_common.
status);
169 *code = op_common.
code;
183 dbg(
"setsockopt: SO_REUSEADDR");
195 dbg(
"setsockopt: TCP_NODELAY");
207 dbg(
"setsockopt: SO_KEEPALIVE");
217 struct addrinfo hints, *
res, *
rp;
221 memset(&hints, 0,
sizeof(hints));
226 ret = getaddrinfo(hostname, service, &hints, &res);
228 dbg(
"getaddrinfo: %s service %s: %s", hostname, service,
234 for (rp = res;
rp; rp = rp->ai_next) {
235 sockfd =
socket(rp->ai_family, rp->ai_socktype,
245 if (connect(sockfd, rp->ai_addr, rp->ai_addrlen) == 0)