]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
3c618c1d DA |
2 | #ifndef __NET_RTNH_H |
3 | #define __NET_RTNH_H | |
4e902c57 TG |
4 | |
5 | #include <linux/rtnetlink.h> | |
6 | #include <net/netlink.h> | |
7 | ||
8 | static inline int rtnh_ok(const struct rtnexthop *rtnh, int remaining) | |
9 | { | |
b1993a2d | 10 | return remaining >= (int)sizeof(*rtnh) && |
4e902c57 TG |
11 | rtnh->rtnh_len >= sizeof(*rtnh) && |
12 | rtnh->rtnh_len <= remaining; | |
13 | } | |
14 | ||
15 | static inline struct rtnexthop *rtnh_next(const struct rtnexthop *rtnh, | |
16 | int *remaining) | |
17 | { | |
18 | int totlen = NLA_ALIGN(rtnh->rtnh_len); | |
19 | ||
20 | *remaining -= totlen; | |
21 | return (struct rtnexthop *) ((char *) rtnh + totlen); | |
22 | } | |
23 | ||
24 | static inline struct nlattr *rtnh_attrs(const struct rtnexthop *rtnh) | |
25 | { | |
26 | return (struct nlattr *) ((char *) rtnh + NLA_ALIGN(sizeof(*rtnh))); | |
27 | } | |
28 | ||
29 | static inline int rtnh_attrlen(const struct rtnexthop *rtnh) | |
30 | { | |
31 | return rtnh->rtnh_len - NLA_ALIGN(sizeof(*rtnh)); | |
32 | } | |
33 | ||
34 | #endif |