]> git.ipfire.org Git - thirdparty/libnl.git/commitdiff
addr: add NL_DUMP_ENV function
authorPatrick McHardy <kaber@trash.net>
Wed, 7 Apr 2010 17:20:21 +0000 (19:20 +0200)
committerThomas Graf <tgraf@suug.ch>
Mon, 19 Apr 2010 10:43:01 +0000 (12:43 +0200)
Signed-off-by: Patrick McHardy <kaber@trash.net>
lib/route/addr.c

index b170a5097ab996768d53fae1db6266095481d401..2e72f6e9eff4a64a10ff92ee69de66c7ac4c0bfb 100644 (file)
@@ -400,6 +400,81 @@ static void addr_dump_stats(struct nl_object *obj, struct nl_dump_params *p)
        addr_dump_details(obj, p);
 }
 
+static void addr_dump_env(struct nl_object *obj, struct nl_dump_params *p)
+{
+       struct rtnl_addr *addr = (struct rtnl_addr *) obj;
+       struct nl_cache *link_cache;
+       char buf[128];
+
+       nl_dump_line(p, "ADDR_FAMILY=%s\n",
+                    nl_af2str(addr->a_family, buf, sizeof(buf)));
+
+       if (addr->ce_mask & ADDR_ATTR_LOCAL)
+               nl_dump_line(p, "ADDR_LOCAL=%s\n",
+                            nl_addr2str(addr->a_local, buf, sizeof(buf)));
+
+       if (addr->ce_mask & ADDR_ATTR_PEER)
+               nl_dump_line(p, "ADDR_PEER=%s\n",
+                            nl_addr2str(addr->a_peer, buf, sizeof(buf)));
+
+       if (addr->ce_mask & ADDR_ATTR_BROADCAST)
+               nl_dump_line(p, "ADDR_BROADCAST=%s\n",
+                            nl_addr2str(addr->a_bcast, buf, sizeof(buf)));
+
+       if (addr->ce_mask & ADDR_ATTR_ANYCAST)
+               nl_dump_line(p, "ADDR_ANYCAST=%s\n",
+                            nl_addr2str(addr->a_anycast, buf, sizeof(buf)));
+
+       if (addr->ce_mask & ADDR_ATTR_MULTICAST)
+               nl_dump_line(p, "ADDR_MULTICAST=%s\n",
+                            nl_addr2str(addr->a_multicast, buf,
+                                          sizeof(buf)));
+
+       if (addr->ce_mask & ADDR_ATTR_PREFIXLEN)
+               nl_dump_line(p, "ADDR_PREFIXLEN=%u\n",
+                            addr->a_prefixlen);
+       link_cache = nl_cache_mngt_require("route/link");
+
+       nl_dump_line(p, "ADDR_IFINDEX=%u\n", addr->a_ifindex);
+       if (link_cache)
+               nl_dump_line(p, "ADDR_IFNAME=%s\n",
+                            rtnl_link_i2name(link_cache, addr->a_ifindex,
+                                             buf, sizeof(buf)));
+
+       if (addr->ce_mask & ADDR_ATTR_SCOPE)
+               nl_dump_line(p, "ADDR_SCOPE=%s\n",
+                            rtnl_scope2str(addr->a_scope, buf, sizeof(buf)));
+
+       if (addr->ce_mask & ADDR_ATTR_LABEL)
+               nl_dump_line(p, "ADDR_LABEL=%s\n", addr->a_label);
+
+       rtnl_addr_flags2str(addr->a_flags, buf, sizeof(buf));
+       if (buf[0])
+               nl_dump_line(p, "ADDR_FLAGS=%s\n", buf);
+
+       if (addr->ce_mask & ADDR_ATTR_CACHEINFO) {
+               struct rtnl_addr_cacheinfo *ci = &addr->a_cacheinfo;
+
+               nl_dump_line(p, "ADDR_CACHEINFO_VALID=%s\n",
+                            ci->aci_valid == 0xFFFFFFFFU ? "forever" :
+                            nl_msec2str(ci->aci_valid * 1000,
+                                          buf, sizeof(buf)));
+
+               nl_dump_line(p, "ADDR_CACHEINFO_PREFERED=%s\n",
+                            ci->aci_prefered == 0xFFFFFFFFU ? "forever" :
+                            nl_msec2str(ci->aci_prefered * 1000,
+                                        buf, sizeof(buf)));
+
+               nl_dump_line(p, "ADDR_CACHEINFO_CREATED=%s\n",
+                            nl_msec2str(addr->a_cacheinfo.aci_cstamp * 10,
+                                        buf, sizeof(buf)));
+
+               nl_dump_line(p, "ADDR_CACHEINFO_LASTUPDATE=%s\n",
+                            nl_msec2str(addr->a_cacheinfo.aci_tstamp * 10,
+                                        buf, sizeof(buf)));
+       }
+}
+
 static int addr_compare(struct nl_object *_a, struct nl_object *_b,
                        uint32_t attrs, int flags)
 {
@@ -935,6 +1010,7 @@ static struct nl_object_ops addr_obj_ops = {
            [NL_DUMP_LINE]      = addr_dump_line,
            [NL_DUMP_DETAILS]   = addr_dump_details,
            [NL_DUMP_STATS]     = addr_dump_stats,
+           [NL_DUMP_ENV]       = addr_dump_env,
        },
        .oo_compare             = addr_compare,
        .oo_attrs2str           = addr_attrs2str,