Commit ce7a3bdf authored by Florent Fourcot's avatar Florent Fourcot Committed by David S. Miller

ipv6: do not erase dst address with flow label destination

This patch is following b579035f
	"ipv6: remove old conditions on flow label sharing"

Since there is no reason to restrict a label to a
destination, we should not erase the destination value of a
socket with the value contained in the flow label storage.

This patch allows to really have the same flow label to more
than one destination.
Signed-off-by: default avatarFlorent Fourcot <florent.fourcot@enst-bretagne.fr>
Reviewed-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9f70f46b
...@@ -851,7 +851,6 @@ static int dccp_v6_connect(struct sock *sk, struct sockaddr *uaddr, ...@@ -851,7 +851,6 @@ static int dccp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
flowlabel = fl6_sock_lookup(sk, fl6.flowlabel); flowlabel = fl6_sock_lookup(sk, fl6.flowlabel);
if (flowlabel == NULL) if (flowlabel == NULL)
return -EINVAL; return -EINVAL;
usin->sin6_addr = flowlabel->dst;
fl6_sock_release(flowlabel); fl6_sock_release(flowlabel);
} }
} }
......
...@@ -73,7 +73,6 @@ int ip6_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) ...@@ -73,7 +73,6 @@ int ip6_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
flowlabel = fl6_sock_lookup(sk, fl6.flowlabel); flowlabel = fl6_sock_lookup(sk, fl6.flowlabel);
if (flowlabel == NULL) if (flowlabel == NULL)
return -EINVAL; return -EINVAL;
usin->sin6_addr = flowlabel->dst;
} }
} }
......
...@@ -792,7 +792,6 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk, ...@@ -792,7 +792,6 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk,
flowlabel = fl6_sock_lookup(sk, fl6.flowlabel); flowlabel = fl6_sock_lookup(sk, fl6.flowlabel);
if (flowlabel == NULL) if (flowlabel == NULL)
return -EINVAL; return -EINVAL;
daddr = &flowlabel->dst;
} }
} }
......
...@@ -156,7 +156,6 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr, ...@@ -156,7 +156,6 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
flowlabel = fl6_sock_lookup(sk, fl6.flowlabel); flowlabel = fl6_sock_lookup(sk, fl6.flowlabel);
if (flowlabel == NULL) if (flowlabel == NULL)
return -EINVAL; return -EINVAL;
usin->sin6_addr = flowlabel->dst;
fl6_sock_release(flowlabel); fl6_sock_release(flowlabel);
} }
} }
......
...@@ -1140,7 +1140,6 @@ int udpv6_sendmsg(struct kiocb *iocb, struct sock *sk, ...@@ -1140,7 +1140,6 @@ int udpv6_sendmsg(struct kiocb *iocb, struct sock *sk,
flowlabel = fl6_sock_lookup(sk, fl6.flowlabel); flowlabel = fl6_sock_lookup(sk, fl6.flowlabel);
if (flowlabel == NULL) if (flowlabel == NULL)
return -EINVAL; return -EINVAL;
daddr = &flowlabel->dst;
} }
} }
......
...@@ -528,7 +528,6 @@ static int l2tp_ip6_sendmsg(struct kiocb *iocb, struct sock *sk, ...@@ -528,7 +528,6 @@ static int l2tp_ip6_sendmsg(struct kiocb *iocb, struct sock *sk,
flowlabel = fl6_sock_lookup(sk, fl6.flowlabel); flowlabel = fl6_sock_lookup(sk, fl6.flowlabel);
if (flowlabel == NULL) if (flowlabel == NULL)
return -EINVAL; return -EINVAL;
daddr = &flowlabel->dst;
} }
} }
......
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