Update after recents net_stack_driver.h changes and make build again.

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3928 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Philippe Houdoin
2003-07-10 01:15:40 +00:00
parent c692649c22
commit 2754c9f637
+52 -65
View File
@@ -162,7 +162,7 @@ connection_runner(void *_cookie)
net_area_info area[MAX_NET_AREAS]; net_area_info area[MAX_NET_AREAS];
net_command *command; net_command *command;
status_t status = B_OK; status_t status = B_OK;
uint8 *data; struct stack_driver_args *args;
int32 index; int32 index;
ssize_t bytes = read_port(cookie->localPort,&index,NULL,0); ssize_t bytes = read_port(cookie->localPort,&index,NULL,0);
if (bytes < B_OK) if (bytes < B_OK)
@@ -173,79 +173,71 @@ connection_runner(void *_cookie)
continue; continue;
} }
command = cookie->commands + index; command = cookie->commands + index;
if (clone_command_areas(area,command) < B_OK) { if (clone_command_areas(area, command) < B_OK) {
printf("could not clone command areas!\n"); printf("could not clone command areas!\n");
continue; continue;
} }
data = convert_to_local(&command->area[0],&area[0],command->data); args = convert_to_local(&command->area[0],&area[0], command->data);
printf("command %lx (index = %ld), buffer = %p, length = %ld, result = %ld\n",command->op,index,data,command->length,command->result); printf("command %lx (index = %ld), buffer = %p, length = %ld, result = %ld\n",
command->op, index, args, command->length, command->result);
switch (command->op) { switch (command->op) {
case NET_STACK_OPEN: case NET_STACK_OPEN:
{ cookie->openFlags = args->u.integer;
struct int_args *args = (struct int_args *)data; printf("opening socket, mode = %lx!\n", cookie->openFlags);
cookie->openFlags = args->value;
printf("opening socket, mode = %lx!\n",cookie->openFlags);
break; break;
}
case NET_STACK_CLOSE: case NET_STACK_CLOSE:
printf("closing socket...\n"); printf("closing socket...\n");
run = false; run = false;
break; break;
case NET_STACK_SOCKET: case NET_STACK_SOCKET:
{ printf("open a socket... family = %d, type = %d, proto = %d\n",
struct socket_args *args = (struct socket_args *)data; args->u.socket.family, args->u.socket.type, args->u.socket.proto);
printf("open a socket... family = %d, type = %d, proto = %d\n",args->family,args->type,args->proto);
status = core->socket_init(&cookie->socket); status = core->socket_init(&cookie->socket);
if (status == 0) if (status == 0)
status = core->socket_create(cookie->socket, args->family, args->type, args->proto); status = core->socket_create(cookie->socket, args->u.socket.family, args->u.socket.type, args->u.socket.proto);
break; break;
}
case NET_STACK_GETSOCKOPT: case NET_STACK_GETSOCKOPT:
case NET_STACK_SETSOCKOPT: case NET_STACK_SETSOCKOPT:
{
struct sockopt_args *sockopt = (struct sockopt_args *)data;
if (command->op == NET_STACK_GETSOCKOPT) { if (command->op == NET_STACK_GETSOCKOPT) {
status = core->socket_getsockopt(cookie->socket,sockopt->level,sockopt->option, status = core->socket_getsockopt(cookie->socket, args->u.sockopt.level, args->u.sockopt.option,
convert_to_local(&command->area[1],&area[1],sockopt->optval), convert_to_local(&command->area[1], &area[1], args->u.sockopt.optval),
(size_t *)&sockopt->optlen); (size_t *) &args->u.sockopt.optlen);
} else { } else {
status = core->socket_setsockopt(cookie->socket,sockopt->level,sockopt->option, status = core->socket_setsockopt(cookie->socket, args->u.sockopt.level, args->u.sockopt.option,
(const void *)convert_to_local(&command->area[1],&area[1],sockopt->optval), (const void *) convert_to_local(&command->area[1], &area[1], args->u.sockopt.optval),
sockopt->optlen); args->u.sockopt.optlen);
} }
break; break;
}
case NET_STACK_CONNECT: case NET_STACK_CONNECT:
case NET_STACK_BIND: case NET_STACK_BIND:
case NET_STACK_GETSOCKNAME: case NET_STACK_GETSOCKNAME:
case NET_STACK_GETPEERNAME: case NET_STACK_GETPEERNAME: {
{ caddr_t addr = (caddr_t) convert_to_local(&command->area[1], &area[1], args->u.sockaddr.addr);
struct sockaddr_args *args = (struct sockaddr_args *)data;
caddr_t addr = (caddr_t)convert_to_local(&command->area[1],&area[1],args->addr);
switch (command->op) { switch (command->op) {
case NET_STACK_CONNECT: case NET_STACK_CONNECT:
status = core->socket_connect(cookie->socket,addr,args->addrlen); status = core->socket_connect(cookie->socket, addr, args->u.sockaddr.addrlen);
break; break;
case NET_STACK_BIND: case NET_STACK_BIND:
status = core->socket_bind(cookie->socket,addr,args->addrlen); status = core->socket_bind(cookie->socket, addr, args->u.sockaddr.addrlen);
break; break;
case NET_STACK_GETSOCKNAME: case NET_STACK_GETSOCKNAME:
status = core->socket_getsockname(cookie->socket,(struct sockaddr *)addr,&args->addrlen); status = core->socket_getsockname(cookie->socket, (struct sockaddr *) addr, &args->u.sockaddr.addrlen);
break; break;
case NET_STACK_GETPEERNAME: case NET_STACK_GETPEERNAME:
status = core->socket_getpeername(cookie->socket,(struct sockaddr *)addr,&args->addrlen); status = core->socket_getpeername(cookie->socket,(struct sockaddr *) addr, &args->u.sockaddr.addrlen);
break; break;
} }
break; break;
} }
case NET_STACK_LISTEN: case NET_STACK_LISTEN:
status = core->socket_listen(cookie->socket,((struct int_args *)data)->value); status = core->socket_listen(cookie->socket, args->u.integer);
break; break;
case NET_STACK_GET_COOKIE: case NET_STACK_GET_COOKIE:
@@ -253,45 +245,42 @@ connection_runner(void *_cookie)
* in NET_STACK_ACCEPT opcode the cookie of the filedescriptor to * in NET_STACK_ACCEPT opcode the cookie of the filedescriptor to
* use for the new accepted socket * use for the new accepted socket
*/ */
*((void **)data) = cookie; *((void **) args) = cookie;
break; break;
case NET_STACK_ACCEPT: case NET_STACK_ACCEPT:
{ {
struct accept_args *args = (struct accept_args *)data; connection_cookie *otherCookie = (connection_cookie *) args->u.accept.cookie;
connection_cookie *otherCookie = (connection_cookie *)args->cookie; status = core->socket_accept(cookie->socket, &otherCookie->socket,
status = core->socket_accept(cookie->socket,&otherCookie->socket, convert_to_local(&command->area[1], &area[1], args->u.accept.addr),
convert_to_local(&command->area[1],&area[1],args->addr), &args->u.accept.addrlen);
&args->addrlen);
} }
case NET_STACK_SEND: case NET_STACK_SEND:
{ {
struct data_xfer_args *args = (struct data_xfer_args *)data;
struct iovec iov; struct iovec iov;
int flags = 0; int flags = 0;
iov.iov_base = convert_to_local(&command->area[1],&area[1],args->data); iov.iov_base = convert_to_local(&command->area[1], &area[1], args->u.transfer.data);
iov.iov_len = args->datalen; iov.iov_len = args->u.transfer.datalen;
status = core->socket_writev(cookie->socket,&iov,flags); status = core->socket_writev(cookie->socket, &iov, flags);
break; break;
} }
case NET_STACK_RECV: case NET_STACK_RECV:
{ {
struct data_xfer_args *args = (struct data_xfer_args *)data;
struct iovec iov; struct iovec iov;
int flags = 0; int flags = 0;
iov.iov_base = convert_to_local(&command->area[1],&area[1],args->data); iov.iov_base = convert_to_local(&command->area[1], &area[1], args->u.transfer.data);
iov.iov_len = args->datalen; iov.iov_len = args->u.transfer.datalen;
/* flags gets ignored here... */ /* flags gets ignored here... */
status = core->socket_readv(cookie->socket,&iov,&flags); status = core->socket_readv(cookie->socket, &iov, &flags);
break; break;
} }
case NET_STACK_RECVFROM: case NET_STACK_RECVFROM:
{ {
struct msghdr *msg = (struct msghdr *)data; struct msghdr *msg = (struct msghdr *) args;
int received; int received;
msg->msg_name = convert_to_local(&command->area[1],&area[1],msg->msg_name); msg->msg_name = convert_to_local(&command->area[1],&area[1],msg->msg_name);
@@ -309,7 +298,7 @@ connection_runner(void *_cookie)
} }
case NET_STACK_SENDTO: case NET_STACK_SENDTO:
{ {
struct msghdr *msg = (struct msghdr *)data; struct msghdr *msg = (struct msghdr *) args;
int sent; int sent;
msg->msg_name = convert_to_local(&command->area[1],&area[1],msg->msg_name); msg->msg_name = convert_to_local(&command->area[1],&area[1],msg->msg_name);
@@ -328,10 +317,10 @@ connection_runner(void *_cookie)
case NET_STACK_NOTIFY_SOCKET_EVENT: case NET_STACK_NOTIFY_SOCKET_EVENT:
{ {
struct notify_socket_event_args *args = (struct notify_socket_event_args *)data; struct notify_socket_event_args *nsea = (struct notify_socket_event_args *) args;
cookie->socket_event_port = args->notify_port; cookie->socket_event_port = nsea->notify_port;
cookie->notify_cookie = args->cookie; cookie->notify_cookie = nsea->cookie;
if (cookie->socket_event_port != -1) if (cookie->socket_event_port != -1)
// start notify socket event // start notify socket event
@@ -344,13 +333,11 @@ connection_runner(void *_cookie)
case NET_STACK_SYSCTL: case NET_STACK_SYSCTL:
{ {
struct sysctl_args *args = (struct sysctl_args *)data; status = core->net_sysctl(convert_to_local(&command->area[1],&area[1], args->u.sysctl.name),
args->u.sysctl.namelen, convert_to_local(&command->area[2],&area[2],args->u.sysctl.oldp),
status = core->net_sysctl(convert_to_local(&command->area[1],&area[1],args->name), convert_to_local(&command->area[3],&area[3],args->u.sysctl.oldlenp),
args->namelen,convert_to_local(&command->area[2],&area[2],args->oldp), convert_to_local(&command->area[4],&area[4],args->u.sysctl.newp),
convert_to_local(&command->area[3],&area[3],args->oldlenp), args->u.sysctl.newlen);
convert_to_local(&command->area[4],&area[4],args->newp),
args->newlen);
break; break;
} }
@@ -369,17 +356,17 @@ connection_runner(void *_cookie)
case OSIOCGIFCONF: case OSIOCGIFCONF:
case SIOCGIFCONF: case SIOCGIFCONF:
{ {
struct ifconf *ifc = (struct ifconf *)data; struct ifconf *ifc = (struct ifconf *) args;
ifc->ifc_buf = convert_to_local(&command->area[1],&area[1],ifc->ifc_buf); ifc->ifc_buf = convert_to_local(&command->area[1], &area[1], ifc->ifc_buf);
status = core->socket_ioctl(cookie->socket,command->op,(char *)data); status = core->socket_ioctl(cookie->socket, command->op, (char *) args);
ifc->ifc_buf = convert_to_foreign(&command->area[1],&area[1],ifc->ifc_buf); ifc->ifc_buf = convert_to_foreign(&command->area[1], &area[1], ifc->ifc_buf);
break; break;
} }
default: default:
status = core->socket_ioctl(cookie->socket,command->op,(char *)data); status = core->socket_ioctl(cookie->socket,command->op, (char *) args);
break; break;
} }
// mark the command as done // mark the command as done