Thread (16 messages) 16 messages, 8 authors, 2016-09-06

Re: [PATCH net-next V5 2/4] net/dst: Utility functions to build dst_metadata without supplying an skb

flat view

From: Hadar Hen Zion <hidden>
Date: 2016-09-04 12:27:30

On Sun, Sep 4, 2016 at 2:14 PM, Sergei Shtylyov
[off-list ref] wrote:
Hello.


On 9/4/2016 1:55 PM, Hadar Hen Zion wrote:
quoted
From: Amir Vadai <redacted>

Extract __ip_tun_set_dst() and __ipv6_tun_set_dst() out of
ip_tun_rx_dst() and ipv6_tun_rx_dst(), to be used without supplying an
skb.

Signed-off-by: Amir Vadai <redacted>
Signed-off-by: Hadar Hen Zion <redacted>
Acked-by: Jiri Pirko <redacted>
Reviewed-by: Shmulik Ladkani <redacted>
---
 include/net/dst_metadata.h | 45
++++++++++++++++++++++++++++++++-------------
 1 file changed, 32 insertions(+), 13 deletions(-)
diff --git a/include/net/dst_metadata.h b/include/net/dst_metadata.h
index 5db9f59..49e8847 100644
--- a/include/net/dst_metadata.h
+++ b/include/net/dst_metadata.h
@@ -112,12 +112,10 @@ static inline struct ip_tunnel_info
*skb_tunnel_info_unclone(struct sk_buff *skb
        return &dst->u.tun_info;
 }

-static inline struct metadata_dst *ip_tun_rx_dst(struct sk_buff *skb,
-                                                __be16 flags,
-                                                __be64 tunnel_id,
-                                                int md_size)
+static inline struct metadata_dst *
+__ip_tun_set_dst(__be32 saddr, __be32 daddr, __u8 tos, __u8 ttl,
+                __be16 flags, __be64 tunnel_id, int md_size)

   The continuation lines should start under the 1st '__be32' on the broken
up line. See how it was before your patch.
ack
quoted
 {
-       const struct iphdr *iph = ip_hdr(skb);
        struct metadata_dst *tun_dst;

        tun_dst = tun_rx_dst(md_size);
@@ -125,17 +123,27 @@ static inline struct metadata_dst
*ip_tun_rx_dst(struct sk_buff *skb,
[...]
quoted
-static inline struct metadata_dst *ipv6_tun_rx_dst(struct sk_buff *skb,
+static inline struct metadata_dst *ip_tun_rx_dst(struct sk_buff *skb,
                                                 __be16 flags,
                                                 __be64 tunnel_id,
                                                 int md_size)
 {
-       const struct ipv6hdr *ip6h = ipv6_hdr(skb);
+       const struct iphdr *iph = ip_hdr(skb);
+
+       return __ip_tun_set_dst(iph->saddr, iph->daddr, iph->tos,
iph->ttl,
+                               flags, tunnel_id, md_size);
+}
+
+static inline struct metadata_dst *
+__ipv6_tun_set_dst(const struct in6_addr *saddr, const struct in6_addr
*daddr,
+                  __u8 tos, __u8 ttl, __be32 label, __be16 flags,
+                  __be64 tunnel_id, int md_size)

   The continuation lines should start under the 1st *const* on the broken
up line.
ack
quoted
+{
        struct metadata_dst *tun_dst;
        struct ip_tunnel_info *info;
@@ -150,14 +158,25 @@ static inline struct metadata_dst
*ipv6_tun_rx_dst(struct sk_buff *skb,
[...]
quoted

+static inline struct metadata_dst *
+ipv6_tun_rx_dst(struct sk_buff *skb, __be16 flags, __be64 tunnel_id,
+               int md_size)
+{
+       const struct ipv6hdr *ip6h = ipv6_hdr(skb);
+
+       return __ipv6_tun_set_dst(&ip6h->saddr, &ip6h->daddr,
+                               ipv6_get_dsfield(ip6h), ip6h->hop_limit,
+                               ip6_flowlabel(ip6h), flags, tunnel_id,
+                               md_size);

   The continuation lines should start exactly under the 1st & on the broken
up line.
   That's DaveM's preference, I don't remember if checkpatch.pl reports that
for the networking code...
checkpatch doesn't report :(
I'll fix it to the next version.
[...]

MBR, Sergei
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help