diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/libsystemd/sd-rtnl/rtnl-message.c | 42 | ||||
| -rw-r--r-- | src/systemd/sd-rtnl.h | 1 | 
2 files changed, 43 insertions, 0 deletions
| diff --git a/src/libsystemd/sd-rtnl/rtnl-message.c b/src/libsystemd/sd-rtnl/rtnl-message.c index 87ad682349..39ef25ef9e 100644 --- a/src/libsystemd/sd-rtnl/rtnl-message.c +++ b/src/libsystemd/sd-rtnl/rtnl-message.c @@ -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; diff --git a/src/systemd/sd-rtnl.h b/src/systemd/sd-rtnl.h index c545333921..c162878e4d 100644 --- a/src/systemd/sd-rtnl.h +++ b/src/systemd/sd-rtnl.h @@ -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); | 
