forked from mirrors/linux
		
	[SCTP]: Correctly set daddr for IPv6 sockets during peeloff
During peeloff of AF_INET6 socket, the inet6_sk(sk)->daddr wasn't set correctly since the code was assuming IPv4 only. Now we use a correct call to set the destination address. Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com> Acked-by: Sridhar Samudrala <sri@us.ibm.com>
This commit is contained in:
		
							parent
							
								
									66e1e3b20c
								
							
						
					
					
						commit
						d570ee490f
					
				
					 1 changed files with 3 additions and 1 deletions
				
			
		| 
						 | 
					@ -3550,6 +3550,7 @@ SCTP_STATIC int sctp_do_peeloff(struct sctp_association *asoc,
 | 
				
			||||||
	struct sock *sk = asoc->base.sk;
 | 
						struct sock *sk = asoc->base.sk;
 | 
				
			||||||
	struct socket *sock;
 | 
						struct socket *sock;
 | 
				
			||||||
	struct inet_sock *inetsk;
 | 
						struct inet_sock *inetsk;
 | 
				
			||||||
 | 
						struct sctp_af *af;
 | 
				
			||||||
	int err = 0;
 | 
						int err = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* An association cannot be branched off from an already peeled-off
 | 
						/* An association cannot be branched off from an already peeled-off
 | 
				
			||||||
| 
						 | 
					@ -3571,8 +3572,9 @@ SCTP_STATIC int sctp_do_peeloff(struct sctp_association *asoc,
 | 
				
			||||||
	/* Make peeled-off sockets more like 1-1 accepted sockets.
 | 
						/* Make peeled-off sockets more like 1-1 accepted sockets.
 | 
				
			||||||
	 * Set the daddr and initialize id to something more random
 | 
						 * Set the daddr and initialize id to something more random
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
 | 
						af = sctp_get_af_specific(asoc->peer.primary_addr.sa.sa_family);
 | 
				
			||||||
 | 
						af->to_sk_daddr(&asoc->peer.primary_addr, sk);
 | 
				
			||||||
	inetsk = inet_sk(sock->sk);
 | 
						inetsk = inet_sk(sock->sk);
 | 
				
			||||||
	inetsk->daddr = asoc->peer.primary_addr.v4.sin_addr.s_addr;
 | 
					 | 
				
			||||||
	inetsk->id = asoc->next_tsn ^ jiffies;
 | 
						inetsk->id = asoc->next_tsn ^ jiffies;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	*sockp = sock;
 | 
						*sockp = sock;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue