It's probably harder than it seems, since the vmap only includes one expr to evaluate.
{
"rule": {
"family": "inet",
"table": "fw4",
"chain": "input",
"handle": 1767,
"comment": "!fw4: Handle inbound flows",
"expr": [
{
"vmap": {
"key": {
"ct": {
"key": "state"
}
},
"data": {
"set": [
[
"invalid",
{
"drop": null
}
],
[
"established",
{
"accept": null
}
],
[
"related",
{
"accept": null
}
]
]
}
}
}
]
}
}
So in renderExpr, we need to add a case for vmap and somehow render the key and data in one shot.
In baby steps, I've gotten it to recognize the vmap and the key:
I'm thinking vmap needs to be considered an actionExpression so all the badges appear in the Rule actions column:
Hopefully, smarter people will chime in. ![]()

