netlink: move nl_nlmsghdr_to_str() to netlink header
This commit is contained in:
@@ -951,106 +951,6 @@ _nl_addattr_l (struct nlmsghdr *n,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *
|
|
||||||
_nl_nlmsghdr_to_str (const struct nlmsghdr *hdr, char *buf, gsize len)
|
|
||||||
{
|
|
||||||
const char *b;
|
|
||||||
const char *s;
|
|
||||||
guint flags, flags_before;
|
|
||||||
const char *prefix;
|
|
||||||
|
|
||||||
nm_utils_to_string_buffer_init (&buf, &len);
|
|
||||||
b = buf;
|
|
||||||
|
|
||||||
switch (hdr->nlmsg_type) {
|
|
||||||
case RTM_NEWLINK: s = "RTM_NEWLINK"; break;
|
|
||||||
case RTM_DELLINK: s = "RTM_DELLINK"; break;
|
|
||||||
case RTM_NEWADDR: s = "RTM_NEWADDR"; break;
|
|
||||||
case RTM_DELADDR: s = "RTM_DELADDR"; break;
|
|
||||||
case RTM_NEWROUTE: s = "RTM_NEWROUTE"; break;
|
|
||||||
case RTM_DELROUTE: s = "RTM_DELROUTE"; break;
|
|
||||||
case RTM_NEWQDISC: s = "RTM_NEWQDISC"; break;
|
|
||||||
case RTM_DELQDISC: s = "RTM_DELQDISC"; break;
|
|
||||||
case RTM_NEWTFILTER: s = "RTM_NEWTFILTER"; break;
|
|
||||||
case RTM_DELTFILTER: s = "RTM_DELTFILTER"; break;
|
|
||||||
case NLMSG_NOOP: s = "NLMSG_NOOP"; break;
|
|
||||||
case NLMSG_ERROR: s = "NLMSG_ERROR"; break;
|
|
||||||
case NLMSG_DONE: s = "NLMSG_DONE"; break;
|
|
||||||
case NLMSG_OVERRUN: s = "NLMSG_OVERRUN"; break;
|
|
||||||
default: s = NULL; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (s)
|
|
||||||
nm_utils_strbuf_append_str (&buf, &len, s);
|
|
||||||
else
|
|
||||||
nm_utils_strbuf_append (&buf, &len, "(%u)", (unsigned) hdr->nlmsg_type);
|
|
||||||
|
|
||||||
flags = hdr->nlmsg_flags;
|
|
||||||
|
|
||||||
if (!flags) {
|
|
||||||
nm_utils_strbuf_append_str (&buf, &len, ", flags 0");
|
|
||||||
goto flags_done;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define _F(f, n) \
|
|
||||||
G_STMT_START { \
|
|
||||||
if (NM_FLAGS_ALL (flags, f)) { \
|
|
||||||
flags &= ~(f); \
|
|
||||||
nm_utils_strbuf_append (&buf, &len, "%s%s", prefix, n); \
|
|
||||||
if (!flags) \
|
|
||||||
goto flags_done; \
|
|
||||||
prefix = ","; \
|
|
||||||
} \
|
|
||||||
} G_STMT_END
|
|
||||||
|
|
||||||
prefix = ", flags ";
|
|
||||||
flags_before = flags;
|
|
||||||
_F (NLM_F_REQUEST, "request");
|
|
||||||
_F (NLM_F_MULTI, "multi");
|
|
||||||
_F (NLM_F_ACK, "ack");
|
|
||||||
_F (NLM_F_ECHO, "echo");
|
|
||||||
_F (NLM_F_DUMP_INTR, "dump_intr");
|
|
||||||
_F (0x20 /*NLM_F_DUMP_FILTERED*/, "dump_filtered");
|
|
||||||
|
|
||||||
if (flags_before != flags)
|
|
||||||
prefix = ";";
|
|
||||||
|
|
||||||
switch (hdr->nlmsg_type) {
|
|
||||||
case RTM_NEWLINK:
|
|
||||||
case RTM_NEWADDR:
|
|
||||||
case RTM_NEWROUTE:
|
|
||||||
case RTM_NEWQDISC:
|
|
||||||
case RTM_NEWTFILTER:
|
|
||||||
_F (NLM_F_REPLACE, "replace");
|
|
||||||
_F (NLM_F_EXCL, "excl");
|
|
||||||
_F (NLM_F_CREATE, "create");
|
|
||||||
_F (NLM_F_APPEND, "append");
|
|
||||||
break;
|
|
||||||
case RTM_GETLINK:
|
|
||||||
case RTM_GETADDR:
|
|
||||||
case RTM_GETROUTE:
|
|
||||||
case RTM_DELQDISC:
|
|
||||||
case RTM_DELTFILTER:
|
|
||||||
_F (NLM_F_DUMP, "dump");
|
|
||||||
_F (NLM_F_ROOT, "root");
|
|
||||||
_F (NLM_F_MATCH, "match");
|
|
||||||
_F (NLM_F_ATOMIC, "atomic");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
#undef _F
|
|
||||||
|
|
||||||
if (flags_before != flags)
|
|
||||||
prefix = ";";
|
|
||||||
nm_utils_strbuf_append (&buf, &len, "%s0x%04x", prefix, flags);
|
|
||||||
|
|
||||||
flags_done:
|
|
||||||
|
|
||||||
nm_utils_strbuf_append (&buf, &len, ", seq %u", (unsigned) hdr->nlmsg_seq);
|
|
||||||
|
|
||||||
return b;
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************************
|
/******************************************************************
|
||||||
* NMPObject/netlink functions
|
* NMPObject/netlink functions
|
||||||
******************************************************************/
|
******************************************************************/
|
||||||
@@ -4363,7 +4263,7 @@ event_valid_msg (NMPlatform *platform, struct nl_msg *msg, gboolean handle_event
|
|||||||
obj = nmp_object_new_from_nl (platform, cache, msg, id_only);
|
obj = nmp_object_new_from_nl (platform, cache, msg, id_only);
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
_LOGT ("event-notification: %s: ignore",
|
_LOGT ("event-notification: %s: ignore",
|
||||||
_nl_nlmsghdr_to_str (msghdr, buf_nlmsghdr, sizeof (buf_nlmsghdr)));
|
nl_nlmsghdr_to_str (msghdr, buf_nlmsghdr, sizeof (buf_nlmsghdr)));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4381,7 +4281,7 @@ event_valid_msg (NMPlatform *platform, struct nl_msg *msg, gboolean handle_event
|
|||||||
}
|
}
|
||||||
|
|
||||||
_LOGT ("event-notification: %s%s: %s",
|
_LOGT ("event-notification: %s%s: %s",
|
||||||
_nl_nlmsghdr_to_str (msghdr, buf_nlmsghdr, sizeof (buf_nlmsghdr)),
|
nl_nlmsghdr_to_str (msghdr, buf_nlmsghdr, sizeof (buf_nlmsghdr)),
|
||||||
is_dump ? ", in-dump" : "",
|
is_dump ? ", in-dump" : "",
|
||||||
nmp_object_to_string (obj,
|
nmp_object_to_string (obj,
|
||||||
id_only ? NMP_OBJECT_TO_STRING_ID : NMP_OBJECT_TO_STRING_PUBLIC,
|
id_only ? NMP_OBJECT_TO_STRING_ID : NMP_OBJECT_TO_STRING_PUBLIC,
|
||||||
@@ -6655,7 +6555,7 @@ continue_reading:
|
|||||||
}
|
}
|
||||||
|
|
||||||
_LOGt ("netlink: recvmsg: new message %s",
|
_LOGt ("netlink: recvmsg: new message %s",
|
||||||
_nl_nlmsghdr_to_str (hdr, buf_nlmsghdr, sizeof (buf_nlmsghdr)));
|
nl_nlmsghdr_to_str (hdr, buf_nlmsghdr, sizeof (buf_nlmsghdr)));
|
||||||
|
|
||||||
if (creds)
|
if (creds)
|
||||||
nlmsg_set_creds (msg, creds);
|
nlmsg_set_creds (msg, creds);
|
||||||
|
@@ -22,6 +22,110 @@
|
|||||||
|
|
||||||
#include "nm-netlink.h"
|
#include "nm-netlink.h"
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
const char *
|
||||||
|
nl_nlmsghdr_to_str (const struct nlmsghdr *hdr, char *buf, gsize len)
|
||||||
|
{
|
||||||
|
const char *b;
|
||||||
|
const char *s;
|
||||||
|
guint flags, flags_before;
|
||||||
|
const char *prefix;
|
||||||
|
|
||||||
|
if (!nm_utils_to_string_buffer_init_null (hdr, &buf, &len))
|
||||||
|
return buf;
|
||||||
|
|
||||||
|
b = buf;
|
||||||
|
|
||||||
|
switch (hdr->nlmsg_type) {
|
||||||
|
case RTM_NEWLINK: s = "RTM_NEWLINK"; break;
|
||||||
|
case RTM_DELLINK: s = "RTM_DELLINK"; break;
|
||||||
|
case RTM_NEWADDR: s = "RTM_NEWADDR"; break;
|
||||||
|
case RTM_DELADDR: s = "RTM_DELADDR"; break;
|
||||||
|
case RTM_NEWROUTE: s = "RTM_NEWROUTE"; break;
|
||||||
|
case RTM_DELROUTE: s = "RTM_DELROUTE"; break;
|
||||||
|
case RTM_NEWQDISC: s = "RTM_NEWQDISC"; break;
|
||||||
|
case RTM_DELQDISC: s = "RTM_DELQDISC"; break;
|
||||||
|
case RTM_NEWTFILTER: s = "RTM_NEWTFILTER"; break;
|
||||||
|
case RTM_DELTFILTER: s = "RTM_DELTFILTER"; break;
|
||||||
|
case NLMSG_NOOP: s = "NLMSG_NOOP"; break;
|
||||||
|
case NLMSG_ERROR: s = "NLMSG_ERROR"; break;
|
||||||
|
case NLMSG_DONE: s = "NLMSG_DONE"; break;
|
||||||
|
case NLMSG_OVERRUN: s = "NLMSG_OVERRUN"; break;
|
||||||
|
default: s = NULL; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (s)
|
||||||
|
nm_utils_strbuf_append_str (&buf, &len, s);
|
||||||
|
else
|
||||||
|
nm_utils_strbuf_append (&buf, &len, "(%u)", (unsigned) hdr->nlmsg_type);
|
||||||
|
|
||||||
|
flags = hdr->nlmsg_flags;
|
||||||
|
|
||||||
|
if (!flags) {
|
||||||
|
nm_utils_strbuf_append_str (&buf, &len, ", flags 0");
|
||||||
|
goto flags_done;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define _F(f, n) \
|
||||||
|
G_STMT_START { \
|
||||||
|
if (NM_FLAGS_ALL (flags, f)) { \
|
||||||
|
flags &= ~(f); \
|
||||||
|
nm_utils_strbuf_append (&buf, &len, "%s%s", prefix, n); \
|
||||||
|
if (!flags) \
|
||||||
|
goto flags_done; \
|
||||||
|
prefix = ","; \
|
||||||
|
} \
|
||||||
|
} G_STMT_END
|
||||||
|
|
||||||
|
prefix = ", flags ";
|
||||||
|
flags_before = flags;
|
||||||
|
_F (NLM_F_REQUEST, "request");
|
||||||
|
_F (NLM_F_MULTI, "multi");
|
||||||
|
_F (NLM_F_ACK, "ack");
|
||||||
|
_F (NLM_F_ECHO, "echo");
|
||||||
|
_F (NLM_F_DUMP_INTR, "dump_intr");
|
||||||
|
_F (0x20 /*NLM_F_DUMP_FILTERED*/, "dump_filtered");
|
||||||
|
|
||||||
|
if (flags_before != flags)
|
||||||
|
prefix = ";";
|
||||||
|
|
||||||
|
switch (hdr->nlmsg_type) {
|
||||||
|
case RTM_NEWLINK:
|
||||||
|
case RTM_NEWADDR:
|
||||||
|
case RTM_NEWROUTE:
|
||||||
|
case RTM_NEWQDISC:
|
||||||
|
case RTM_NEWTFILTER:
|
||||||
|
_F (NLM_F_REPLACE, "replace");
|
||||||
|
_F (NLM_F_EXCL, "excl");
|
||||||
|
_F (NLM_F_CREATE, "create");
|
||||||
|
_F (NLM_F_APPEND, "append");
|
||||||
|
break;
|
||||||
|
case RTM_GETLINK:
|
||||||
|
case RTM_GETADDR:
|
||||||
|
case RTM_GETROUTE:
|
||||||
|
case RTM_DELQDISC:
|
||||||
|
case RTM_DELTFILTER:
|
||||||
|
_F (NLM_F_DUMP, "dump");
|
||||||
|
_F (NLM_F_ROOT, "root");
|
||||||
|
_F (NLM_F_MATCH, "match");
|
||||||
|
_F (NLM_F_ATOMIC, "atomic");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef _F
|
||||||
|
|
||||||
|
if (flags_before != flags)
|
||||||
|
prefix = ";";
|
||||||
|
nm_utils_strbuf_append (&buf, &len, "%s0x%04x", prefix, flags);
|
||||||
|
|
||||||
|
flags_done:
|
||||||
|
|
||||||
|
nm_utils_strbuf_append (&buf, &len, ", seq %u", (unsigned) hdr->nlmsg_seq);
|
||||||
|
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Reimplementations/copied from libnl3/genl
|
* Reimplementations/copied from libnl3/genl
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
@@ -24,6 +24,10 @@
|
|||||||
#include <netlink/msg.h>
|
#include <netlink/msg.h>
|
||||||
#include <netlink/attr.h>
|
#include <netlink/attr.h>
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
const char *nl_nlmsghdr_to_str (const struct nlmsghdr *hdr, char *buf, gsize len);
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* libnl3 compat code
|
* libnl3 compat code
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
Reference in New Issue
Block a user