mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-10-14 13:56:17 +08:00
Update to FreeBSD head 2018-06-01
Git mirror commit fb63610a69b0eb7f69a201ba05c4c1a7a2739cf9. Update #3472.
This commit is contained in:
@@ -134,7 +134,7 @@ in6_pcbbind(struct inpcb *inp, struct sockaddr *nam,
|
||||
INP_WLOCK_ASSERT(inp);
|
||||
INP_HASH_WLOCK_ASSERT(pcbinfo);
|
||||
|
||||
if (TAILQ_EMPTY(&V_in6_ifaddrhead)) /* XXX broken! */
|
||||
if (CK_STAILQ_EMPTY(&V_in6_ifaddrhead)) /* XXX broken! */
|
||||
return (EADDRNOTAVAIL);
|
||||
if (inp->inp_lport || !IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_laddr))
|
||||
return (EINVAL);
|
||||
@@ -176,9 +176,11 @@ in6_pcbbind(struct inpcb *inp, struct sockaddr *nam,
|
||||
struct ifaddr *ifa;
|
||||
|
||||
sin6->sin6_port = 0; /* yech... */
|
||||
NET_EPOCH_ENTER();
|
||||
if ((ifa = ifa_ifwithaddr((struct sockaddr *)sin6)) ==
|
||||
NULL &&
|
||||
(inp->inp_flags & INP_BINDANY) == 0) {
|
||||
NET_EPOCH_EXIT();
|
||||
return (EADDRNOTAVAIL);
|
||||
}
|
||||
|
||||
@@ -191,11 +193,10 @@ in6_pcbbind(struct inpcb *inp, struct sockaddr *nam,
|
||||
if (ifa != NULL &&
|
||||
((struct in6_ifaddr *)ifa)->ia6_flags &
|
||||
(IN6_IFF_ANYCAST|IN6_IFF_NOTREADY|IN6_IFF_DETACHED)) {
|
||||
ifa_free(ifa);
|
||||
NET_EPOCH_EXIT();
|
||||
return (EADDRNOTAVAIL);
|
||||
}
|
||||
if (ifa != NULL)
|
||||
ifa_free(ifa);
|
||||
NET_EPOCH_EXIT();
|
||||
}
|
||||
if (lport) {
|
||||
struct inpcb *t;
|
||||
@@ -363,7 +364,7 @@ in6_pcbladdr(struct inpcb *inp, struct sockaddr *nam,
|
||||
if ((error = sa6_embedscope(sin6, V_ip6_use_defzone)) != 0)
|
||||
return(error);
|
||||
|
||||
if (!TAILQ_EMPTY(&V_in6_ifaddrhead)) {
|
||||
if (!CK_STAILQ_EMPTY(&V_in6_ifaddrhead)) {
|
||||
/*
|
||||
* If the destination address is UNSPECIFIED addr,
|
||||
* use the loopback addr, e.g ::1.
|
||||
@@ -819,8 +820,7 @@ in6_pcbpurgeif0(struct inpcbinfo *pcbinfo, struct ifnet *ifp)
|
||||
for (i = 0; i < im6o->im6o_num_memberships; i++) {
|
||||
if (im6o->im6o_membership[i]->in6m_ifp ==
|
||||
ifp) {
|
||||
in6_mc_leave(im6o->im6o_membership[i],
|
||||
NULL);
|
||||
in6_leavegroup(im6o->im6o_membership[i], NULL);
|
||||
gap++;
|
||||
} else if (gap != 0) {
|
||||
im6o->im6o_membership[i - gap] =
|
||||
|
Reference in New Issue
Block a user