mirror of
https://git.kernel.org/pub/scm/network/iproute2/iproute2.git
synced 2024-11-15 05:55:11 +08:00
libnetlink: Add rta_getattr_uint()
NLA_UINT attributes have a 4-byte payload if possible, and an 8-byte one if necessary. Add a function to extract these. Since we need to dispatch on length anyway, make the getter truly universal by supporting also u8 and u16. Signed-off-by: Petr Machata <petrm@nvidia.com> Signed-off-by: David Ahern <dsahern@kernel.org>
This commit is contained in:
parent
8b3b71898d
commit
95836fbf35
@ -260,6 +260,20 @@ static inline __u64 rta_getattr_u64(const struct rtattr *rta)
|
||||
memcpy(&tmp, RTA_DATA(rta), sizeof(__u64));
|
||||
return tmp;
|
||||
}
|
||||
static inline __u64 rta_getattr_uint(const struct rtattr *rta)
|
||||
{
|
||||
switch (RTA_PAYLOAD(rta)) {
|
||||
case sizeof(__u8):
|
||||
return rta_getattr_u8(rta);
|
||||
case sizeof(__u16):
|
||||
return rta_getattr_u16(rta);
|
||||
case sizeof(__u32):
|
||||
return rta_getattr_u32(rta);
|
||||
case sizeof(__u64):
|
||||
return rta_getattr_u64(rta);
|
||||
}
|
||||
return -1ULL;
|
||||
}
|
||||
static inline __s32 rta_getattr_s32(const struct rtattr *rta)
|
||||
{
|
||||
return *(__s32 *)RTA_DATA(rta);
|
||||
|
Loading…
Reference in New Issue
Block a user