- Since divert protocol is not connection oriented, remove SS_ISCONNECTED flag
from divert sockets. - Remove div_disconnect() method, since it shouldn't be called now. - Remove div_abort() method. It was never called directly, since protocol doesn't have listen queue. It was called only from div_disconnect(), which is removed now. Reviewed by: rwatson, maxim Approved by: julian (mentor) MT5 after: 1 week MT4 after: 1 month
This commit is contained in:
parent
0c4b401f76
commit
c1384b5ae2
@ -415,12 +415,7 @@ div_attach(struct socket *so, int proto, struct thread *td)
|
|||||||
inp->inp_ip_p = proto;
|
inp->inp_ip_p = proto;
|
||||||
inp->inp_vflag |= INP_IPV4;
|
inp->inp_vflag |= INP_IPV4;
|
||||||
inp->inp_flags |= INP_HDRINCL;
|
inp->inp_flags |= INP_HDRINCL;
|
||||||
/* The socket is always "connected" because
|
|
||||||
we always know "where" to send the packet */
|
|
||||||
INP_UNLOCK(inp);
|
INP_UNLOCK(inp);
|
||||||
SOCK_LOCK(so);
|
|
||||||
so->so_state |= SS_ISCONNECTED;
|
|
||||||
SOCK_UNLOCK(so);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -441,32 +436,6 @@ div_detach(struct socket *so)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
div_abort(struct socket *so)
|
|
||||||
{
|
|
||||||
struct inpcb *inp;
|
|
||||||
|
|
||||||
INP_INFO_WLOCK(&divcbinfo);
|
|
||||||
inp = sotoinpcb(so);
|
|
||||||
if (inp == 0) {
|
|
||||||
INP_INFO_WUNLOCK(&divcbinfo);
|
|
||||||
return EINVAL; /* ??? possible? panic instead? */
|
|
||||||
}
|
|
||||||
INP_LOCK(inp);
|
|
||||||
soisdisconnected(so);
|
|
||||||
in_pcbdetach(inp);
|
|
||||||
INP_INFO_WUNLOCK(&divcbinfo);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
div_disconnect(struct socket *so)
|
|
||||||
{
|
|
||||||
if ((so->so_state & SS_ISCONNECTED) == 0)
|
|
||||||
return ENOTCONN;
|
|
||||||
return div_abort(so);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
div_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
|
div_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
|
||||||
{
|
{
|
||||||
@ -662,12 +631,10 @@ SYSCTL_PROC(_net_inet_divert, OID_AUTO, pcblist, CTLFLAG_RD, 0, 0,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct pr_usrreqs div_usrreqs = {
|
struct pr_usrreqs div_usrreqs = {
|
||||||
.pru_abort = div_abort,
|
|
||||||
.pru_attach = div_attach,
|
.pru_attach = div_attach,
|
||||||
.pru_bind = div_bind,
|
.pru_bind = div_bind,
|
||||||
.pru_control = in_control,
|
.pru_control = in_control,
|
||||||
.pru_detach = div_detach,
|
.pru_detach = div_detach,
|
||||||
.pru_disconnect = div_disconnect,
|
|
||||||
.pru_peeraddr = div_peeraddr,
|
.pru_peeraddr = div_peeraddr,
|
||||||
.pru_send = div_send,
|
.pru_send = div_send,
|
||||||
.pru_shutdown = div_shutdown,
|
.pru_shutdown = div_shutdown,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user