Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: net/ipv6/xfrm6_output.c net/openvswitch/flow_netlink.c net/openvswitch/vport-gre.c net/openvswitch/vport-vxlan.c net/openvswitch/vport.c net/openvswitch/vport.h The openvswitch conflicts were overlapping changes. One was the egress tunnel info fix in 'net' and the other was the vport ->send() op simplification in 'net-next'. The xfrm6_output.c conflicts was also a simplification overlapping a bug fix. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -480,64 +480,6 @@ void ovs_vport_deferred_free(struct vport *vport)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ovs_vport_deferred_free);
|
||||
|
||||
int ovs_tunnel_get_egress_info(struct dp_upcall_info *upcall,
|
||||
struct net *net,
|
||||
struct sk_buff *skb,
|
||||
u8 ipproto,
|
||||
__be16 tp_src,
|
||||
__be16 tp_dst)
|
||||
{
|
||||
struct ip_tunnel_info *egress_tun_info = upcall->egress_tun_info;
|
||||
const struct ip_tunnel_info *tun_info = skb_tunnel_info(skb);
|
||||
const struct ip_tunnel_key *tun_key;
|
||||
u32 skb_mark = skb->mark;
|
||||
struct rtable *rt;
|
||||
struct flowi4 fl;
|
||||
|
||||
if (unlikely(!tun_info))
|
||||
return -EINVAL;
|
||||
if (ip_tunnel_info_af(tun_info) != AF_INET)
|
||||
return -EINVAL;
|
||||
|
||||
tun_key = &tun_info->key;
|
||||
|
||||
/* Route lookup to get srouce IP address.
|
||||
* The process may need to be changed if the corresponding process
|
||||
* in vports ops changed.
|
||||
*/
|
||||
rt = ovs_tunnel_route_lookup(net, tun_key, skb_mark, &fl, ipproto);
|
||||
if (IS_ERR(rt))
|
||||
return PTR_ERR(rt);
|
||||
|
||||
ip_rt_put(rt);
|
||||
|
||||
/* Generate egress_tun_info based on tun_info,
|
||||
* saddr, tp_src and tp_dst
|
||||
*/
|
||||
ip_tunnel_key_init(&egress_tun_info->key,
|
||||
fl.saddr, tun_key->u.ipv4.dst,
|
||||
tun_key->tos,
|
||||
tun_key->ttl,
|
||||
tp_src, tp_dst,
|
||||
tun_key->tun_id,
|
||||
tun_key->tun_flags);
|
||||
egress_tun_info->options_len = tun_info->options_len;
|
||||
egress_tun_info->mode = tun_info->mode;
|
||||
upcall->egress_tun_opts = ip_tunnel_info_opts(egress_tun_info);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ovs_tunnel_get_egress_info);
|
||||
|
||||
int ovs_vport_get_egress_tun_info(struct vport *vport, struct sk_buff *skb,
|
||||
struct dp_upcall_info *upcall)
|
||||
{
|
||||
/* get_egress_tun_info() is only implemented on tunnel ports. */
|
||||
if (unlikely(!vport->ops->get_egress_tun_info))
|
||||
return -EINVAL;
|
||||
|
||||
return vport->ops->get_egress_tun_info(vport, skb, upcall);
|
||||
}
|
||||
|
||||
static unsigned int packet_length(const struct sk_buff *skb)
|
||||
{
|
||||
unsigned int length = skb->len - ETH_HLEN;
|
||||
|
||||
Reference in New Issue
Block a user