The key should not be called "to_tbl" because it is exactly
not a FR_ACT_TO_TBL action.

    # ip rule add blackhole
    # ip -j rule | python -m json.tool
    ...
    {
        "priority": 0,
        "src": "all",
        "to_tbl": "blackhole"
    },

Still, as this is already released API from v4.17.0, stick to it.
Only add a comment for this oddity.

Related: 0dd4ccc56c0e ("iprule: add json support")

Signed-off-by: Thomas Haller <thal...@redhat.com>
---
If it is still permissible to change the API, I can also send a patch to
rename "to_tbl" key to "action".

 ip/iprule.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/ip/iprule.c b/ip/iprule.c
index 2f58d8c2..aea175aa 100644
--- a/ip/iprule.c
+++ b/ip/iprule.c
@@ -459,6 +459,8 @@ int print_rule(struct nlmsghdr *n, void *arg)
        } else if (frh->action == FR_ACT_NOP) {
                print_null(PRINT_ANY, "nop", "nop", NULL);
        } else if (frh->action != FR_ACT_TO_TBL) {
+               /* The action is not(!) to-tbl, however for historic
+                * reasons, this JSON key is called "to_tbl". */
                print_string(PRINT_ANY, "to_tbl", "%s",
                             rtnl_rtntype_n2a(frh->action, b1, sizeof(b1)));
        }
-- 
2.20.1

Reply via email to