|
|
@@ -335,16 +335,14 @@ static struct sctp_af *sctp_sockaddr_af(struct sctp_sock *opt,
|
|
|
if (len < sizeof (struct sockaddr))
|
|
|
return NULL;
|
|
|
|
|
|
+ if (!opt->pf->af_supported(addr->sa.sa_family, opt))
|
|
|
+ return NULL;
|
|
|
+
|
|
|
/* V4 mapped address are really of AF_INET family */
|
|
|
if (addr->sa.sa_family == AF_INET6 &&
|
|
|
- ipv6_addr_v4mapped(&addr->v6.sin6_addr)) {
|
|
|
- if (!opt->pf->af_supported(AF_INET, opt))
|
|
|
- return NULL;
|
|
|
- } else {
|
|
|
- /* Does this PF support this AF? */
|
|
|
- if (!opt->pf->af_supported(addr->sa.sa_family, opt))
|
|
|
- return NULL;
|
|
|
- }
|
|
|
+ ipv6_addr_v4mapped(&addr->v6.sin6_addr) &&
|
|
|
+ !opt->pf->af_supported(AF_INET, opt))
|
|
|
+ return NULL;
|
|
|
|
|
|
/* If we get this far, af is valid. */
|
|
|
af = sctp_get_af_specific(addr->sa.sa_family);
|