Commit 945e5abc authored by Wei Yongjun's avatar Wei Yongjun Committed by Vlad Yasevich

sctp: fix the error code when ASCONF is received with invalid address

Use Unresolvable Address error cause instead of Invalid Mandatory
Parameter error cause when process ASCONF chunk with invalid address
since address parameters are not mandatory in the ASCONF chunk.
Signed-off-by: default avatarWei Yongjun <yjwei@cn.fujitsu.com>
Signed-off-by: default avatarVlad Yasevich <vladislav.yasevich@hp.com>
parent a987f762
...@@ -2864,19 +2864,19 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc, ...@@ -2864,19 +2864,19 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc,
switch (addr_param->v4.param_hdr.type) { switch (addr_param->v4.param_hdr.type) {
case SCTP_PARAM_IPV6_ADDRESS: case SCTP_PARAM_IPV6_ADDRESS:
if (!asoc->peer.ipv6_address) if (!asoc->peer.ipv6_address)
return SCTP_ERROR_INV_PARAM; return SCTP_ERROR_DNS_FAILED;
break; break;
case SCTP_PARAM_IPV4_ADDRESS: case SCTP_PARAM_IPV4_ADDRESS:
if (!asoc->peer.ipv4_address) if (!asoc->peer.ipv4_address)
return SCTP_ERROR_INV_PARAM; return SCTP_ERROR_DNS_FAILED;
break; break;
default: default:
return SCTP_ERROR_INV_PARAM; return SCTP_ERROR_DNS_FAILED;
} }
af = sctp_get_af_specific(param_type2af(addr_param->v4.param_hdr.type)); af = sctp_get_af_specific(param_type2af(addr_param->v4.param_hdr.type));
if (unlikely(!af)) if (unlikely(!af))
return SCTP_ERROR_INV_PARAM; return SCTP_ERROR_DNS_FAILED;
af->from_addr_param(&addr, addr_param, htons(asoc->peer.port), 0); af->from_addr_param(&addr, addr_param, htons(asoc->peer.port), 0);
...@@ -2886,7 +2886,7 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc, ...@@ -2886,7 +2886,7 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc,
* make sure we check for that) * make sure we check for that)
*/ */
if (!af->is_any(&addr) && !af->addr_valid(&addr, NULL, asconf->skb)) if (!af->is_any(&addr) && !af->addr_valid(&addr, NULL, asconf->skb))
return SCTP_ERROR_INV_PARAM; return SCTP_ERROR_DNS_FAILED;
switch (asconf_param->param_hdr.type) { switch (asconf_param->param_hdr.type) {
case SCTP_PARAM_ADD_IP: case SCTP_PARAM_ADD_IP:
...@@ -2954,7 +2954,7 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc, ...@@ -2954,7 +2954,7 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc,
peer = sctp_assoc_lookup_paddr(asoc, &addr); peer = sctp_assoc_lookup_paddr(asoc, &addr);
if (!peer) if (!peer)
return SCTP_ERROR_INV_PARAM; return SCTP_ERROR_DNS_FAILED;
sctp_assoc_set_primary(asoc, peer); sctp_assoc_set_primary(asoc, peer);
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment