Message ID | 4CFEF74D.7020704@cn.fujitsu.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Wei Yongjun <yjwei@cn.fujitsu.com> Date: Wed, 08 Dec 2010 11:11:09 +0800 > SCTP_SET_PEER_PRIMARY_ADDR does not accpet v4mapped address, using > v4mapped address in SCTP_SET_PEER_PRIMARY_ADDR socket option will > get -EADDRNOTAVAIL error if v4map is enabled. This patch try to > fix it by mapping v4mapped address to v4 address if allowed. > > Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com> Vlad and other SCTP folks, please review this patch. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 12/07/2010 10:11 PM, Wei Yongjun wrote: > SCTP_SET_PEER_PRIMARY_ADDR does not accpet v4mapped address, using > v4mapped address in SCTP_SET_PEER_PRIMARY_ADDR socket option will > get -EADDRNOTAVAIL error if v4map is enabled. This patch try to > fix it by mapping v4mapped address to v4 address if allowed. > > Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com> Looks good. Acked-by: Vlad Yasevich <vladislav.yasevich@hp.com> -vlad > --- > net/sctp/socket.c | 8 ++++++++ > 1 files changed, 8 insertions(+), 0 deletions(-) > > diff --git a/net/sctp/socket.c b/net/sctp/socket.c > index 6bd5543..0b9ee34 100644 > --- a/net/sctp/socket.c > +++ b/net/sctp/socket.c > @@ -2932,6 +2932,7 @@ static int sctp_setsockopt_peer_primary_addr(struct sock *sk, char __user *optva > struct sctp_association *asoc = NULL; > struct sctp_setpeerprim prim; > struct sctp_chunk *chunk; > + struct sctp_af *af; > int err; > > sp = sctp_sk(sk); > @@ -2959,6 +2960,13 @@ static int sctp_setsockopt_peer_primary_addr(struct sock *sk, char __user *optva > if (!sctp_state(asoc, ESTABLISHED)) > return -ENOTCONN; > > + af = sctp_get_af_specific(prim.sspp_addr.ss_family); > + if (!af) > + return -EINVAL; > + > + if (!af->addr_valid((union sctp_addr *)&prim.sspp_addr, sp, NULL)) > + return -EADDRNOTAVAIL; > + > if (!sctp_assoc_lookup_laddr(asoc, (union sctp_addr *)&prim.sspp_addr)) > return -EADDRNOTAVAIL; > > > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Vladislav Yasevich <vladislav.yasevich@hp.com> Date: Fri, 10 Dec 2010 18:13:58 -0500 > On 12/07/2010 10:11 PM, Wei Yongjun wrote: >> SCTP_SET_PEER_PRIMARY_ADDR does not accpet v4mapped address, using >> v4mapped address in SCTP_SET_PEER_PRIMARY_ADDR socket option will >> get -EADDRNOTAVAIL error if v4map is enabled. This patch try to >> fix it by mapping v4mapped address to v4 address if allowed. >> >> Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com> > > Looks good. > > Acked-by: Vlad Yasevich <vladislav.yasevich@hp.com> Applied, thanks everyone. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 6bd5543..0b9ee34 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -2932,6 +2932,7 @@ static int sctp_setsockopt_peer_primary_addr(struct sock *sk, char __user *optva struct sctp_association *asoc = NULL; struct sctp_setpeerprim prim; struct sctp_chunk *chunk; + struct sctp_af *af; int err; sp = sctp_sk(sk); @@ -2959,6 +2960,13 @@ static int sctp_setsockopt_peer_primary_addr(struct sock *sk, char __user *optva if (!sctp_state(asoc, ESTABLISHED)) return -ENOTCONN; + af = sctp_get_af_specific(prim.sspp_addr.ss_family); + if (!af) + return -EINVAL; + + if (!af->addr_valid((union sctp_addr *)&prim.sspp_addr, sp, NULL)) + return -EADDRNOTAVAIL; + if (!sctp_assoc_lookup_laddr(asoc, (union sctp_addr *)&prim.sspp_addr)) return -EADDRNOTAVAIL;
SCTP_SET_PEER_PRIMARY_ADDR does not accpet v4mapped address, using v4mapped address in SCTP_SET_PEER_PRIMARY_ADDR socket option will get -EADDRNOTAVAIL error if v4map is enabled. This patch try to fix it by mapping v4mapped address to v4 address if allowed. Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com> --- net/sctp/socket.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html