-/* Upper bound on the length of an nx_match. The longest nx_match (assuming
- * we implement 4 registers) would be:
+int nxm_field_bytes(uint32_t header);
+int nxm_field_bits(uint32_t header);
+
+/* Dealing with the 'ofs_nbits' members in several Nicira extensions. */
+
+static inline ovs_be16
+nxm_encode_ofs_nbits(int ofs, int n_bits)
+{
+ return htons((ofs << 6) | (n_bits - 1));
+}
+
+static inline int
+nxm_decode_ofs(ovs_be16 ofs_nbits)
+{
+ return ntohs(ofs_nbits) >> 6;
+}
+
+static inline int
+nxm_decode_n_bits(ovs_be16 ofs_nbits)
+{
+ return (ntohs(ofs_nbits) & 0x3f) + 1;
+}
+
+void nxm_decode(struct mf_subfield *, ovs_be32 header, ovs_be16 ofs_nbits);
+void nxm_decode_discrete(struct mf_subfield *, ovs_be32 header,
+ ovs_be16 ofs, ovs_be16 n_bits);
+\f
+BUILD_ASSERT_DECL(FLOW_WC_SEQ == 10);
+/* Upper bound on the length of an nx_match. The longest nx_match (an
+ * IPV6 neighbor discovery message using 5 registers) would be: