2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-19 14:37:21 +00:00

datapath: Factor out common code from *_build_header() to ovs_tnl_send().

Signed-off-by: Jarno Rajahalme <jarno.rajahalme@nsn.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
This commit is contained in:
Jarno Rajahalme
2013-03-25 21:03:37 +02:00
committed by Jesse Gross
parent c25ea53406
commit 26fd9d16d3
4 changed files with 9 additions and 28 deletions

View File

@@ -280,6 +280,15 @@ int ovs_tnl_send(struct vport *vport, struct sk_buff *skb)
/* Push Tunnel header. */
tnl_vport->tnl_ops->build_header(vport, skb, tunnel_hlen);
/*
* Allow our local IP stack to fragment the outer packet even
* if the DF bit is set as a last resort. We also need to
* force selection of an IP ID here because Linux will
* otherwise leave it at 0 if the packet originally had DF set.
*/
skb->local_df = 1;
__ip_select_ident(ip_hdr(skb), skb_dst(skb), 0);
/* Push IP header. */
iph = ip_hdr(skb);
iph->version = 4;

View File

@@ -95,8 +95,6 @@ static void __gre_build_header(struct sk_buff *skb,
__be32 *options = (__be32 *)(skb_network_header(skb) + tunnel_hlen
- GRE_HEADER_SECTION);
struct gre_base_hdr *greh = (struct gre_base_hdr *) skb_transport_header(skb);
struct dst_entry *dst = skb_dst(skb);
greh->protocol = htons(ETH_P_TEB);
greh->flags = 0;
@@ -121,14 +119,6 @@ static void __gre_build_header(struct sk_buff *skb,
skb->len - skb_transport_offset(skb),
0));
}
/*
* Allow our local IP stack to fragment the outer packet even if the
* DF bit is set as a last resort. We also need to force selection of
* an IP ID here because Linux will otherwise leave it at 0 if the
* packet originally had DF set.
*/
skb->local_df = 1;
__ip_select_ident(ip_hdr(skb), dst, 0);
}
static void gre_build_header(const struct vport *vport,

View File

@@ -207,15 +207,6 @@ static void lisp_build_header(const struct vport *vport,
tunnel_id_to_instance_id(tun_key->tun_id, &lisph->u2.word2.instance_id[0]);
lisph->u2.word2.locator_status_bits = 1;
/*
* Allow our local IP stack to fragment the outer packet even if the
* DF bit is set as a last resort. We also need to force selection of
* an IP ID here because Linux will otherwise leave it at 0 if the
* packet originally had DF set.
*/
skb->local_df = 1;
__ip_select_ident(ip_hdr(skb), skb_dst(skb), 0);
}
/* Called with rcu_read_lock and BH disabled. */

View File

@@ -106,15 +106,6 @@ static void vxlan_build_header(const struct vport *vport,
vxh->vx_flags = htonl(VXLAN_FLAGS);
vxh->vx_vni = htonl(be64_to_cpu(tun_key->tun_id) << 8);
/*
* Allow our local IP stack to fragment the outer packet even if the
* DF bit is set as a last resort. We also need to force selection of
* an IP ID here because Linux will otherwise leave it at 0 if the
* packet originally had DF set.
*/
skb->local_df = 1;
__ip_select_ident(ip_hdr(skb), skb_dst(skb), 0);
}
/* Called with rcu_read_lock and BH disabled. */