if (expr->left->etype != EXPR_BINOP || expr->left->op != OP_AND)
return false;
- if (expr->left->left->etype != EXPR_PAYLOAD)
+ switch (expr->left->left->etype) {
+ case EXPR_EXTHDR:
+ break;
+ case EXPR_PAYLOAD:
+ break;
+ default:
return false;
+ }
+
+ expr_postprocess(ctx, &expr->left->left);
expr_set_type(expr->right, &integer_type,
BYTEORDER_HOST_ENDIAN);
elements = { mp-join, dss }
}
+ set s14 {
+ typeof tcp option mptcp subtype . ip daddr
+ elements = { remove-addr . 10.1.1.1,
+ mp-join . 10.1.1.2 }
+ }
+
chain c1 {
osf name @s1 accept
}
chain c13 {
tcp option mptcp subtype @s13 accept
}
+
+ chain c14 {
+ tcp option mptcp subtype . ip saddr @s14 accept
+ }
}
typeof tcp option mptcp subtype
elements = { mp-join, dss }
}
+
+ set s14 {
+ typeof tcp option mptcp subtype . ip daddr
+ elements = { remove-addr . 10.1.1.1, mp-join . 10.1.1.2 }
+ }
$INPUT_OSF_CHAIN
chain c2 {
ether type vlan vlan id @s2 accept
chain c13 {
tcp option mptcp subtype @s13 accept
}
+
+ chain c14 {
+ tcp option mptcp subtype . ip saddr @s14 accept
+ }
}"
EXPECTED="table inet t {$INPUT_OSF_SET
typeof tcp option mptcp subtype
elements = { mp-join, dss }
}
+
+ set s14 {
+ typeof tcp option mptcp subtype . ip daddr
+ elements = { remove-addr . 10.1.1.1,
+ mp-join . 10.1.1.2 }
+ }
$INPUT_OSF_CHAIN
chain c2 {
vlan id @s2 accept
chain c13 {
tcp option mptcp subtype @s13 accept
}
+
+ chain c14 {
+ tcp option mptcp subtype . ip saddr @s14 accept
+ }
}"