|
@@ -408,7 +408,7 @@ struct dst_entry *inet_csk_route_req(struct sock *sk,
|
|
|
struct net *net = sock_net(sk);
|
|
|
int flags = inet_sk_flowi_flags(sk);
|
|
|
|
|
|
- flowi4_init_output(fl4, sk->sk_bound_dev_if, sk->sk_mark,
|
|
|
+ flowi4_init_output(fl4, sk->sk_bound_dev_if, ireq->ir_mark,
|
|
|
RT_CONN_FLAGS(sk), RT_SCOPE_UNIVERSE,
|
|
|
sk->sk_protocol,
|
|
|
flags,
|
|
@@ -445,7 +445,7 @@ struct dst_entry *inet_csk_route_child_sock(struct sock *sk,
|
|
|
|
|
|
rcu_read_lock();
|
|
|
opt = rcu_dereference(newinet->inet_opt);
|
|
|
- flowi4_init_output(fl4, sk->sk_bound_dev_if, sk->sk_mark,
|
|
|
+ flowi4_init_output(fl4, sk->sk_bound_dev_if, inet_rsk(req)->ir_mark,
|
|
|
RT_CONN_FLAGS(sk), RT_SCOPE_UNIVERSE,
|
|
|
sk->sk_protocol, inet_sk_flowi_flags(sk),
|
|
|
(opt && opt->opt.srr) ? opt->opt.faddr : ireq->ir_rmt_addr,
|
|
@@ -680,6 +680,8 @@ struct sock *inet_csk_clone_lock(const struct sock *sk,
|
|
|
inet_sk(newsk)->inet_sport = htons(inet_rsk(req)->ir_num);
|
|
|
newsk->sk_write_space = sk_stream_write_space;
|
|
|
|
|
|
+ newsk->sk_mark = inet_rsk(req)->ir_mark;
|
|
|
+
|
|
|
newicsk->icsk_retransmits = 0;
|
|
|
newicsk->icsk_backoff = 0;
|
|
|
newicsk->icsk_probes_out = 0;
|