return (error);
}
+void
+so_pru_detach_direct(struct socket *so)
+{
+ struct netmsg_pru_detach msg;
+ netisr_fn_t func = so->so_proto->pr_usrreqs->pru_detach;
+
+ netmsg_init(&msg.base, so, &netisr_adone_rport, 0, func);
+ msg.base.lmsg.ms_flags &= ~(MSGF_REPLY | MSGF_DONE);
+ msg.base.lmsg.ms_flags |= MSGF_SYNC;
+ func((netmsg_t)&msg);
+ KKASSERT(msg.base.lmsg.ms_flags & MSGF_DONE);
+}
+
int
so_pru_disconnect(struct socket *so)
{
return (error);
}
+void
+so_pru_disconnect_direct(struct socket *so)
+{
+ struct netmsg_pru_disconnect msg;
+ netisr_fn_t func = so->so_proto->pr_usrreqs->pru_disconnect;
+
+ netmsg_init(&msg.base, so, &netisr_adone_rport, 0, func);
+ msg.base.lmsg.ms_flags &= ~(MSGF_REPLY | MSGF_DONE);
+ msg.base.lmsg.ms_flags |= MSGF_SYNC;
+ func((netmsg_t)&msg);
+ KKASSERT(msg.base.lmsg.ms_flags & MSGF_DONE);
+}
+
int
so_pru_listen(struct socket *so, struct thread *td)
{