mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-22 01:51:51 +00:00
The messages are filtered by their type LOG_MSG - plain messages, they escape any (!) log level filtration and go to stdout LOG_ERROR - error messages LOG_WARN - warning messages LOG_INFO - informative messages LOG_DEBUG - debug messages By default the LOG_WARN log level is used, thus LOG_INFO and LOG_DEBUG messages will not appear in output stream. pr_panic helper was replaced with pr_err, pr_warning shorthanded to pr_warn and old printk if rather pr_msg now. Because we share messages between "show" and "dump" actions, before the "show" action proceed we need to tune up log level and set it to LOG_INFO. Also note that printing of VMA and siginfo now became LOG_INFO messages, it was not that correct to print them regardless the log level. Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> Acked-by: Pavel Emelyanov <xemul@parallels.com>
42 lines
950 B
C
42 lines
950 B
C
#include <linux/types.h>
|
|
#include <sys/socket.h>
|
|
#include <linux/netlink.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
|
|
#include "libnetlink.h"
|
|
#include "util.h"
|
|
|
|
int parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len)
|
|
{
|
|
memset(tb, 0, sizeof(struct rtattr *) * (max + 1));
|
|
while (RTA_OK(rta, len)) {
|
|
if ((rta->rta_type <= max) && (!tb[rta->rta_type]))
|
|
tb[rta->rta_type] = rta;
|
|
rta = RTA_NEXT(rta,len);
|
|
}
|
|
if (len)
|
|
pr_warn("Trimmed RTA: len %d, rta_len %d\n", len, rta->rta_len);
|
|
return 0;
|
|
}
|
|
|
|
int nlmsg_receive(char *buf, int len, int (*cb)(struct nlmsghdr *))
|
|
{
|
|
struct nlmsghdr *hdr;
|
|
|
|
for (hdr = (struct nlmsghdr *)buf; NLMSG_OK(hdr, len); hdr = NLMSG_NEXT(hdr, len)) {
|
|
if (hdr->nlmsg_seq != CR_NLMSG_SEQ)
|
|
continue;
|
|
if (hdr->nlmsg_type == NLMSG_DONE)
|
|
return 0;
|
|
if (hdr->nlmsg_type == NLMSG_ERROR) {
|
|
pr_err("Error getting sockets list\n");
|
|
return -1;
|
|
}
|
|
if (cb(hdr))
|
|
return -1;
|
|
}
|
|
|
|
return 1;
|
|
}
|