# Commands that should be invalid
declare -a cmds=(
- "flush set t m"
+ "flush set t m" "flush set t f"
"flush map t s" "flush map t f"
"flush meter t s" "flush meter t m"
)
"
expected_output="table ip t {
- set s {
- type ipv4_addr
- size 256
- flags dynamic,timeout
- }
- set m {
+ meter m {
type ipv4_addr
size 128
flags dynamic
"map": "inet_service"
}
},
- {
- "set": {
- "family": "ip",
- "name": "f",
- "table": "t",
- "type": "ipv4_addr",
- "handle": 0,
- "size": 1024,
- "flags": [
- "dynamic"
- ]
- }
- },
{
"rule": {
"family": "ip",
}
},
{
- "set": {
- "op": "add",
- "elem": {
+ "meter": {
+ "key": {
"payload": {
"protocol": "ip",
"field": "saddr"
}
},
- "set": "@f",
- "stmt": [
- {
- "limit": {
- "rate": 10,
- "burst": 5,
- "per": "second"
- }
+ "stmt": {
+ "limit": {
+ "rate": 10,
+ "burst": 5,
+ "per": "second"
}
- ]
+ },
+ "size": 1024,
+ "name": "f"
}
}
]
type ipv4_addr : inet_service
}
- set f {
- type ipv4_addr
- size 1024
- flags dynamic
- }
-
chain c {
- tcp dport 80 add @f { ip saddr limit rate 10/second burst 5 packets }
+ tcp dport 80 meter f size 1024 { ip saddr limit rate 10/second burst 5 packets }
}
}
]
}
},
- {
- "set": {
- "family": "ip",
- "name": "m",
- "table": "t",
- "type": "ipv4_addr",
- "handle": 0,
- "size": 128,
- "flags": [
- "dynamic"
- ]
- }
- },
{
"rule": {
"family": "ip",
}
},
{
- "set": {
- "op": "add",
- "elem": {
+ "meter": {
+ "key": {
"payload": {
"protocol": "ip",
"field": "saddr"
}
},
- "set": "@m",
- "stmt": [
- {
- "limit": {
- "rate": 10,
- "burst": 5,
- "per": "second"
- }
+ "stmt": {
+ "limit": {
+ "rate": 10,
+ "burst": 5,
+ "per": "second"
}
- ]
+ },
+ "size": 128,
+ "name": "m"
}
}
]
flags dynamic,timeout
}
- set m {
- type ipv4_addr
- size 128
- flags dynamic
- }
-
chain c {
- tcp dport 80 add @m { ip saddr limit rate 10/second burst 5 packets }
+ tcp dport 80 meter m size 128 { ip saddr limit rate 10/second burst 5 packets }
}
}