diff options
Diffstat (limited to 'net/sctp/bind_addr.c')
| -rw-r--r-- | net/sctp/bind_addr.c | 17 | 
1 files changed, 16 insertions, 1 deletions
diff --git a/net/sctp/bind_addr.c b/net/sctp/bind_addr.c index 83e3011c19ca..4ece451c8d27 100644 --- a/net/sctp/bind_addr.c +++ b/net/sctp/bind_addr.c @@ -430,7 +430,7 @@ union sctp_addr *sctp_find_unmatch_addr(struct sctp_bind_addr	*bp,  	list_for_each_entry(laddr, &bp->address_list, list) {  		addr_buf = (union sctp_addr *)addrs;  		for (i = 0; i < addrcnt; i++) { -			addr = (union sctp_addr *)addr_buf; +			addr = addr_buf;  			af = sctp_get_af_specific(addr->v4.sin_family);  			if (!af)  				break; @@ -534,6 +534,21 @@ int sctp_in_scope(const union sctp_addr *addr, sctp_scope_t scope)  	return 0;  } +int sctp_is_ep_boundall(struct sock *sk) +{ +	struct sctp_bind_addr *bp; +	struct sctp_sockaddr_entry *addr; + +	bp = &sctp_sk(sk)->ep->base.bind_addr; +	if (sctp_list_single_entry(&bp->address_list)) { +		addr = list_entry(bp->address_list.next, +				  struct sctp_sockaddr_entry, list); +		if (sctp_is_any(sk, &addr->a)) +			return 1; +	} +	return 0; +} +  /********************************************************************   * 3rd Level Abstractions   ********************************************************************/  |