sd-netlink: drop NETLINK_TYPE_META

The NETLINK_TYPE_META pseudo-type is actually equivalent to an empty
nested type. Drop it and define an empty type-system instead.

This also has the nice side-effect that m->container_type_system[0] is
never NULL (which has really nasty side-effects if you try to read
attributes).
This commit is contained in:
David Herrmann 2015-06-23 11:54:43 +02:00
parent c1df8dee28
commit 979e7eb9cc
2 changed files with 11 additions and 3 deletions

View File

@ -53,6 +53,15 @@ struct NLTypeSystem {
static const NLTypeSystem rtnl_link_type_system;
static const NLType empty_types[1] = {
/* fake array to avoid .types==NULL, which denotes invalid type-systems */
};
static const NLTypeSystem empty_type_system = {
.count = 0,
.types = empty_types,
};
static const NLType rtnl_link_info_data_veth_types[VETH_INFO_MAX + 1] = {
[VETH_INFO_PEER] = { .type = NETLINK_TYPE_NESTED, .type_system = &rtnl_link_type_system, .size = sizeof(struct ifinfomsg) },
};
@ -450,8 +459,8 @@ static const NLTypeSystem rtnl_neigh_type_system = {
};
static const NLType rtnl_types[RTM_MAX + 1] = {
[NLMSG_DONE] = { .type = NETLINK_TYPE_META, .size = 0 },
[NLMSG_ERROR] = { .type = NETLINK_TYPE_META, .size = sizeof(struct nlmsgerr) },
[NLMSG_DONE] = { .type = NETLINK_TYPE_NESTED, .type_system = &empty_type_system, .size = 0 },
[NLMSG_ERROR] = { .type = NETLINK_TYPE_NESTED, .type_system = &empty_type_system, .size = sizeof(struct nlmsgerr) },
[RTM_NEWLINK] = { .type = NETLINK_TYPE_NESTED, .type_system = &rtnl_link_type_system, .size = sizeof(struct ifinfomsg) },
[RTM_DELLINK] = { .type = NETLINK_TYPE_NESTED, .type_system = &rtnl_link_type_system, .size = sizeof(struct ifinfomsg) },
[RTM_GETLINK] = { .type = NETLINK_TYPE_NESTED, .type_system = &rtnl_link_type_system, .size = sizeof(struct ifinfomsg) },

View File

@ -23,7 +23,6 @@
enum {
NETLINK_TYPE_UNSPEC,
NETLINK_TYPE_META,
NETLINK_TYPE_U8, /* NLA_U8 */
NETLINK_TYPE_U16, /* NLA_U16 */
NETLINK_TYPE_U32, /* NLA_U32 */