rtnh 8 include/net/rtnh.h static inline int rtnh_ok(const struct rtnexthop *rtnh, int remaining) rtnh 10 include/net/rtnh.h return remaining >= (int)sizeof(*rtnh) && rtnh 11 include/net/rtnh.h rtnh->rtnh_len >= sizeof(*rtnh) && rtnh 12 include/net/rtnh.h rtnh->rtnh_len <= remaining; rtnh 15 include/net/rtnh.h static inline struct rtnexthop *rtnh_next(const struct rtnexthop *rtnh, rtnh 18 include/net/rtnh.h int totlen = NLA_ALIGN(rtnh->rtnh_len); rtnh 21 include/net/rtnh.h return (struct rtnexthop *) ((char *) rtnh + totlen); rtnh 24 include/net/rtnh.h static inline struct nlattr *rtnh_attrs(const struct rtnexthop *rtnh) rtnh 26 include/net/rtnh.h return (struct nlattr *) ((char *) rtnh + NLA_ALIGN(sizeof(*rtnh))); rtnh 29 include/net/rtnh.h static inline int rtnh_attrlen(const struct rtnexthop *rtnh) rtnh 31 include/net/rtnh.h return rtnh->rtnh_len - NLA_ALIGN(sizeof(*rtnh)); rtnh 392 include/uapi/linux/rtnetlink.h #define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \ rtnh 393 include/uapi/linux/rtnetlink.h ((int)(rtnh)->rtnh_len) <= (len)) rtnh 394 include/uapi/linux/rtnetlink.h #define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len))) rtnh 397 include/uapi/linux/rtnetlink.h #define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0))) rtnh 180 net/core/lwtunnel.c struct rtnexthop *rtnh = (struct rtnexthop *)attr; rtnh 186 net/core/lwtunnel.c while (rtnh_ok(rtnh, remaining)) { rtnh 187 net/core/lwtunnel.c attrlen = rtnh_attrlen(rtnh); rtnh 189 net/core/lwtunnel.c attrs = rtnh_attrs(rtnh); rtnh 200 net/core/lwtunnel.c rtnh = rtnh_next(rtnh, &remaining); rtnh 637 net/ipv4/fib_semantics.c static int fib_count_nexthops(struct rtnexthop *rtnh, int remaining, rtnh 642 net/ipv4/fib_semantics.c while (rtnh_ok(rtnh, remaining)) { rtnh 644 net/ipv4/fib_semantics.c rtnh = rtnh_next(rtnh, &remaining); rtnh 658 net/ipv4/fib_semantics.c static int fib_get_nhs(struct fib_info *fi, struct rtnexthop *rtnh, rtnh 672 net/ipv4/fib_semantics.c if (!rtnh_ok(rtnh, remaining)) { rtnh 678 net/ipv4/fib_semantics.c if (rtnh->rtnh_flags & (RTNH_F_DEAD | RTNH_F_LINKDOWN)) { rtnh 684 net/ipv4/fib_semantics.c fib_cfg.fc_flags = (cfg->fc_flags & ~0xFF) | rtnh->rtnh_flags; rtnh 685 net/ipv4/fib_semantics.c fib_cfg.fc_oif = rtnh->rtnh_ifindex; rtnh 687 net/ipv4/fib_semantics.c attrlen = rtnh_attrlen(rtnh); rtnh 689 net/ipv4/fib_semantics.c struct nlattr *nla, *nlav, *attrs = rtnh_attrs(rtnh); rtnh 719 net/ipv4/fib_semantics.c rtnh->rtnh_hops + 1, extack); rtnh 723 net/ipv4/fib_semantics.c rtnh = rtnh_next(rtnh, &remaining); rtnh 797 net/ipv4/fib_semantics.c static int fib_get_nhs(struct fib_info *fi, struct rtnexthop *rtnh, rtnh 836 net/ipv4/fib_semantics.c struct rtnexthop *rtnh; rtnh 882 net/ipv4/fib_semantics.c rtnh = cfg->fc_mp; rtnh 888 net/ipv4/fib_semantics.c if (!rtnh_ok(rtnh, remaining)) rtnh 891 net/ipv4/fib_semantics.c if (rtnh->rtnh_ifindex && rtnh->rtnh_ifindex != nh->fib_nh_oif) rtnh 894 net/ipv4/fib_semantics.c attrlen = rtnh_attrlen(rtnh); rtnh 896 net/ipv4/fib_semantics.c struct nlattr *nla, *nlav, *attrs = rtnh_attrs(rtnh); rtnh 940 net/ipv4/fib_semantics.c rtnh = rtnh_next(rtnh, &remaining); rtnh 1660 net/ipv4/fib_semantics.c struct rtnexthop *rtnh; rtnh 1663 net/ipv4/fib_semantics.c rtnh = nla_reserve_nohdr(skb, sizeof(*rtnh)); rtnh 1664 net/ipv4/fib_semantics.c if (!rtnh) rtnh 1667 net/ipv4/fib_semantics.c rtnh->rtnh_hops = nh_weight - 1; rtnh 1668 net/ipv4/fib_semantics.c rtnh->rtnh_ifindex = dev ? dev->ifindex : 0; rtnh 1673 net/ipv4/fib_semantics.c rtnh->rtnh_flags = flags; rtnh 1676 net/ipv4/fib_semantics.c rtnh->rtnh_len = nlmsg_get_pos(skb) - (void *)rtnh; rtnh 2647 net/ipv4/ipmr.c struct rtnexthop *rtnh = nla_data(nla); rtnh 2650 net/ipv4/ipmr.c while (rtnh_ok(rtnh, remaining)) { rtnh 2651 net/ipv4/ipmr.c mfcc->mfcc_ttls[vifi] = rtnh->rtnh_hops; rtnh 2654 net/ipv4/ipmr.c rtnh = rtnh_next(rtnh, &remaining); rtnh 5065 net/ipv6/route.c struct rtnexthop *rtnh; rtnh 5083 net/ipv6/route.c rtnh = (struct rtnexthop *)cfg->fc_mp; rtnh 5088 net/ipv6/route.c while (rtnh_ok(rtnh, remaining)) { rtnh 5090 net/ipv6/route.c if (rtnh->rtnh_ifindex) rtnh 5091 net/ipv6/route.c r_cfg.fc_ifindex = rtnh->rtnh_ifindex; rtnh 5093 net/ipv6/route.c attrlen = rtnh_attrlen(rtnh); rtnh 5095 net/ipv6/route.c struct nlattr *nla, *attrs = rtnh_attrs(rtnh); rtnh 5108 net/ipv6/route.c r_cfg.fc_flags |= (rtnh->rtnh_flags & RTNH_F_ONLINK); rtnh 5123 net/ipv6/route.c rt->fib6_nh->fib_nh_weight = rtnh->rtnh_hops + 1; rtnh 5132 net/ipv6/route.c rtnh = rtnh_next(rtnh, &remaining); rtnh 5232 net/ipv6/route.c struct rtnexthop *rtnh; rtnh 5238 net/ipv6/route.c rtnh = (struct rtnexthop *)cfg->fc_mp; rtnh 5241 net/ipv6/route.c while (rtnh_ok(rtnh, remaining)) { rtnh 5243 net/ipv6/route.c if (rtnh->rtnh_ifindex) rtnh 5244 net/ipv6/route.c r_cfg.fc_ifindex = rtnh->rtnh_ifindex; rtnh 5246 net/ipv6/route.c attrlen = rtnh_attrlen(rtnh); rtnh 5248 net/ipv6/route.c struct nlattr *nla, *attrs = rtnh_attrs(rtnh); rtnh 5260 net/ipv6/route.c rtnh = rtnh_next(rtnh, &remaining); rtnh 833 net/mpls/af_mpls.c static u8 mpls_count_nexthops(struct rtnexthop *rtnh, int len, rtnh 843 net/mpls/af_mpls.c while (rtnh_ok(rtnh, remaining)) { rtnh 844 net/mpls/af_mpls.c struct nlattr *nla, *attrs = rtnh_attrs(rtnh); rtnh 848 net/mpls/af_mpls.c attrlen = rtnh_attrlen(rtnh); rtnh 875 net/mpls/af_mpls.c rtnh = rtnh_next(rtnh, &remaining); rtnh 886 net/mpls/af_mpls.c struct rtnexthop *rtnh = cfg->rc_mp; rtnh 899 net/mpls/af_mpls.c if (!rtnh_ok(rtnh, remaining)) rtnh 905 net/mpls/af_mpls.c if (rtnh->rtnh_hops || rtnh->rtnh_flags) rtnh 908 net/mpls/af_mpls.c attrlen = rtnh_attrlen(rtnh); rtnh 910 net/mpls/af_mpls.c struct nlattr *attrs = rtnh_attrs(rtnh); rtnh 917 net/mpls/af_mpls.c rtnh->rtnh_ifindex, nla_via, nla_newdst, rtnh 925 net/mpls/af_mpls.c rtnh = rtnh_next(rtnh, &remaining); rtnh 2015 net/mpls/af_mpls.c struct rtnexthop *rtnh; rtnh 2029 net/mpls/af_mpls.c rtnh = nla_reserve_nohdr(skb, sizeof(*rtnh)); rtnh 2030 net/mpls/af_mpls.c if (!rtnh) rtnh 2033 net/mpls/af_mpls.c rtnh->rtnh_ifindex = dev->ifindex; rtnh 2035 net/mpls/af_mpls.c rtnh->rtnh_flags |= RTNH_F_LINKDOWN; rtnh 2039 net/mpls/af_mpls.c rtnh->rtnh_flags |= RTNH_F_DEAD; rtnh 2054 net/mpls/af_mpls.c rtnh->rtnh_len = nlmsg_get_pos(skb) - (void *)rtnh;