-static struct sk_buff *lisp_build_header(const struct vport *vport,
- const struct tnl_mutable_config *mutable,
- struct dst_entry *dst,
- struct sk_buff *skb,
- int tunnel_hlen)
+/* Compute source UDP port for outgoing packet.
+ * Currently we use the flow hash.
+ */
+static u16 get_src_port(struct net *net, struct sk_buff *skb)
+{
+ u32 hash = skb_get_rxhash(skb);
+ unsigned int range;
+ int high;
+ int low;
+
+ if (!hash) {
+ struct sw_flow_key *pkt_key = OVS_CB(skb)->pkt_key;
+
+ hash = jhash2((const u32 *)pkt_key,
+ sizeof(*pkt_key) / sizeof(u32), 0);
+ }
+
+ inet_get_local_port_range(net, &low, &high);
+ range = (high - low) + 1;
+ return (((u64) hash * range) >> 32) + low;
+}
+
+static void lisp_build_header(const struct vport *vport,
+ struct sk_buff *skb)