Commit 7fc6561c authored by Stanislav Kinsbursky's avatar Stanislav Kinsbursky Committed by Cyrill Gorcunov

show: inet sockets dump parsing support added

Nothing to comment there.
Signed-off-by: 's avatarStanislav Kinsbursky <skinsbursky@parallels.com>
Acked-by: 's avatarPavel Emelyanov <xemul@parallels.com>
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
parent f3253a40
...@@ -437,6 +437,9 @@ static int cr_parse_file(struct cr_options *opts) ...@@ -437,6 +437,9 @@ static int cr_parse_file(struct cr_options *opts)
case UNIXSK_MAGIC: case UNIXSK_MAGIC:
show_unixsk(fd); show_unixsk(fd);
break; break;
case INETSK_MAGIC:
show_inetsk(fd);
break;
default: default:
pr_err("Unknown magic %x on %s\n", magic, opts->show_dump_file); pr_err("Unknown magic %x on %s\n", magic, opts->show_dump_file);
goto err; goto err;
...@@ -508,6 +511,8 @@ static int cr_show_all(unsigned long pid, struct cr_options *opts) ...@@ -508,6 +511,8 @@ static int cr_show_all(unsigned long pid, struct cr_options *opts)
show_unixsk(cr_fdset->fds[CR_FD_UNIXSK]); show_unixsk(cr_fdset->fds[CR_FD_UNIXSK]);
show_inetsk(cr_fdset->fds[CR_FD_INETSK]);
close_cr_fdset(&cr_fdset); close_cr_fdset(&cr_fdset);
if (opts->leader_only) if (opts->leader_only)
......
...@@ -11,5 +11,6 @@ extern int try_dump_socket(pid_t pid, int fd, struct cr_fdset *cr_fdset); ...@@ -11,5 +11,6 @@ extern int try_dump_socket(pid_t pid, int fd, struct cr_fdset *cr_fdset);
extern int collect_sockets(void); extern int collect_sockets(void);
extern int prepare_sockets(int pid); extern int prepare_sockets(int pid);
extern void show_unixsk(int fd); extern void show_unixsk(int fd);
extern void show_inetsk(int fd);
#endif /* CR_SOCKETS_H__ */ #endif /* CR_SOCKETS_H__ */
...@@ -118,7 +118,7 @@ static void show_one_inet_img(char *act, struct inet_sk_entry *e) ...@@ -118,7 +118,7 @@ static void show_one_inet_img(char *act, struct inet_sk_entry *e)
} }
dprintk("\t%s: fd %d family %d type %d proto %d port %d " dprintk("\t%s: fd %d family %d type %d proto %d port %d "
"state %d src_addr %d bytes\n", "state %d src_addr %d\n",
act, e->fd, e->family, e->type, e->proto, e->src_port, e->state, act, e->fd, e->family, e->type, e->proto, e->src_port, e->state,
src_addr); src_addr);
} }
...@@ -971,6 +971,36 @@ int prepare_sockets(int pid) ...@@ -971,6 +971,36 @@ int prepare_sockets(int pid)
return prepare_unix_sockets(pid); return prepare_unix_sockets(pid);
} }
void show_inetsk(int fd)
{
struct inet_sk_entry ie;
int ret = 0;
pr_img_head(CR_FD_INETSK);
while (1) {
char src_addr[INET_ADDR_LEN] = "<unknown>";
ret = read_ptr_safe_eof(fd, &ie, out);
if (!ret)
goto out;
if (inet_ntop(AF_INET, (void *)ie.src_addr, src_addr,
INET_ADDR_LEN) == NULL) {
pr_err("Failed to translate address: %d\n", errno);
}
pr_info("fd %d family %d type %d proto %d port %d state %d "
"--> %s\n", ie.fd, ie.family, ie.type, ie.proto,
ie.src_port, ie.state, src_addr);
}
out:
if (ret)
pr_info("\n");
pr_img_tail(CR_FD_INETSK);
}
void show_unixsk(int fd) void show_unixsk(int fd)
{ {
struct unix_sk_entry ue; struct unix_sk_entry ue;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment