pcb: Move an assignment into in_pcbdisconnect()
All callers of in_pcbdisconnect() clear the local address, so let's just do that in the function itself. Note that the inp's local address is not a parameter to the inp hash functions. No functional change intended. Reviewed by: glebius MFC after: 2 weeks Sponsored by: Klara, Inc. Sponsored by: Modirum MDPay Differential Revision: https://reviews.freebsd.org/D38362
This commit is contained in:
parent
b0ccf53f24
commit
2589ec0f36
@ -1460,6 +1460,7 @@ in_pcbdisconnect(struct inpcb *inp)
|
||||
INP_WLOCK_ASSERT(inp);
|
||||
INP_HASH_WLOCK_ASSERT(inp->inp_pcbinfo);
|
||||
|
||||
inp->inp_laddr.s_addr = INADDR_ANY;
|
||||
inp->inp_faddr.s_addr = INADDR_ANY;
|
||||
inp->inp_fport = 0;
|
||||
in_pcbrehash(inp);
|
||||
|
@ -1457,7 +1457,6 @@ udp_abort(struct socket *so)
|
||||
if (inp->inp_faddr.s_addr != INADDR_ANY) {
|
||||
INP_HASH_WLOCK(pcbinfo);
|
||||
in_pcbdisconnect(inp);
|
||||
inp->inp_laddr.s_addr = INADDR_ANY;
|
||||
INP_HASH_WUNLOCK(pcbinfo);
|
||||
soisdisconnected(so);
|
||||
}
|
||||
@ -1567,7 +1566,6 @@ udp_close(struct socket *so)
|
||||
if (inp->inp_faddr.s_addr != INADDR_ANY) {
|
||||
INP_HASH_WLOCK(pcbinfo);
|
||||
in_pcbdisconnect(inp);
|
||||
inp->inp_laddr.s_addr = INADDR_ANY;
|
||||
INP_HASH_WUNLOCK(pcbinfo);
|
||||
soisdisconnected(so);
|
||||
}
|
||||
@ -1644,7 +1642,6 @@ udp_disconnect(struct socket *so)
|
||||
}
|
||||
INP_HASH_WLOCK(pcbinfo);
|
||||
in_pcbdisconnect(inp);
|
||||
inp->inp_laddr.s_addr = INADDR_ANY;
|
||||
INP_HASH_WUNLOCK(pcbinfo);
|
||||
SOCK_LOCK(so);
|
||||
so->so_state &= ~SS_ISCONNECTED; /* XXX */
|
||||
|
@ -511,7 +511,8 @@ in6_pcbdisconnect(struct inpcb *inp)
|
||||
INP_WLOCK_ASSERT(inp);
|
||||
INP_HASH_WLOCK_ASSERT(inp->inp_pcbinfo);
|
||||
|
||||
bzero((caddr_t)&inp->in6p_faddr, sizeof(inp->in6p_faddr));
|
||||
memset(&inp->in6p_laddr, 0, sizeof(inp->in6p_laddr));
|
||||
memset(&inp->in6p_faddr, 0, sizeof(inp->in6p_faddr));
|
||||
inp->inp_fport = 0;
|
||||
/* clear flowinfo - draft-itojun-ipv6-flowlabel-api-00 */
|
||||
inp->inp_flow &= ~IPV6_FLOWLABEL_MASK;
|
||||
|
@ -976,7 +976,6 @@ udp6_abort(struct socket *so)
|
||||
if (!IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_faddr)) {
|
||||
INP_HASH_WLOCK(pcbinfo);
|
||||
in6_pcbdisconnect(inp);
|
||||
inp->in6p_laddr = in6addr_any;
|
||||
INP_HASH_WUNLOCK(pcbinfo);
|
||||
soisdisconnected(so);
|
||||
}
|
||||
@ -1093,7 +1092,6 @@ udp6_close(struct socket *so)
|
||||
if (!IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_faddr)) {
|
||||
INP_HASH_WLOCK(pcbinfo);
|
||||
in6_pcbdisconnect(inp);
|
||||
inp->in6p_laddr = in6addr_any;
|
||||
INP_HASH_WUNLOCK(pcbinfo);
|
||||
soisdisconnected(so);
|
||||
}
|
||||
@ -1240,7 +1238,6 @@ udp6_disconnect(struct socket *so)
|
||||
|
||||
INP_HASH_WLOCK(pcbinfo);
|
||||
in6_pcbdisconnect(inp);
|
||||
inp->in6p_laddr = in6addr_any;
|
||||
INP_HASH_WUNLOCK(pcbinfo);
|
||||
SOCK_LOCK(so);
|
||||
so->so_state &= ~SS_ISCONNECTED; /* XXX */
|
||||
|
Loading…
Reference in New Issue
Block a user