|
|
| version 1.1, 2004/03/06 01:59:52 | version 1.2, 2004/03/06 19:40:28 |
|---|---|
| Line 45 | Line 45 |
| #include <net/netisr.h> | #include <net/netisr.h> |
| #include <net/netmsg.h> | #include <net/netmsg.h> |
| static void netmsg_pru_dispatcher(struct netmsg *msg); | static int netmsg_pru_dispatcher(struct netmsg *msg); |
| int | int |
| so_pru_abort(struct socket *so) | so_pru_abort(struct socket *so) |
| Line 58 so_pru_abort(struct socket *so) | Line 58 so_pru_abort(struct socket *so) |
| return ((*so->so_proto->pr_usrreqs->pru_abort)(so)); | return ((*so->so_proto->pr_usrreqs->pru_abort)(so)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_ABORT); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_ABORT); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_abort; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_abort; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 77 so_pru_accept(struct socket *so, struct | Line 77 so_pru_accept(struct socket *so, struct |
| return ((*so->so_proto->pr_usrreqs->pru_accept)(so, nam)); | return ((*so->so_proto->pr_usrreqs->pru_accept)(so, nam)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_ACCEPT); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_ACCEPT); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_accept; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_accept; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 98 so_pru_attach(struct socket *so, int pro | Line 98 so_pru_attach(struct socket *so, int pro |
| port = so->so_proto->pr_mport(NULL, NULL); | port = so->so_proto->pr_mport(NULL, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_ATTACH); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_ATTACH); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_attach; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_attach; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 120 so_pru_bind(struct socket *so, struct so | Line 120 so_pru_bind(struct socket *so, struct so |
| /* Send mesg to thread for new address. */ | /* Send mesg to thread for new address. */ |
| port = so->so_proto->pr_mport(NULL, nam); | port = so->so_proto->pr_mport(NULL, nam); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_BIND); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_BIND); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_bind; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_bind; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 141 so_pru_connect(struct socket *so, struct | Line 141 so_pru_connect(struct socket *so, struct |
| return ((*so->so_proto->pr_usrreqs->pru_connect)(so, nam, td)); | return ((*so->so_proto->pr_usrreqs->pru_connect)(so, nam, td)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_CONNECT); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_CONNECT); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_connect; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_connect; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 168 so_pru_connect2(struct socket *so1, stru | Line 168 so_pru_connect2(struct socket *so1, stru |
| */ | */ |
| panic("connect2 on socket type %d", so1->so_type); | panic("connect2 on socket type %d", so1->so_type); |
| port = so1->so_proto->pr_mport(so1, NULL); | port = so1->so_proto->pr_mport(so1, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_CONNECT2); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_CONNECT2); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so1->so_proto->pr_usrreqs->pru_connect2; | msg.nm_prufn = so1->so_proto->pr_usrreqs->pru_connect2; |
| msg.nm_so1 = so1; | msg.nm_so1 = so1; |
| Line 190 so_pru_control(struct socket *so, u_long | Line 190 so_pru_control(struct socket *so, u_long |
| ifp, td)); | ifp, td)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_CONTROL); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_CONTROL); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_control; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_control; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 213 so_pru_detach(struct socket *so) | Line 213 so_pru_detach(struct socket *so) |
| return ((*so->so_proto->pr_usrreqs->pru_detach)(so)); | return ((*so->so_proto->pr_usrreqs->pru_detach)(so)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_DETACH); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_DETACH); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_detach; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_detach; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 232 so_pru_disconnect(struct socket *so) | Line 232 so_pru_disconnect(struct socket *so) |
| return ((*so->so_proto->pr_usrreqs->pru_disconnect)(so)); | return ((*so->so_proto->pr_usrreqs->pru_disconnect)(so)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_DISCONNECT); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_DISCONNECT); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_disconnect; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_disconnect; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 251 so_pru_listen(struct socket *so, struct | Line 251 so_pru_listen(struct socket *so, struct |
| return ((*so->so_proto->pr_usrreqs->pru_listen)(so, td)); | return ((*so->so_proto->pr_usrreqs->pru_listen)(so, td)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_LISTEN); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_LISTEN); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_listen; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_listen; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 271 so_pru_peeraddr(struct socket *so, struc | Line 271 so_pru_peeraddr(struct socket *so, struc |
| return ((*so->so_proto->pr_usrreqs->pru_peeraddr)(so, nam)); | return ((*so->so_proto->pr_usrreqs->pru_peeraddr)(so, nam)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_PEERADDR); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_PEERADDR); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_peeraddr; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_peeraddr; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 291 so_pru_rcvd(struct socket *so, int flags | Line 291 so_pru_rcvd(struct socket *so, int flags |
| return ((*so->so_proto->pr_usrreqs->pru_rcvd)(so, flags)); | return ((*so->so_proto->pr_usrreqs->pru_rcvd)(so, flags)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_RCVD); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_RCVD); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_rcvd; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_rcvd; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 311 so_pru_rcvoob(struct socket *so, struct | Line 311 so_pru_rcvoob(struct socket *so, struct |
| return ((*so->so_proto->pr_usrreqs->pru_rcvoob)(so, m, flags)); | return ((*so->so_proto->pr_usrreqs->pru_rcvoob)(so, m, flags)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_RCVOOB); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_RCVOOB); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_rcvoob; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_rcvoob; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 334 so_pru_send(struct socket *so, int flags | Line 334 so_pru_send(struct socket *so, int flags |
| addr, control, td)); | addr, control, td)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_SEND); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_SEND); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_send; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_send; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 358 so_pru_sense(struct socket *so, struct s | Line 358 so_pru_sense(struct socket *so, struct s |
| return ((*so->so_proto->pr_usrreqs->pru_sense)(so, sb)); | return ((*so->so_proto->pr_usrreqs->pru_sense)(so, sb)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_SENSE); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_SENSE); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_sense; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_sense; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 378 so_pru_shutdown(struct socket *so) | Line 378 so_pru_shutdown(struct socket *so) |
| return ((*so->so_proto->pr_usrreqs->pru_shutdown)(so)); | return ((*so->so_proto->pr_usrreqs->pru_shutdown)(so)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_SHUTDOWN); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_SHUTDOWN); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_shutdown; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_shutdown; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 397 so_pru_sockaddr(struct socket *so, struc | Line 397 so_pru_sockaddr(struct socket *so, struc |
| return ((*so->so_proto->pr_usrreqs->pru_sockaddr)(so, nam)); | return ((*so->so_proto->pr_usrreqs->pru_sockaddr)(so, nam)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_SOCKADDR); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_SOCKADDR); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_sockaddr; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_sockaddr; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 419 so_pru_sopoll(struct socket *so, int eve | Line 419 so_pru_sopoll(struct socket *so, int eve |
| cred, td)); | cred, td)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PRU_SOPOLL); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PRU_SOPOLL); |
| msg.nm_handler = netmsg_pru_dispatcher; | msg.nm_handler = netmsg_pru_dispatcher; |
| msg.nm_prufn = so->so_proto->pr_usrreqs->pru_sopoll; | msg.nm_prufn = so->so_proto->pr_usrreqs->pru_sopoll; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 443 so_pr_ctloutput(struct socket *so, struc | Line 443 so_pr_ctloutput(struct socket *so, struc |
| return ((*so->so_proto->pr_ctloutput)(so, sopt)); | return ((*so->so_proto->pr_ctloutput)(so, sopt)); |
| port = so->so_proto->pr_mport(so, NULL); | port = so->so_proto->pr_mport(so, NULL); |
| lwkt_initmsg(&msg.nm_lmsg, port, CMD_NETMSG_PR_CTLOUTPUT); | lwkt_initmsg(&msg.nm_lmsg, CMD_NETMSG_PR_CTLOUTPUT); |
| msg.nm_handler = netmsg_pr_dispatcher; | msg.nm_handler = netmsg_pr_dispatcher; |
| msg.nm_prfn = so->so_proto->pr_ctloutput; | msg.nm_prfn = so->so_proto->pr_ctloutput; |
| msg.nm_so = so; | msg.nm_so = so; |
| Line 457 so_pr_ctloutput(struct socket *so, struc | Line 457 so_pr_ctloutput(struct socket *so, struc |
| * If we convert all the pru_usrreq functions for all the protocols | * If we convert all the pru_usrreq functions for all the protocols |
| * to take a message directly, this layer can go away. | * to take a message directly, this layer can go away. |
| */ | */ |
| static void | static int |
| netmsg_pru_dispatcher(struct netmsg *msg) | netmsg_pru_dispatcher(struct netmsg *msg) |
| { | { |
| int error; | int error; |
| Line 468 netmsg_pru_dispatcher(struct netmsg *msg | Line 468 netmsg_pru_dispatcher(struct netmsg *msg |
| struct netmsg_pru_abort *nm = (struct netmsg_pru_abort *)msg; | struct netmsg_pru_abort *nm = (struct netmsg_pru_abort *)msg; |
| error = nm->nm_prufn(nm->nm_so); | error = nm->nm_prufn(nm->nm_so); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_ACCEPT: | case CMD_NETMSG_PRU_ACCEPT: |
| Line 476 netmsg_pru_dispatcher(struct netmsg *msg | Line 475 netmsg_pru_dispatcher(struct netmsg *msg |
| struct netmsg_pru_accept *nm = (struct netmsg_pru_accept *)msg; | struct netmsg_pru_accept *nm = (struct netmsg_pru_accept *)msg; |
| error = nm->nm_prufn(nm->nm_so, nm->nm_nam); | error = nm->nm_prufn(nm->nm_so, nm->nm_nam); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_ATTACH: | case CMD_NETMSG_PRU_ATTACH: |
| Line 484 netmsg_pru_dispatcher(struct netmsg *msg | Line 482 netmsg_pru_dispatcher(struct netmsg *msg |
| struct netmsg_pru_attach *nm = (struct netmsg_pru_attach *)msg; | struct netmsg_pru_attach *nm = (struct netmsg_pru_attach *)msg; |
| error = nm->nm_prufn(nm->nm_so, nm->nm_proto, nm->nm_ai); | error = nm->nm_prufn(nm->nm_so, nm->nm_proto, nm->nm_ai); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_BIND: | case CMD_NETMSG_PRU_BIND: |
| Line 492 netmsg_pru_dispatcher(struct netmsg *msg | Line 489 netmsg_pru_dispatcher(struct netmsg *msg |
| struct netmsg_pru_bind *nm = (struct netmsg_pru_bind *)msg; | struct netmsg_pru_bind *nm = (struct netmsg_pru_bind *)msg; |
| error = nm->nm_prufn(nm->nm_so, nm->nm_nam, nm->nm_td); | error = nm->nm_prufn(nm->nm_so, nm->nm_nam, nm->nm_td); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_CONNECT: | case CMD_NETMSG_PRU_CONNECT: |
| Line 501 netmsg_pru_dispatcher(struct netmsg *msg | Line 497 netmsg_pru_dispatcher(struct netmsg *msg |
| (struct netmsg_pru_connect *)msg; | (struct netmsg_pru_connect *)msg; |
| error = nm->nm_prufn(nm->nm_so, nm->nm_nam, nm->nm_td); | error = nm->nm_prufn(nm->nm_so, nm->nm_nam, nm->nm_td); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_CONNECT2: | case CMD_NETMSG_PRU_CONNECT2: |
| Line 510 netmsg_pru_dispatcher(struct netmsg *msg | Line 505 netmsg_pru_dispatcher(struct netmsg *msg |
| (struct netmsg_pru_connect2 *)msg; | (struct netmsg_pru_connect2 *)msg; |
| error = nm->nm_prufn(nm->nm_so1, nm->nm_so2); | error = nm->nm_prufn(nm->nm_so1, nm->nm_so2); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_CONTROL: | case CMD_NETMSG_PRU_CONTROL: |
| Line 520 netmsg_pru_dispatcher(struct netmsg *msg | Line 514 netmsg_pru_dispatcher(struct netmsg *msg |
| error = nm->nm_prufn(nm->nm_so, nm->nm_cmd, nm->nm_data, | error = nm->nm_prufn(nm->nm_so, nm->nm_cmd, nm->nm_data, |
| nm->nm_ifp, nm->nm_td); | nm->nm_ifp, nm->nm_td); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_DETACH: | case CMD_NETMSG_PRU_DETACH: |
| Line 528 netmsg_pru_dispatcher(struct netmsg *msg | Line 521 netmsg_pru_dispatcher(struct netmsg *msg |
| struct netmsg_pru_detach *nm = (struct netmsg_pru_detach *)msg; | struct netmsg_pru_detach *nm = (struct netmsg_pru_detach *)msg; |
| error = nm->nm_prufn(nm->nm_so); | error = nm->nm_prufn(nm->nm_so); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_DISCONNECT: | case CMD_NETMSG_PRU_DISCONNECT: |
| Line 537 netmsg_pru_dispatcher(struct netmsg *msg | Line 529 netmsg_pru_dispatcher(struct netmsg *msg |
| (struct netmsg_pru_disconnect *)msg; | (struct netmsg_pru_disconnect *)msg; |
| error = nm->nm_prufn(nm->nm_so); | error = nm->nm_prufn(nm->nm_so); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_LISTEN: | case CMD_NETMSG_PRU_LISTEN: |
| Line 545 netmsg_pru_dispatcher(struct netmsg *msg | Line 536 netmsg_pru_dispatcher(struct netmsg *msg |
| struct netmsg_pru_listen *nm = (struct netmsg_pru_listen *)msg; | struct netmsg_pru_listen *nm = (struct netmsg_pru_listen *)msg; |
| error = nm->nm_prufn(nm->nm_so, nm->nm_td); | error = nm->nm_prufn(nm->nm_so, nm->nm_td); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_PEERADDR: | case CMD_NETMSG_PRU_PEERADDR: |
| Line 554 netmsg_pru_dispatcher(struct netmsg *msg | Line 544 netmsg_pru_dispatcher(struct netmsg *msg |
| (struct netmsg_pru_peeraddr *)msg; | (struct netmsg_pru_peeraddr *)msg; |
| error = nm->nm_prufn(nm->nm_so, nm->nm_nam); | error = nm->nm_prufn(nm->nm_so, nm->nm_nam); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_RCVD: | case CMD_NETMSG_PRU_RCVD: |
| Line 562 netmsg_pru_dispatcher(struct netmsg *msg | Line 551 netmsg_pru_dispatcher(struct netmsg *msg |
| struct netmsg_pru_rcvd *nm = (struct netmsg_pru_rcvd *)msg; | struct netmsg_pru_rcvd *nm = (struct netmsg_pru_rcvd *)msg; |
| error = nm->nm_prufn(nm->nm_so, nm->nm_flags); | error = nm->nm_prufn(nm->nm_so, nm->nm_flags); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_RCVOOB: | case CMD_NETMSG_PRU_RCVOOB: |
| Line 570 netmsg_pru_dispatcher(struct netmsg *msg | Line 558 netmsg_pru_dispatcher(struct netmsg *msg |
| struct netmsg_pru_rcvoob *nm = (struct netmsg_pru_rcvoob *)msg; | struct netmsg_pru_rcvoob *nm = (struct netmsg_pru_rcvoob *)msg; |
| error = nm->nm_prufn(nm->nm_so, nm->nm_m, nm->nm_flags); | error = nm->nm_prufn(nm->nm_so, nm->nm_m, nm->nm_flags); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_SEND: | case CMD_NETMSG_PRU_SEND: |
| Line 579 netmsg_pru_dispatcher(struct netmsg *msg | Line 566 netmsg_pru_dispatcher(struct netmsg *msg |
| error = nm->nm_prufn(nm->nm_so, nm->nm_flags, nm->nm_m, | error = nm->nm_prufn(nm->nm_so, nm->nm_flags, nm->nm_m, |
| nm->nm_addr, nm->nm_control, nm->nm_td); | nm->nm_addr, nm->nm_control, nm->nm_td); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_SENSE: | case CMD_NETMSG_PRU_SENSE: |
| Line 587 netmsg_pru_dispatcher(struct netmsg *msg | Line 573 netmsg_pru_dispatcher(struct netmsg *msg |
| struct netmsg_pru_sense *nm = (struct netmsg_pru_sense *)msg; | struct netmsg_pru_sense *nm = (struct netmsg_pru_sense *)msg; |
| error = nm->nm_prufn(nm->nm_so, nm->nm_stat); | error = nm->nm_prufn(nm->nm_so, nm->nm_stat); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_SHUTDOWN: | case CMD_NETMSG_PRU_SHUTDOWN: |
| Line 596 netmsg_pru_dispatcher(struct netmsg *msg | Line 581 netmsg_pru_dispatcher(struct netmsg *msg |
| (struct netmsg_pru_shutdown *)msg; | (struct netmsg_pru_shutdown *)msg; |
| error = nm->nm_prufn(nm->nm_so); | error = nm->nm_prufn(nm->nm_so); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_SOCKADDR: | case CMD_NETMSG_PRU_SOCKADDR: |
| Line 605 netmsg_pru_dispatcher(struct netmsg *msg | Line 589 netmsg_pru_dispatcher(struct netmsg *msg |
| (struct netmsg_pru_sockaddr *)msg; | (struct netmsg_pru_sockaddr *)msg; |
| error = nm->nm_prufn(nm->nm_so, nm->nm_nam); | error = nm->nm_prufn(nm->nm_so, nm->nm_nam); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PRU_SOPOLL: | case CMD_NETMSG_PRU_SOPOLL: |
| Line 615 netmsg_pru_dispatcher(struct netmsg *msg | Line 598 netmsg_pru_dispatcher(struct netmsg *msg |
| error = nm->nm_prufn(nm->nm_so, nm->nm_events, nm->nm_cred, | error = nm->nm_prufn(nm->nm_so, nm->nm_events, nm->nm_cred, |
| nm->nm_td); | nm->nm_td); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| default: | default: |
| panic("unknown netmsg %d", msg->nm_lmsg.ms_cmd); | panic("unknown netmsg %d", msg->nm_lmsg.ms_cmd); |
| break; | break; |
| } | } |
| return(error); | |
| } | } |
| /* | /* |
| * If we convert all the protosw pr_ functions for all the protocols | * If we convert all the protosw pr_ functions for all the protocols |
| * to take a message directly, this layer can go away. | * to take a message directly, this layer can go away. |
| */ | */ |
| void | int |
| netmsg_pr_dispatcher(struct netmsg *msg) | netmsg_pr_dispatcher(struct netmsg *msg) |
| { | { |
| int error = 0; | |
| switch (msg->nm_lmsg.ms_cmd) { | switch (msg->nm_lmsg.ms_cmd) { |
| case CMD_NETMSG_PR_CTLOUTPUT: | case CMD_NETMSG_PR_CTLOUTPUT: |
| { | { |
| struct netmsg_pr_ctloutput *nm = | struct netmsg_pr_ctloutput *nm = |
| (struct netmsg_pr_ctloutput *)msg; | (struct netmsg_pr_ctloutput *)msg; |
| int error; | |
| error = nm->nm_prfn(nm->nm_so, nm->nm_sopt); | error = nm->nm_prfn(nm->nm_so, nm->nm_sopt); |
| lwkt_replymsg(&msg->nm_lmsg, error); | |
| break; | break; |
| } | } |
| case CMD_NETMSG_PR_TIMEOUT: | case CMD_NETMSG_PR_TIMEOUT: |
| Line 653 netmsg_pr_dispatcher(struct netmsg *msg) | Line 636 netmsg_pr_dispatcher(struct netmsg *msg) |
| panic("unknown netmsg %d", msg->nm_lmsg.ms_cmd); | panic("unknown netmsg %d", msg->nm_lmsg.ms_cmd); |
| break; | break; |
| } | } |
| return(error); | |
| } | } |
| #endif | #endif |