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