Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 259499
b: refs/heads/master
c: 1e35d87
h: refs/heads/master
i:
  259497: da7538b
  259495: 7c7431c
v: v3
  • Loading branch information
matt mooney authored and Greg Kroah-Hartman committed Jun 7, 2011
1 parent 9347020 commit 7574354
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 66 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d2c15e2580ac4ed73f0a25a69843d51211e9c620
refs/heads/master: 1e35d87d63c1cb954d3169b893898a12b746dadd
73 changes: 33 additions & 40 deletions trunk/drivers/staging/usbip/userspace/src/usbip_network.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@
* Copyright (C) 2005-2007 Takahiro Hirofuchi
*/

#include <sys/socket.h>
#include <arpa/inet.h>

#include <string.h>

#include <netdb.h>
#include <netinet/tcp.h>
#include <unistd.h>

#include "usbip_common.h"
#include "usbip_network.h"

void pack_uint32_t(int pack, uint32_t *num)
Expand Down Expand Up @@ -186,66 +196,49 @@ int usbip_set_keepalive(int sockfd)
return ret;
}

/* IPv6 Ready */
/*
* moved here from vhci_attach.c
* IPv6 Ready
*/
int tcp_connect(char *hostname, char *service)
int usbip_net_tcp_connect(char *hostname, char *port)
{
struct addrinfo hints, *res, *res0;
struct addrinfo hints, *res, *rp;
int sockfd;
int err;

int ret;

memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;

/* get all possible addresses */
err = getaddrinfo(hostname, service, &hints, &res0);
if (err) {
err("%s %s: %s", hostname, service, gai_strerror(err));
return -1;
ret = getaddrinfo(hostname, port, &hints, &res);
if (ret < 0) {
dbg("getaddrinfo: %s port %s: %s", hostname, port,
gai_strerror(ret));
return ret;
}

/* try all the addresses */
for (res = res0; res; res = res->ai_next) {
char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];

err = getnameinfo(res->ai_addr, res->ai_addrlen,
hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV);
if (err) {
err("%s %s: %s", hostname, service, gai_strerror(err));
continue;
}

dbg("trying %s port %s\n", hbuf, sbuf);

sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (sockfd < 0) {
err("socket");
/* try the addresses */
for (rp = res; rp; rp = rp->ai_next) {
sockfd = socket(rp->ai_family, rp->ai_socktype,
rp->ai_protocol);
if (sockfd < 0)
continue;
}

/* should set TCP_NODELAY for usbip */
usbip_set_nodelay(sockfd);
/* TODO: write code for heatbeat */
/* TODO: write code for heartbeat */
usbip_set_keepalive(sockfd);

err = connect(sockfd, res->ai_addr, res->ai_addrlen);
if (err < 0) {
close(sockfd);
continue;
}
if (connect(sockfd, rp->ai_addr, rp->ai_addrlen) == 0)
break;

/* connected */
dbg("connected to %s:%s", hbuf, sbuf);
freeaddrinfo(res0);
return sockfd;
close(sockfd);
}

if (!rp)
return EAI_SYSTEM;

dbg("%s:%s, %s", hostname, service, "no destination to connect to");
freeaddrinfo(res0);
freeaddrinfo(res);

return -1;
return sockfd;
}
37 changes: 12 additions & 25 deletions trunk/drivers/staging/usbip/userspace/src/usbip_network.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,20 @@
* Copyright (C) 2005-2007 Takahiro Hirofuchi
*/

#ifndef _USBIP_NETWORK_H
#define _USBIP_NETWORK_H
#ifndef __USBIP_NETWORK_H
#define __USBIP_NETWORK_H

#include "usbip.h"
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/tcp.h>
#ifdef HAVE_CONFIG_H
#include "../config.h"
#endif

#include <sys/types.h>
#include <sysfs/libsysfs.h>

/* -------------------------------------------------- */
/* Define Protocol Format */
/* -------------------------------------------------- */
#include <stdint.h>

#define USBIP_PORT 3240
#define USBIP_PORT_STRING "3240"

/* ---------------------------------------------------------------------- */
/* Common header for all the kinds of PDUs. */
Expand All @@ -38,7 +39,6 @@ struct op_common {
pack_uint32_t(pack, &(op_common)->status );\
} while (0)


/* ---------------------------------------------------------------------- */
/* Dummy Code */
#define OP_UNSPEC 0x00
Expand All @@ -60,7 +60,6 @@ struct op_devinfo_reply {
struct usb_interface uinf[];
} __attribute__((packed));


/* ---------------------------------------------------------------------- */
/* Import a remote USB device. */
#define OP_IMPORT 0x03
Expand All @@ -83,8 +82,6 @@ struct op_import_reply {
pack_usb_device(pack, &(reply)->udev);\
} while (0)



/* ---------------------------------------------------------------------- */
/* Export a USB device to a remote host. */
#define OP_EXPORT 0x06
Expand Down Expand Up @@ -128,8 +125,6 @@ struct op_unexport_reply {
#define PACK_OP_UNEXPORT_REPLY(pack, reply) do {\
} while (0)



/* ---------------------------------------------------------------------- */
/* Negotiate IPSec encryption key. (still not used) */
#define OP_CRYPKEY 0x04
Expand Down Expand Up @@ -172,11 +167,6 @@ struct op_devlist_reply_extra {
pack_uint32_t(pack, &(reply)->ndev);\
} while (0)


/* -------------------------------------------------- */
/* Declare Prototype Function */
/* -------------------------------------------------- */

void pack_uint32_t(int pack, uint32_t *num);
void pack_uint16_t(int pack, uint16_t *num);
void pack_usb_device(int pack, struct usb_device *udev);
Expand All @@ -190,9 +180,6 @@ int usbip_set_reuseaddr(int sockfd);
int usbip_set_nodelay(int sockfd);
int usbip_set_keepalive(int sockfd);

int tcp_connect(char *hostname, char *service);
int usbip_net_tcp_connect(char *hostname, char *port);

#define USBIP_PORT 3240
#define USBIP_PORT_STRING "3240"

#endif
#endif /* __USBIP_NETWORK_H */

0 comments on commit 7574354

Please sign in to comment.