Added attribute support for sd-rtnl

Added sd_rtnl_message_append_u8 and
  few attribute support in sd_rtnl_message_append_u32
       IFLA_GROUP, IFLA_TXQLEN, IFLA_NUM_TX_QUEUES, IFLA_NUM_RX_QUEUES
This commit is contained in:
Susant Sahani 2014-02-04 14:19:20 +05:30 committed by Tom Gundersen
parent d002827b03
commit 7b1796403a
2 changed files with 43 additions and 0 deletions

View file

@ -410,6 +410,44 @@ int sd_rtnl_message_append_string(sd_rtnl_message *m, unsigned short type, const
return 0;
}
int sd_rtnl_message_append_u8(sd_rtnl_message *m, unsigned short type, uint8_t data) {
uint16_t rtm_type;
int r;
assert_return(m, -EINVAL);
assert_return(!m->sealed, -EPERM);
r = sd_rtnl_message_get_type(m, &rtm_type);
if (r < 0)
return r;
switch (rtm_type) {
case RTM_NEWLINK:
case RTM_SETLINK:
case RTM_GETLINK:
case RTM_DELLINK:
switch (type) {
case IFLA_CARRIER:
case IFLA_OPERSTATE:
case IFLA_LINKMODE:
break;
default:
return -ENOTSUP;
}
break;
default:
return -ENOTSUP;
}
r = add_rtattr(m, type, &data, sizeof(uint8_t));
if (r < 0)
return r;
return 0;
}
int sd_rtnl_message_append_u16(sd_rtnl_message *m, unsigned short type, uint16_t data) {
uint16_t rtm_type;
int r;
@ -467,6 +505,10 @@ int sd_rtnl_message_append_u32(sd_rtnl_message *m, unsigned short type, uint32_t
case IFLA_MASTER:
case IFLA_MTU:
case IFLA_LINK:
case IFLA_GROUP:
case IFLA_TXQLEN:
case IFLA_NUM_TX_QUEUES:
case IFLA_NUM_RX_QUEUES:
break;
default:
return -ENOTSUP;

View file

@ -95,6 +95,7 @@ int sd_rtnl_message_link_get_flags(sd_rtnl_message *m, unsigned *flags);
int sd_rtnl_message_route_set_dst_prefixlen(sd_rtnl_message *m, unsigned char prefixlen);
int sd_rtnl_message_append_string(sd_rtnl_message *m, unsigned short type, const char *data);
int sd_rtnl_message_append_u8(sd_rtnl_message *m, unsigned short type, uint8_t data);
int sd_rtnl_message_append_u16(sd_rtnl_message *m, unsigned short type, uint16_t data);
int sd_rtnl_message_append_u32(sd_rtnl_message *m, unsigned short type, uint32_t data);
int sd_rtnl_message_append_in_addr(sd_rtnl_message *m, unsigned short type, const struct in_addr *data);