|
@@ -818,8 +818,12 @@ static void tcp_v6_send_response(const struct sock *sk, struct sk_buff *skb, u32
|
|
|
fl6.flowi6_proto = IPPROTO_TCP;
|
|
|
if (rt6_need_strict(&fl6.daddr) && !oif)
|
|
|
fl6.flowi6_oif = tcp_v6_iif(skb);
|
|
|
- else
|
|
|
- fl6.flowi6_oif = oif ? : skb->skb_iif;
|
|
|
+ else {
|
|
|
+ if (!oif && netif_index_is_l3_master(net, skb->skb_iif))
|
|
|
+ oif = skb->skb_iif;
|
|
|
+
|
|
|
+ fl6.flowi6_oif = oif;
|
|
|
+ }
|
|
|
|
|
|
fl6.flowi6_mark = IP6_REPLY_MARK(net, skb->mark);
|
|
|
fl6.fl6_dport = t1->dest;
|