Home
last modified time | relevance | path

Searched refs:rtnh (Results 1 – 8 of 8) sorted by relevance

/linux/include/net/
H A Drtnh.h8 static inline int rtnh_ok(const struct rtnexthop *rtnh, int remaining) in rtnh_ok() argument
10 return remaining >= (int)sizeof(*rtnh) && in rtnh_ok()
11 rtnh->rtnh_len >= sizeof(*rtnh) && in rtnh_ok()
12 rtnh->rtnh_len <= remaining; in rtnh_ok()
15 static inline struct rtnexthop *rtnh_next(const struct rtnexthop *rtnh, in rtnh_next() argument
18 int totlen = NLA_ALIGN(rtnh->rtnh_len); in rtnh_next()
21 return (struct rtnexthop *) ((char *) rtnh + totlen); in rtnh_next()
24 static inline struct nlattr *rtnh_attrs(const struct rtnexthop *rtnh) in rtnh_attrs() argument
26 return (struct nlattr *) ((char *) rtnh + NLA_ALIGN(sizeof(*rtnh))); in rtnh_attrs()
29 static inline int rtnh_attrlen(const struct rtnexthop *rtnh) in rtnh_attrlen() argument
[all …]
/linux/net/ipv4/
H A Dfib_semantics.c708 static int fib_count_nexthops(struct rtnexthop *rtnh, int remaining, in fib_count_nexthops() argument
713 while (rtnh_ok(rtnh, remaining)) { in fib_count_nexthops()
715 rtnh = rtnh_next(rtnh, &remaining); in fib_count_nexthops()
742 static int fib_get_nhs(struct fib_info *fi, struct rtnexthop *rtnh, in fib_get_nhs() argument
756 if (!rtnh_ok(rtnh, remaining)) { in fib_get_nhs()
762 if (rtnh->rtnh_flags & (RTNH_F_DEAD | RTNH_F_LINKDOWN)) { in fib_get_nhs()
768 fib_cfg.fc_flags = (cfg->fc_flags & ~0xFF) | rtnh->rtnh_flags; in fib_get_nhs()
769 fib_cfg.fc_oif = rtnh->rtnh_ifindex; in fib_get_nhs()
771 attrlen = rtnh_attrlen(rtnh); in fib_get_nhs()
773 struct nlattr *nla, *nlav, *attrs = rtnh_attrs(rtnh); in fib_get_nhs()
[all …]
H A Dipmr.c2847 struct rtnexthop *rtnh = nla_data(nla); in ipmr_nla_get_ttls() local
2850 while (rtnh_ok(rtnh, remaining)) { in ipmr_nla_get_ttls()
2851 mfcc->mfcc_ttls[vifi] = rtnh->rtnh_hops; in ipmr_nla_get_ttls()
2854 rtnh = rtnh_next(rtnh, &remaining); in ipmr_nla_get_ttls()
/linux/tools/include/uapi/linux/
H A Drtnetlink.h443 #define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \ argument
444 ((int)(rtnh)->rtnh_len) <= (len))
445 #define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len))) argument
448 #define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0))) argument
/linux/include/uapi/linux/
H A Drtnetlink.h468 #define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \ argument
469 ((int)(rtnh)->rtnh_len) <= (len))
470 #define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len))) argument
473 #define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0))) argument
/linux/net/core/
H A Dlwtunnel.c185 struct rtnexthop *rtnh = (struct rtnexthop *)attr; in lwtunnel_valid_encap_type_attr() local
191 while (rtnh_ok(rtnh, remaining)) { in lwtunnel_valid_encap_type_attr()
192 attrlen = rtnh_attrlen(rtnh); in lwtunnel_valid_encap_type_attr()
194 attrs = rtnh_attrs(rtnh); in lwtunnel_valid_encap_type_attr()
208 rtnh = rtnh_next(rtnh, &remaining); in lwtunnel_valid_encap_type_attr()
/linux/net/mpls/
H A Daf_mpls.c870 static u8 mpls_count_nexthops(struct rtnexthop *rtnh, int len, in mpls_count_nexthops() argument
880 while (rtnh_ok(rtnh, remaining)) { in mpls_count_nexthops()
881 struct nlattr *nla, *attrs = rtnh_attrs(rtnh); in mpls_count_nexthops()
885 attrlen = rtnh_attrlen(rtnh); in mpls_count_nexthops()
912 rtnh = rtnh_next(rtnh, &remaining); in mpls_count_nexthops()
923 struct rtnexthop *rtnh = cfg->rc_mp; in mpls_nh_build_multi() local
936 if (!rtnh_ok(rtnh, remaining)) in mpls_nh_build_multi()
942 if (rtnh->rtnh_hops || rtnh->rtnh_flags) in mpls_nh_build_multi()
945 attrlen = rtnh_attrlen(rtnh); in mpls_nh_build_multi()
947 struct nlattr *attrs = rtnh_attrs(rtnh); in mpls_nh_build_multi()
[all …]
/linux/net/ipv6/
H A Droute.c5150 struct rtnexthop *rtnh; in rtm_to_fib6_multipath_config() local
5154 rtnh = (struct rtnexthop *)cfg->fc_mp; in rtm_to_fib6_multipath_config()
5156 if (!rtnh_ok(rtnh, remaining)) { in rtm_to_fib6_multipath_config()
5163 int attrlen = rtnh_attrlen(rtnh); in rtm_to_fib6_multipath_config()
5168 attrs = rtnh_attrs(rtnh); in rtm_to_fib6_multipath_config()
5187 rtnh = rtnh_next(rtnh, &remaining); in rtm_to_fib6_multipath_config()
5188 } while (rtnh_ok(rtnh, remaining)); in rtm_to_fib6_multipath_config()
5434 struct rtnexthop *rtnh; in ip6_route_multipath_add() local
5457 rtnh = (struct rtnexthop *)cfg->fc_mp; in ip6_route_multipath_add()
5462 while (rtnh_ok(rtnh, remaining)) { in ip6_route_multipath_add()
[all …]