From: Masatake YAMATO Date: Tue, 21 Feb 2023 14:56:18 +0000 (+0900) Subject: lsfd: use extra information loaded from /proc/net/udplite X-Git-Tag: v2.39-rc1~52^2~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c779f4120468286a5a3d0ab54c396f9654b33855;p=thirdparty%2Futil-linux.git lsfd: use extra information loaded from /proc/net/udplite Signed-off-by: Masatake YAMATO --- diff --git a/misc-utils/lsfd-sock-xinfo.c b/misc-utils/lsfd-sock-xinfo.c index a2ecfef897..c833f61a65 100644 --- a/misc-utils/lsfd-sock-xinfo.c +++ b/misc-utils/lsfd-sock-xinfo.c @@ -43,6 +43,7 @@ static void load_xinfo_from_proc_unix(ino_t netns_inode); static void load_xinfo_from_proc_raw(ino_t netns_inode); static void load_xinfo_from_proc_tcp(ino_t netns_inode); 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_raw6(ino_t netns_inode); @@ -84,6 +85,7 @@ static void load_sock_xinfo_no_nsswitch(ino_t netns) load_xinfo_from_proc_unix(netns); load_xinfo_from_proc_tcp(netns); load_xinfo_from_proc_udp(netns); + load_xinfo_from_proc_udplite(netns); load_xinfo_from_proc_raw(netns); load_xinfo_from_proc_tcp6(netns); load_xinfo_from_proc_udp6(netns); @@ -838,6 +840,45 @@ static void load_xinfo_from_proc_udp(ino_t netns_inode) &udp_xinfo_class); } +/* + * UDP-Lite + */ +static bool udplite_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(INET, sock_xinfo, column_id, str) + || l4_fill_column_handler(UDPLITE, sock_xinfo, column_id, str); +} + +static const struct l4_xinfo_class udplite_xinfo_class = { + .sock = { + .get_name = udp_get_name, + .get_type = udp_get_type, + .get_state = tcp_get_state, + .get_listening = NULL, + .fill_column = udplite_fill_column, + .free = NULL, + }, + .scan_line = tcp_xinfo_scan_line, + .get_addr = tcp_xinfo_get_addr, + .is_any_addr = tcp_xinfo_is_any_addr, + .family = AF_INET, + .l3_decorator = {"", ""}, +}; + +static void load_xinfo_from_proc_udplite(ino_t netns_inode) +{ + load_xinfo_from_proc_inet_L4(netns_inode, + "/proc/net/udplite", + &udplite_xinfo_class); +} + + /* * RAW */ diff --git a/misc-utils/lsfd.1.adoc b/misc-utils/lsfd.1.adoc index 96be5526e2..bef4508af3 100644 --- a/misc-utils/lsfd.1.adoc +++ b/misc-utils/lsfd.1.adoc @@ -227,6 +227,9 @@ UDP::: state=_SOCK.STATE_[ laddr=_UDP.LADDR_ [ raddr=_UDP.RADDR_]] + *lsfd* hides ``raddr=`` if _UDP.RADDR_ is ``0.0.0.0`` and _UDP.RPORT_ is 0. + +UDPLITE::: +state=_SOCK.STATE_[ laddr=_UDPLITE.LADDR_ [ raddr=_UDPLITE.RADDR_]] + UNIX-STREAM::: state=_SOCK.STATE_[ path=_UNIX.PATH_] @@ -350,6 +353,18 @@ Remote IP address and remote UDP port. UDP.RPORT <``integer``>:: Remote UDP port. +UDPLITE.LADDR <``string``>:: +Local IP address and local UDPLite port. + +UDPLITE.LPORT <``integer``>:: +Local UDP port. + +UDPLITE.RADDR <``string``>:: +Remote IP address and remote UDPLite port. + +UDPLITE.RPORT <``integer``>:: +Remote UDP port. + UID <``number``>:: User ID number. diff --git a/misc-utils/lsfd.c b/misc-utils/lsfd.c index 7f6275ee8b..5cb1dc40be 100644 --- a/misc-utils/lsfd.c +++ b/misc-utils/lsfd.c @@ -231,6 +231,14 @@ static const struct colinfo infos[] = { N_("local UDP port") }, [COL_UDP_RPORT]={"UDP.RPORT", 0, SCOLS_FL_RIGHT, SCOLS_JSON_NUMBER, N_("remote UDP port") }, + [COL_UDPLITE_LADDR]={ "UDPLITE.LADDR",0, SCOLS_FL_RIGHT, SCOLS_JSON_STRING, + N_("local UDPLite address (INET address:UDPLite port)") }, + [COL_UDPLITE_RADDR]={"UDPLITE.RADDR", 0, SCOLS_FL_RIGHT, SCOLS_JSON_STRING, + N_("remote UDPLite address (INET address:UDPLite port)") }, + [COL_UDPLITE_LPORT]={"UDPLITE.LPORT", 0, SCOLS_FL_RIGHT, SCOLS_JSON_NUMBER, + N_("local UDPLite port") }, + [COL_UDPLITE_RPORT]={"UDPLITE.RPORT", 0, SCOLS_FL_RIGHT, SCOLS_JSON_NUMBER, + N_("remote UDPLite port") }, [COL_UID] = { "UID", 0, SCOLS_FL_RIGHT, SCOLS_JSON_NUMBER, N_("user ID number of the process") }, [COL_UNIX_PATH]={ "UNIX.PATH",0.4,SCOLS_FL_TRUNC,SCOLS_JSON_STRING, diff --git a/misc-utils/lsfd.h b/misc-utils/lsfd.h index 3023af13b0..1166f9fe02 100644 --- a/misc-utils/lsfd.h +++ b/misc-utils/lsfd.h @@ -90,6 +90,10 @@ enum { COL_UDP_RADDR, COL_UDP_LPORT, COL_UDP_RPORT, + COL_UDPLITE_LADDR, + COL_UDPLITE_RADDR, + COL_UDPLITE_LPORT, + COL_UDPLITE_RPORT, COL_UID, /* process */ COL_UNIX_PATH, COL_USER, /* process */