mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2026-02-01 19:36:26 +00:00
ss: Split inet_show_netlink into parts
The existing function inet_show_netlink sends tcp-diag request and then receives back the response and prints it on the screen. The sock-diag and legacy tcp-diag have different request types, but report sockets in the same format. In order to support both it's convenient to split the code into sending and receiving parts. Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
parent
3fe5b534fe
commit
746a695f86
27
misc/ss.c
27
misc/ss.c
@ -1495,9 +1495,8 @@ static int inet_show_sock(struct nlmsghdr *nlh, struct filter *f)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int inet_show_netlink(struct filter *f, FILE *dump_fp, int protocol)
|
||||
static int tcpdiag_send(int fd, int protocol, struct filter *f)
|
||||
{
|
||||
int fd;
|
||||
struct sockaddr_nl nladdr;
|
||||
struct {
|
||||
struct nlmsghdr nlh;
|
||||
@ -1507,12 +1506,8 @@ static int inet_show_netlink(struct filter *f, FILE *dump_fp, int protocol)
|
||||
int bclen;
|
||||
struct msghdr msg;
|
||||
struct rtattr rta;
|
||||
char buf[8192];
|
||||
struct iovec iov[3];
|
||||
|
||||
if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_INET_DIAG)) < 0)
|
||||
return -1;
|
||||
|
||||
memset(&nladdr, 0, sizeof(nladdr));
|
||||
nladdr.nl_family = AF_NETLINK;
|
||||
|
||||
@ -1563,6 +1558,26 @@ static int inet_show_netlink(struct filter *f, FILE *dump_fp, int protocol)
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int inet_show_netlink(struct filter *f, FILE *dump_fp, int protocol)
|
||||
{
|
||||
int fd;
|
||||
struct sockaddr_nl nladdr;
|
||||
struct msghdr msg;
|
||||
char buf[8192];
|
||||
struct iovec iov[3];
|
||||
|
||||
if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_INET_DIAG)) < 0)
|
||||
return -1;
|
||||
|
||||
if (tcpdiag_send(fd, protocol, f))
|
||||
return -1;
|
||||
|
||||
memset(&nladdr, 0, sizeof(nladdr));
|
||||
nladdr.nl_family = AF_NETLINK;
|
||||
|
||||
iov[0] = (struct iovec){
|
||||
.iov_base = buf,
|
||||
.iov_len = sizeof(buf)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user