+/**
+ * Generate random iss as per rfc6528
+ */
+static u32
+tcp_generate_random_iss (tcp_connection_t * tc)
+{
+ tcp_main_t *tm = &tcp_main;
+ u64 tmp;
+
+ if (tc->c_is_ip4)
+ tmp = (u64) tc->c_lcl_ip.ip4.as_u32 << 32 | (u64) tc->c_rmt_ip.ip4.as_u32;
+ else
+ tmp = tc->c_lcl_ip.ip6.as_u64[0] ^ tc->c_lcl_ip.ip6.as_u64[1]
+ ^ tc->c_rmt_ip.ip6.as_u64[0] ^ tc->c_rmt_ip.ip6.as_u64[1];
+
+ tmp ^= tm->iss_seed.first | ((u64) tc->c_lcl_port << 16 | tc->c_rmt_port);
+ tmp ^= tm->iss_seed.second;
+ tmp = clib_xxhash (tmp) + clib_cpu_time_now ();
+ return ((tmp >> 32) ^ (tmp & 0xffffffff));
+}