DEFINE_RTNL_MESSAGE_ADDR_GETTER(ifa_family, family, int);
DEFINE_RTNL_MESSAGE_PREFIXLEN_SETTER(addr, struct ifaddrmsg, ifa_family, ifa_prefixlen, prefixlen, uint8_t);
DEFINE_RTNL_MESSAGE_ADDR_GETTER(ifa_prefixlen, prefixlen, uint8_t);
-DEFINE_RTNL_MESSAGE_ADDR_SETTER(ifa_flags, flags, uint8_t);
-DEFINE_RTNL_MESSAGE_ADDR_GETTER(ifa_flags, flags, uint8_t);
DEFINE_RTNL_MESSAGE_ADDR_SETTER(ifa_scope, scope, uint8_t);
DEFINE_RTNL_MESSAGE_ADDR_GETTER(ifa_scope, scope, uint8_t);
for (sd_netlink_message *m = reply; m; m = sd_netlink_message_next(m)) {
uint16_t type;
- unsigned char scope, flags;
+ unsigned char scope;
int family, ifindex;
+ uint32_t flags;
ASSERT_OK(sd_netlink_message_get_type(m, &type));
ASSERT_EQ(type, RTM_NEWADDR);
ASSERT_OK(sd_rtnl_message_addr_get_ifindex(m, &ifindex));
ASSERT_OK(sd_rtnl_message_addr_get_family(m, &family));
ASSERT_OK(sd_rtnl_message_addr_get_scope(m, &scope));
- ASSERT_OK(sd_rtnl_message_addr_get_flags(m, &flags));
+ ASSERT_OK(sd_netlink_message_read_u32(m, IFA_FLAGS, &flags));
ASSERT_GT(ifindex, 0);
ASSERT_TRUE(IN_SET(family, AF_INET, AF_INET6));
assert(a);
assert(m);
- r = sd_rtnl_message_addr_get_flags(m, &a->flags);
+ r = sd_netlink_message_read_u32(m, IFA_FLAGS, &a->flags);
if (r < 0)
return r;
union in_addr_union in_addr_broadcast;
unsigned char prefixlen;
- unsigned char flags, scope;
+ unsigned char scope;
+ uint32_t flags;
DnsResourceRecord *llmnr_address_rr;
DnsResourceRecord *llmnr_ptr_rr;
for (sd_netlink_message *m = reply; m; m = sd_netlink_message_next(m)) {
union in_addr_union a;
- unsigned char flags, scope;
+ unsigned char scope;
uint16_t type;
int ifi, family;
if (af != AF_UNSPEC && af != family)
continue;
- r = sd_rtnl_message_addr_get_flags(m, &flags);
+ uint32_t flags;
+ r = sd_netlink_message_read_u32(m, IFA_FLAGS, &flags);
if (r < 0)
return r;
if ((flags & (IFA_F_DEPRECATED|IFA_F_TENTATIVE)) != 0)
if (r < 0)
return r;
- r = sd_rtnl_message_addr_set_flags(req, IFA_F_PERMANENT);
+ r = sd_rtnl_message_addr_set_scope(req, RT_SCOPE_HOST);
if (r < 0)
return r;
- r = sd_rtnl_message_addr_set_scope(req, RT_SCOPE_HOST);
+ r = sd_netlink_message_append_u32(req, IFA_FLAGS, IFA_F_PERMANENT);
if (r < 0)
return r;
return r;
uint32_t flags = IFA_F_PERMANENT|IFA_F_NOPREFIXROUTE;
- r = sd_rtnl_message_addr_set_flags(req, flags & 0xffu); /* rtnetlink wants low 8 bit of flags via regular flags field… */
+ r = sd_netlink_message_append_u32(req, IFA_FLAGS, flags);
if (r < 0)
return r;
- if ((flags & ~0xffu) != 0) {
- r = sd_netlink_message_append_u32(req, IFA_FLAGS, flags); /* …and the rest of the flags via IFA_FLAGS */
- if (r < 0)
- return r;
- }
r = sd_rtnl_message_addr_set_scope(req, RT_SCOPE_HOST);
if (r < 0)
int sd_rtnl_message_addr_get_family(sd_netlink_message *m, int *ret); /* ifa_family */
int sd_rtnl_message_addr_set_prefixlen(sd_netlink_message *m, uint8_t prefixlen); /* ifa_prefixlen */
int sd_rtnl_message_addr_get_prefixlen(sd_netlink_message *m, uint8_t *ret);
-int sd_rtnl_message_addr_set_flags(sd_netlink_message *m, uint8_t flags); /* ifa_flags */
-int sd_rtnl_message_addr_get_flags(sd_netlink_message *m, uint8_t *ret);
int sd_rtnl_message_addr_set_scope(sd_netlink_message *m, uint8_t scope); /* ifa_scope */
int sd_rtnl_message_addr_get_scope(sd_netlink_message *m, uint8_t *ret);