Diff for /src/sys/kern/uipc_msg.c between versions 1.1 and 1.2

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 voidstatic 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.
  */   */
voidint
 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

Removed from v.1.1  
changed lines
  Added in v.1.2