+/* Zero-extends a __be32 into the least-significant 32 bits of a __be64. */
+static __be64 be32_extend_to_be64(__be32 x)
+{
+#ifdef __BIG_ENDIAN
+ return (__force __be64)x;
+#else
+ return (__force __be64)((__force u64)x << 32);
+#endif
+}
+
+static int parse_header(struct iphdr *iph, __be16 *flags, __be64 *key)