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_command *command;
status_t status = B_OK;
uint8 *data;
struct stack_driver_args *args;
int32 index;
ssize_t bytes = read_port(cookie->localPort,&index,NULL,0);
if (bytes < B_OK)
@@ -173,79 +173,71 @@ connection_runner(void *_cookie)
continue;
}
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");
continue;
}
data = 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);
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, args, command->length, command->result);
switch (command->op) {
case NET_STACK_OPEN:
{
struct int_args *args = (struct int_args *)data;
cookie->openFlags = args->value;
printf("opening socket, mode = %lx!\n",cookie->openFlags);
cookie->openFlags = args->u.integer;
printf("opening socket, mode = %lx!\n", cookie->openFlags);
break;
}
case NET_STACK_CLOSE:
printf("closing socket...\n");
run = false;
break;
case NET_STACK_SOCKET:
{
struct socket_args *args = (struct socket_args *)data;
printf("open a socket... family = %d, type = %d, proto = %d\n",args->family,args->type,args->proto);
printf("open a socket... family = %d, type = %d, proto = %d\n",
args->u.socket.family, args->u.socket.type, args->u.socket.proto);
status = core->socket_init(&cookie->socket);
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;
}
case NET_STACK_GETSOCKOPT:
case NET_STACK_SETSOCKOPT:
{
struct sockopt_args *sockopt = (struct sockopt_args *)data;
if (command->op == NET_STACK_GETSOCKOPT) {
status = core->socket_getsockopt(cookie->socket,sockopt->level,sockopt->option,
convert_to_local(&command->area[1],&area[1],sockopt->optval),
(size_t *)&sockopt->optlen);
status = core->socket_getsockopt(cookie->socket, args->u.sockopt.level, args->u.sockopt.option,
convert_to_local(&command->area[1], &area[1], args->u.sockopt.optval),
(size_t *) &args->u.sockopt.optlen);
} else {
status = core->socket_setsockopt(cookie->socket,sockopt->level,sockopt->option,
(const void *)convert_to_local(&command->area[1],&area[1],sockopt->optval),
sockopt->optlen);
status = core->socket_setsockopt(cookie->socket, args->u.sockopt.level, args->u.sockopt.option,
(const void *) convert_to_local(&command->area[1], &area[1], args->u.sockopt.optval),
args->u.sockopt.optlen);
}
break;
}
case NET_STACK_CONNECT:
case NET_STACK_BIND:
case NET_STACK_GETSOCKNAME:
case NET_STACK_GETPEERNAME:
{
struct sockaddr_args *args = (struct sockaddr_args *)data;
caddr_t addr = (caddr_t)convert_to_local(&command->area[1],&area[1],args->addr);
case NET_STACK_GETPEERNAME: {
caddr_t addr = (caddr_t) convert_to_local(&command->area[1], &area[1], args->u.sockaddr.addr);
switch (command->op) {
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;
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;
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;
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;
}
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;
case NET_STACK_GET_COOKIE:
@@ -253,45 +245,42 @@ connection_runner(void *_cookie)
* in NET_STACK_ACCEPT opcode the cookie of the filedescriptor to
* use for the new accepted socket
*/
*((void **)data) = cookie;
*((void **) args) = cookie;
break;
case NET_STACK_ACCEPT:
{
struct accept_args *args = (struct accept_args *)data;
connection_cookie *otherCookie = (connection_cookie *)args->cookie;
status = core->socket_accept(cookie->socket,&otherCookie->socket,
convert_to_local(&command->area[1],&area[1],args->addr),
&args->addrlen);
connection_cookie *otherCookie = (connection_cookie *) args->u.accept.cookie;
status = core->socket_accept(cookie->socket, &otherCookie->socket,
convert_to_local(&command->area[1], &area[1], args->u.accept.addr),
&args->u.accept.addrlen);
}
case NET_STACK_SEND:
{
struct data_xfer_args *args = (struct data_xfer_args *)data;
struct iovec iov;
int flags = 0;
iov.iov_base = convert_to_local(&command->area[1],&area[1],args->data);
iov.iov_len = args->datalen;
iov.iov_base = convert_to_local(&command->area[1], &area[1], args->u.transfer.data);
iov.iov_len = args->u.transfer.datalen;
status = core->socket_writev(cookie->socket,&iov,flags);
status = core->socket_writev(cookie->socket, &iov, flags);
break;
}
case NET_STACK_RECV:
{
struct data_xfer_args *args = (struct data_xfer_args *)data;
struct iovec iov;
int flags = 0;
iov.iov_base = convert_to_local(&command->area[1],&area[1],args->data);
iov.iov_len = args->datalen;
iov.iov_base = convert_to_local(&command->area[1], &area[1], args->u.transfer.data);
iov.iov_len = args->u.transfer.datalen;
/* flags gets ignored here... */
status = core->socket_readv(cookie->socket,&iov,&flags);
status = core->socket_readv(cookie->socket, &iov, &flags);
break;
}
case NET_STACK_RECVFROM:
{
struct msghdr *msg = (struct msghdr *)data;
struct msghdr *msg = (struct msghdr *) args;
int received;
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:
{
struct msghdr *msg = (struct msghdr *)data;
struct msghdr *msg = (struct msghdr *) args;
int sent;
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:
{
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->notify_cookie = args->cookie;
cookie->socket_event_port = nsea->notify_port;
cookie->notify_cookie = nsea->cookie;
if (cookie->socket_event_port != -1)
// start notify socket event
@@ -344,13 +333,11 @@ connection_runner(void *_cookie)
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->name),
args->namelen,convert_to_local(&command->area[2],&area[2],args->oldp),
convert_to_local(&command->area[3],&area[3],args->oldlenp),
convert_to_local(&command->area[4],&area[4],args->newp),
args->newlen);
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),
convert_to_local(&command->area[3],&area[3],args->u.sysctl.oldlenp),
convert_to_local(&command->area[4],&area[4],args->u.sysctl.newp),
args->u.sysctl.newlen);
break;
}
@@ -369,17 +356,17 @@ connection_runner(void *_cookie)
case OSIOCGIFCONF:
case SIOCGIFCONF:
{
struct ifconf *ifc = (struct ifconf *)data;
ifc->ifc_buf = convert_to_local(&command->area[1],&area[1],ifc->ifc_buf);
struct ifconf *ifc = (struct ifconf *) args;
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;
}
default:
status = core->socket_ioctl(cookie->socket,command->op,(char *)data);
status = core->socket_ioctl(cookie->socket,command->op, (char *) args);
break;
}
// mark the command as done