]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lsfd: use extra information loaded from /proc/net/udplite6
authorMasatake YAMATO <yamato@redhat.com>
Tue, 21 Feb 2023 15:05:00 +0000 (00:05 +0900)
committerMasatake YAMATO <yamato@redhat.com>
Sun, 26 Feb 2023 08:26:27 +0000 (17:26 +0900)
Signed-off-by: Masatake YAMATO <yamato@redhat.com>
misc-utils/lsfd-sock-xinfo.c

index c833f61a65de0e0cbe9e12ecbab9ba2a930ef137..59037729b5e906f0eb5e8ad8d6a65247729d4bb0 100644 (file)
@@ -46,6 +46,7 @@ static void load_xinfo_from_proc_udp(ino_t netns_inode);
 static void load_xinfo_from_proc_udplite(ino_t netns_inode);
 static void load_xinfo_from_proc_tcp6(ino_t netns_inode);
 static void load_xinfo_from_proc_udp6(ino_t netns_inode);
+static void load_xinfo_from_proc_udplite6(ino_t netns_inode);
 static void load_xinfo_from_proc_raw6(ino_t netns_inode);
 
 static int self_netns_fd = -1;
@@ -89,6 +90,7 @@ static void load_sock_xinfo_no_nsswitch(ino_t netns)
        load_xinfo_from_proc_raw(netns);
        load_xinfo_from_proc_tcp6(netns);
        load_xinfo_from_proc_udp6(netns);
+       load_xinfo_from_proc_udplite6(netns);
        load_xinfo_from_proc_raw6(netns);
 }
 
@@ -1132,6 +1134,44 @@ static void load_xinfo_from_proc_udp6(ino_t netns_inode)
                                     &udp6_xinfo_class);
 }
 
+/*
+ * UDPLITEv6
+ */
+static bool udplite6_fill_column(struct proc *proc __attribute__((__unused__)),
+                                struct sock_xinfo *sock_xinfo,
+                                struct sock *sock __attribute__((__unused__)),
+                                struct libscols_line *ln __attribute__((__unused__)),
+                                int column_id,
+                                size_t column_index __attribute__((__unused__)),
+                                char **str)
+{
+       return l3_fill_column_handler(INET6, sock_xinfo, column_id, str)
+               || l4_fill_column_handler(UDPLITE, sock_xinfo, column_id, str);
+}
+
+static const struct l4_xinfo_class udplite6_xinfo_class = {
+       .sock = {
+               .get_name = udp_get_name,
+               .get_type = udp_get_type,
+               .get_state = tcp_get_state,
+               .get_listening = NULL,
+               .fill_column = udplite6_fill_column,
+               .free = NULL,
+       },
+       .scan_line = tcp6_xinfo_scan_line,
+       .get_addr = tcp6_xinfo_get_addr,
+       .is_any_addr = tcp6_xinfo_is_any_addr,
+       .family = AF_INET6,
+       .l3_decorator = {"[", "]"},
+};
+
+static void load_xinfo_from_proc_udplite6(ino_t netns_inode)
+{
+       load_xinfo_from_proc_inet_L4(netns_inode,
+                                    "/proc/net/udplite6",
+                                    &udplite6_xinfo_class);
+}
+
 /*
  * RAW6
  */