uint32_t flags = 0, mask = 0;
/* Parse masked flags. */
- while (s[n] != ')') {
+ while (s[0] != ')') {
bool set;
uint32_t bit;
int name_len;
- if (s[n] == '+') {
+ if (s[0] == '+') {
set = true;
- } else if (s[n] == '-') {
+ } else if (s[0] == '-') {
set = false;
} else {
return -EINVAL;
}
+ s++;
n++;
- name_len = strcspn(s + n, "+-)");
+ name_len = strcspn(s, "+-)");
for (bit = 1; bit; bit <<= 1) {
const char *fname = bit_to_string(bit);
if (len != name_len) {
continue;
}
- if (!strncmp(s + n, fname, len)) {
+ if (!strncmp(s, fname, len)) {
if (mask & bit) {
/* bit already set. */
return -EINVAL;
return -EINVAL; /* Unknown flag name */
}
s += name_len;
+ n += name_len;
}
*res_flags = flags;
echo '# Valid forms with tunnel header.'
sed 's/^/tunnel(tun_id=0x7f10354\/0xff,src=10.10.10.10\/255.255.255.0,dst=20.20.20.20\/255.255.255.0,tos=0,ttl=64,tp_src=0,tp_dst=0,gbp_id=0,gbp_flags=0,flags(csum,key)),/' odp-base.txt
+ echo
+ echo '# Valid forms with tunnel header (wildcard flag).'
+ sed 's/^/tunnel(tun_id=0x7f10354\/0xff,src=10.10.10.10\/255.255.255.0,dst=20.20.20.20\/255.255.255.0,tos=0,ttl=64,tp_src=0,tp_dst=0,gbp_id=0,gbp_flags=0,flags(-df+csum+key)),/' odp-base.txt
+
echo
echo '# Valid forms with VLAN header.'
sed 's/\(eth([[^)]]*)\),*/\1,eth_type(0x8100),vlan(vid=99,pcp=7),encap(/