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