X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=datapath%2Ftunnel.c;h=ef46a69de218f1b1991161d6a121438a5fb7bf29;hb=5bc6241b420ba5ce0ff40f9456f0b8215d34f3fb;hp=8c93e18ed140651367c2d74d18a124973e6620cf;hpb=db0c31340fe260f281aaea07b0fbce41bef07c7d;p=sliver-openvswitch.git diff --git a/datapath/tunnel.c b/datapath/tunnel.c index 8c93e18ed..ef46a69de 100644 --- a/datapath/tunnel.c +++ b/datapath/tunnel.c @@ -37,12 +37,6 @@ #include "vlan.h" #include "vport.h" -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) -#define rt_dst(rt) (rt->dst) -#else -#define rt_dst(rt) (rt->u.dst) -#endif - /** * ovs_tnl_rcv - ingress point for generic tunnel code * @@ -85,9 +79,9 @@ void ovs_tnl_rcv(struct vport *vport, struct sk_buff *skb, ovs_vport_receive(vport, skb, tun_key); } -static struct rtable *find_route(struct net *net, - __be32 *saddr, __be32 daddr, u8 ipproto, - u8 tos, u32 skb_mark) +struct rtable *find_route(struct net *net, + __be32 *saddr, __be32 daddr, u8 ipproto, + u8 tos, u32 skb_mark) { struct rtable *rt; /* Tunnel configuration keeps DSCP part of TOS bits, But Linux @@ -192,7 +186,9 @@ u16 ovs_tnl_get_src_port(struct sk_buff *skb) int low; int high; unsigned int range; - u32 hash = OVS_CB(skb)->flow->hash; + struct sw_flow_key *pkt_key = OVS_CB(skb)->pkt_key; + u32 hash = jhash2((const u32 *)pkt_key, + sizeof(*pkt_key) / sizeof(u32), 0); inet_get_local_port_range(&low, &high); range = (high - low) + 1; @@ -289,7 +285,7 @@ int ovs_tnl_send(struct vport *vport, struct sk_buff *skb, iph->tos = OVS_CB(skb)->tun_key->ipv4_tos; iph->ttl = OVS_CB(skb)->tun_key->ipv4_ttl; iph->frag_off = OVS_CB(skb)->tun_key->tun_flags & - OVS_TNL_F_DONT_FRAGMENT ? htons(IP_DF) : 0; + TUNNEL_DONT_FRAGMENT ? htons(IP_DF) : 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