linux/include/net/rtnh.h
<<
>>
Prefs
   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
   8static inline int rtnh_ok(const struct rtnexthop *rtnh, int remaining)
   9{
  10        return remaining >= (int)sizeof(*rtnh) &&
  11               rtnh->rtnh_len >= sizeof(*rtnh) &&
  12               rtnh->rtnh_len <= remaining;
  13}
  14
  15static 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
  24static inline struct nlattr *rtnh_attrs(const struct rtnexthop *rtnh)
  25{
  26        return (struct nlattr *) ((char *) rtnh + NLA_ALIGN(sizeof(*rtnh)));
  27}
  28
  29static inline int rtnh_attrlen(const struct rtnexthop *rtnh)
  30{
  31        return rtnh->rtnh_len - NLA_ALIGN(sizeof(*rtnh));
  32}
  33
  34#endif
  35