* computation is opaque to the user space. */
union flow_in_port in_port; /* Input port.*/
uint32_t recirc_id; /* Must be exact match. */
- uint16_t ct_state; /* Connection tracking state. */
+ uint8_t ct_state; /* Connection tracking state. */
+ uint8_t pad0;
uint16_t ct_zone; /* Connection tracking zone. */
uint32_t ct_mark; /* Connection mark.*/
uint8_t pad1[4]; /* Pad to 64 bits. */
miniflow_push_uint32(mf, in_port, odp_to_u32(md->in_port.odp_port));
if (md->recirc_id || md->ct_state) {
miniflow_push_uint32(mf, recirc_id, md->recirc_id);
- miniflow_push_uint16(mf, ct_state, md->ct_state);
+ miniflow_push_uint8(mf, ct_state, md->ct_state);
+ miniflow_push_uint8(mf, pad0, 0);
miniflow_push_uint16(mf, ct_zone, md->ct_zone);
}
void
match_set_ct_state_masked(struct match *match, uint32_t ct_state, uint32_t mask)
{
- match->flow.ct_state = ct_state & mask & UINT16_MAX;
- match->wc.masks.ct_state = mask & UINT16_MAX;
+ match->flow.ct_state = ct_state & mask & UINT8_MAX;
+ match->wc.masks.ct_state = mask & UINT8_MAX;
}
void
}
if (wc->masks.ct_state) {
- if (wc->masks.ct_state == UINT16_MAX) {
+ if (wc->masks.ct_state == UINT8_MAX) {
ds_put_format(s, "%sct_state=%s", colors.param, colors.end);
if (f->ct_state) {
format_flags(s, ct_state_to_string, f->ct_state, '|');
}
} else {
format_flags_masked(s, "ct_state", ct_state_to_string,
- f->ct_state, wc->masks.ct_state, UINT16_MAX);
+ f->ct_state, wc->masks.ct_state, UINT8_MAX);
}
ds_put_char(s, ',');
}
action. */
uint32_t skb_priority; /* Packet priority for QoS. */
uint32_t pkt_mark; /* Packet mark. */
- uint16_t ct_state; /* Connection state. */
+ uint8_t ct_state; /* Connection state. */
uint16_t ct_zone; /* Connection zone. */
uint32_t ct_mark; /* Connection mark. */
ovs_u128 ct_label; /* Connection label. */
uint32_t ct_mark;
support = &ofproto->backer->support.odp;
- ct_state = MINIFLOW_GET_U16(flow, ct_state);
+ ct_state = MINIFLOW_GET_U8(flow, ct_state);
if (support->ct_state && support->ct_zone && support->ct_mark
&& support->ct_label && support->ct_state_nat) {
return ct_state & CS_UNSUPPORTED_MASK ? OFPERR_OFPBMC_BAD_MASK : 0;
# Connection tracking fields,
dnl
-dnl When re-serialising, bits 16-31 are wildcarded, because current OVS userspace
+dnl When re-serialising, bits 8-31 are wildcarded, because current OVS userspace
dnl doesn't understand (or store) those bits.
-NXM_OF_ETH_TYPE(0800), NXM_NX_CT_STATE_W(00000020/0000ffff)
+NXM_OF_ETH_TYPE(0800), NXM_NX_CT_STATE_W(00000020/000000ff)
nx_pull_match() returned error OFPBMC_BAD_VALUE
NXM_OF_ETH_TYPE(0800), NXM_NX_CT_STATE_W(00000020/00000020)
NXM_OF_ETH_TYPE(0800), NXM_NX_CT_STATE_W(00000020/000000f0)