void
cls_rule_set_nw_dscp(struct cls_rule *rule, uint8_t nw_dscp)
{
- rule->wc.tos_mask |= IP_DSCP_MASK;
- rule->flow.tos &= ~IP_DSCP_MASK;
- rule->flow.tos |= nw_dscp & IP_DSCP_MASK;
+ rule->wc.nw_tos_mask |= IP_DSCP_MASK;
+ rule->flow.nw_tos &= ~IP_DSCP_MASK;
+ rule->flow.nw_tos |= nw_dscp & IP_DSCP_MASK;
}
void
cls_rule_set_nw_ecn(struct cls_rule *rule, uint8_t nw_ecn)
{
- rule->wc.tos_mask |= IP_ECN_MASK;
- rule->flow.tos &= ~IP_ECN_MASK;
- rule->flow.tos |= nw_ecn & IP_ECN_MASK;
+ rule->wc.nw_tos_mask |= IP_ECN_MASK;
+ rule->flow.nw_tos &= ~IP_ECN_MASK;
+ rule->flow.nw_tos |= nw_ecn & IP_ECN_MASK;
}
void
}
void
-cls_rule_set_frag(struct cls_rule *rule, uint8_t frag)
+cls_rule_set_nw_frag(struct cls_rule *rule, uint8_t nw_frag)
{
- rule->wc.frag_mask |= FLOW_FRAG_MASK;
- rule->flow.frag = frag;
+ rule->wc.nw_frag_mask |= FLOW_NW_FRAG_MASK;
+ rule->flow.nw_frag = nw_frag;
}
void
-cls_rule_set_frag_masked(struct cls_rule *rule, uint8_t frag, uint8_t mask)
+cls_rule_set_nw_frag_masked(struct cls_rule *rule,
+ uint8_t nw_frag, uint8_t mask)
{
- rule->flow.frag = frag & mask;
- rule->wc.frag_mask = mask;
+ rule->flow.nw_frag = nw_frag & mask;
+ rule->wc.nw_frag_mask = mask;
}
void
ETH_ADDR_ARGS(f->arp_tha));
}
}
- if (wc->tos_mask & IP_DSCP_MASK) {
- ds_put_format(s, "nw_tos=%"PRIu8",", f->tos & IP_DSCP_MASK);
+ if (wc->nw_tos_mask & IP_DSCP_MASK) {
+ ds_put_format(s, "nw_tos=%"PRIu8",", f->nw_tos & IP_DSCP_MASK);
}
- if (wc->tos_mask & IP_ECN_MASK) {
- ds_put_format(s, "nw_ecn=%"PRIu8",", f->tos & IP_ECN_MASK);
+ if (wc->nw_tos_mask & IP_ECN_MASK) {
+ ds_put_format(s, "nw_ecn=%"PRIu8",", f->nw_tos & IP_ECN_MASK);
}
if (!(w & FWW_NW_TTL)) {
ds_put_format(s, "nw_ttl=%"PRIu8",", f->nw_ttl);
}
- switch (wc->frag_mask) {
- case FLOW_FRAG_ANY | FLOW_FRAG_LATER:
- ds_put_format(s, "frag=%s,",
- f->frag & FLOW_FRAG_ANY
- ? (f->frag & FLOW_FRAG_LATER ? "later" : "first")
- : (f->frag & FLOW_FRAG_LATER ? "<error>" : "no"));
+ switch (wc->nw_frag_mask) {
+ case FLOW_NW_FRAG_ANY | FLOW_NW_FRAG_LATER:
+ ds_put_format(s, "nw_frag=%s,",
+ f->nw_frag & FLOW_NW_FRAG_ANY
+ ? (f->nw_frag & FLOW_NW_FRAG_LATER ? "later" : "first")
+ : (f->nw_frag & FLOW_NW_FRAG_LATER ? "<error>" : "no"));
break;
- case FLOW_FRAG_ANY:
- ds_put_format(s, "frag=%s,",
- f->frag & FLOW_FRAG_ANY ? "yes" : "no");
+ case FLOW_NW_FRAG_ANY:
+ ds_put_format(s, "nw_frag=%s,",
+ f->nw_frag & FLOW_NW_FRAG_ANY ? "yes" : "no");
break;
- case FLOW_FRAG_LATER:
- ds_put_format(s, "frag=%s,",
- f->frag & FLOW_FRAG_LATER ? "later" : "not_later");
+ case FLOW_NW_FRAG_LATER:
+ ds_put_format(s, "nw_frag=%s,",
+ f->nw_frag & FLOW_NW_FRAG_LATER ? "later" : "not_later");
break;
}
if (f->nw_proto == IPPROTO_ICMP) {
|| !((a->dl_dst[0] ^ b->dl_dst[0]) & 0x01))
&& (wc & FWW_NW_PROTO || a->nw_proto == b->nw_proto)
&& (wc & FWW_NW_TTL || a->nw_ttl == b->nw_ttl)
- && !((a->tos ^ b->tos) & wildcards->tos_mask)
- && !((a->frag ^ b->frag) & wildcards->frag_mask)
+ && !((a->nw_tos ^ b->nw_tos) & wildcards->nw_tos_mask)
+ && !((a->nw_frag ^ b->nw_frag) & wildcards->nw_frag_mask)
&& (wc & FWW_ARP_SHA || eth_addr_equals(a->arp_sha, b->arp_sha))
&& (wc & FWW_ARP_THA || eth_addr_equals(a->arp_tha, b->arp_tha))
&& (wc & FWW_IPV6_LABEL || a->ipv6_label == b->ipv6_label)