ip: pass tos into ip_build_and_send_pkt()
authorWei Wang <weiwan@google.com>
Thu, 10 Sep 2020 00:50:47 +0000 (17:50 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 10 Sep 2020 20:15:40 +0000 (13:15 -0700)
This commit adds tos as a new passed in parameter to
ip_build_and_send_pkt() which will be used in the later commit.
This is a pure restructure and does not have any functional change.

Signed-off-by: Wei Wang <weiwan@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/ip.h
net/dccp/ipv4.c
net/ipv4/ip_output.c
net/ipv4/tcp_ipv4.c

index b09c48d..0f72bf8 100644 (file)
@@ -151,7 +151,7 @@ int igmp_mc_init(void);
 
 int ip_build_and_send_pkt(struct sk_buff *skb, const struct sock *sk,
                          __be32 saddr, __be32 daddr,
-                         struct ip_options_rcu *opt);
+                         struct ip_options_rcu *opt, u8 tos);
 int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt,
           struct net_device *orig_dev);
 void ip_list_rcv(struct list_head *head, struct packet_type *pt,
index d8f3751..bb3d706 100644 (file)
@@ -495,7 +495,8 @@ static int dccp_v4_send_response(const struct sock *sk, struct request_sock *req
                rcu_read_lock();
                err = ip_build_and_send_pkt(skb, sk, ireq->ir_loc_addr,
                                            ireq->ir_rmt_addr,
-                                           rcu_dereference(ireq->ireq_opt));
+                                           rcu_dereference(ireq->ireq_opt),
+                                           inet_sk(sk)->tos);
                rcu_read_unlock();
                err = net_xmit_eval(err);
        }
@@ -537,7 +538,8 @@ static void dccp_v4_ctl_send_reset(const struct sock *sk, struct sk_buff *rxskb)
        local_bh_disable();
        bh_lock_sock(ctl_sk);
        err = ip_build_and_send_pkt(skb, ctl_sk,
-                                   rxiph->daddr, rxiph->saddr, NULL);
+                                   rxiph->daddr, rxiph->saddr, NULL,
+                                   inet_sk(ctl_sk)->tos);
        bh_unlock_sock(ctl_sk);
 
        if (net_xmit_eval(err) == 0) {
index b931d0b..5fb536f 100644 (file)
@@ -142,7 +142,8 @@ static inline int ip_select_ttl(struct inet_sock *inet, struct dst_entry *dst)
  *
  */
 int ip_build_and_send_pkt(struct sk_buff *skb, const struct sock *sk,
-                         __be32 saddr, __be32 daddr, struct ip_options_rcu *opt)
+                         __be32 saddr, __be32 daddr, struct ip_options_rcu *opt,
+                         u8 tos)
 {
        struct inet_sock *inet = inet_sk(sk);
        struct rtable *rt = skb_rtable(skb);
@@ -155,7 +156,7 @@ int ip_build_and_send_pkt(struct sk_buff *skb, const struct sock *sk,
        iph = ip_hdr(skb);
        iph->version  = 4;
        iph->ihl      = 5;
-       iph->tos      = inet->tos;
+       iph->tos      = tos;
        iph->ttl      = ip_select_ttl(inet, &rt->dst);
        iph->daddr    = (opt && opt->opt.srr ? opt->opt.faddr : daddr);
        iph->saddr    = saddr;
index af27cfa..c4c7ad4 100644 (file)
@@ -985,7 +985,8 @@ static int tcp_v4_send_synack(const struct sock *sk, struct dst_entry *dst,
                rcu_read_lock();
                err = ip_build_and_send_pkt(skb, sk, ireq->ir_loc_addr,
                                            ireq->ir_rmt_addr,
-                                           rcu_dereference(ireq->ireq_opt));
+                                           rcu_dereference(ireq->ireq_opt),
+                                           inet_sk(sk)->tos);
                rcu_read_unlock();
                err = net_xmit_eval(err);
        }