diff --git a/lib/flow.h b/lib/flow.h index 7b001a6..5b60394 100644 --- a/lib/flow.h +++ b/lib/flow.h @@ -54,6 +54,7 @@ BUILD_ASSERT_DECL(FLOW_NW_FRAG_LATER == NX_IP_FRAG_LATER); struct flow { ovs_be64 tun_id; /* Encapsulating tunnel ID. */ + ovs_be32 test_mpls; struct in6_addr ipv6_src; /* IPv6 source address. */ struct in6_addr ipv6_dst; /* IPv6 destination address. */ struct in6_addr nd_target; /* IPv6 neighbor discovery (ND) target. */ @@ -75,7 +76,7 @@ struct flow { uint8_t arp_tha[6]; /* ARP/ND target hardware address. */ uint8_t nw_ttl; /* IP TTL/Hop Limit. */ uint8_t nw_frag; /* FLOW_FRAG_* flags. */ - uint8_t reserved[6]; /* Reserved for 64-bit packing. */ + uint8_t reserved[2]; /* Reserved for 64-bit packing. */ }; /* Represents the metadata fields of struct flow. The masks are used to @@ -93,14 +94,14 @@ struct flow_metadata { /* Assert that there are FLOW_SIG_SIZE bytes of significant data in "struct * flow", followed by FLOW_PAD_SIZE bytes of padding. */ -#define FLOW_SIG_SIZE (110 + FLOW_N_REGS * 4) -#define FLOW_PAD_SIZE 6 +#define FLOW_SIG_SIZE (114 + FLOW_N_REGS * 4) +#define FLOW_PAD_SIZE 2 BUILD_ASSERT_DECL(offsetof(struct flow, nw_frag) == FLOW_SIG_SIZE - 1); BUILD_ASSERT_DECL(sizeof(((struct flow *)0)->nw_frag) == 1); BUILD_ASSERT_DECL(sizeof(struct flow) == FLOW_SIG_SIZE + FLOW_PAD_SIZE); /* Remember to update FLOW_WC_SEQ when changing 'struct flow'. */ -BUILD_ASSERT_DECL(FLOW_SIG_SIZE == 130 && FLOW_WC_SEQ == 8); +BUILD_ASSERT_DECL(FLOW_SIG_SIZE == 134 && FLOW_WC_SEQ == 8); void flow_extract(struct ofpbuf *, uint32_t priority, ovs_be64 tun_id, uint16_t in_port, struct flow *);