]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
lib: rt_names: Add rtnl_dsfield_get_name()
authorPetr Machata <me@pmachata.org>
Sat, 2 Jan 2021 00:03:35 +0000 (01:03 +0100)
committerDavid Ahern <dsahern@kernel.org>
Mon, 18 Jan 2021 04:09:29 +0000 (04:09 +0000)
For formatting DSCP (not full dsfield), it would be handy to be able to
just get the name from the name table, and not get any of the remaining
cruft related to formatting. Add a new entry point to just fetch the
name table string uninterpreted. Use it from rtnl_dsfield_n2a().

Signed-off-by: Petr Machata <me@pmachata.org>
Signed-off-by: David Ahern <dsahern@kernel.org>
include/rt_names.h
lib/rt_names.c

index 990ed7f22e6915e21573bad983253c4beaf4eb9e..1835f3be2bed52aee8c19a5cbca5dc1da1d9e1b2 100644 (file)
@@ -9,6 +9,7 @@ const char *rtnl_rtscope_n2a(int id, char *buf, int len);
 const char *rtnl_rttable_n2a(__u32 id, char *buf, int len);
 const char *rtnl_rtrealm_n2a(int id, char *buf, int len);
 const char *rtnl_dsfield_n2a(int id, char *buf, int len);
+const char *rtnl_dsfield_get_name(int id);
 const char *rtnl_group_n2a(int id, char *buf, int len);
 
 int rtnl_rtprot_a2n(__u32 *id, const char *arg);
index ca0680a121502d44a5eee5ea331df9c96efd9cd8..b976471d7979b950945eb1245522b96c8babafe9 100644 (file)
@@ -479,18 +479,30 @@ static void rtnl_rtdsfield_initialize(void)
 
 const char *rtnl_dsfield_n2a(int id, char *buf, int len)
 {
+       const char *name;
+
        if (id < 0 || id >= 256) {
                snprintf(buf, len, "%d", id);
                return buf;
        }
+       if (!numeric) {
+               name = rtnl_dsfield_get_name(id);
+               if (name != NULL)
+                       return name;
+       }
+       snprintf(buf, len, "0x%02x", id);
+       return buf;
+}
+
+const char *rtnl_dsfield_get_name(int id)
+{
+       if (id < 0 || id >= 256)
+               return NULL;
        if (!rtnl_rtdsfield_tab[id]) {
                if (!rtnl_rtdsfield_init)
                        rtnl_rtdsfield_initialize();
        }
-       if (!numeric && rtnl_rtdsfield_tab[id])
-               return rtnl_rtdsfield_tab[id];
-       snprintf(buf, len, "0x%02x", id);
-       return buf;
+       return rtnl_rtdsfield_tab[id];
 }