6#ifndef NETLINK_ROUTE_NEXTHOP_H_
7#define NETLINK_ROUTE_NEXTHOP_H_
9#include <netlink/netlink.h>
10#include <netlink/addr.h>
20 NH_DUMP_FROM_ONELINE = -2,
21 NH_DUMP_FROM_DETAILS = -1,
26extern struct rtnl_nexthop *rtnl_route_nh_alloc(
void);
27extern struct rtnl_nexthop *rtnl_route_nh_clone(
struct rtnl_nexthop *);
28extern void rtnl_route_nh_free(
struct rtnl_nexthop *);
30extern int rtnl_route_nh_compare(
struct rtnl_nexthop *,
struct rtnl_nexthop *,
34 struct rtnl_nexthop *);
36extern void rtnl_route_nh_dump(
struct rtnl_nexthop *,
struct nl_dump_params *);
38extern void rtnl_route_nh_set_weight(
struct rtnl_nexthop *, uint8_t);
39extern uint8_t rtnl_route_nh_get_weight(
struct rtnl_nexthop *);
40extern void rtnl_route_nh_set_ifindex(
struct rtnl_nexthop *,
int);
41extern int rtnl_route_nh_get_ifindex(
struct rtnl_nexthop *);
42extern void rtnl_route_nh_set_gateway(
struct rtnl_nexthop *,
struct nl_addr *);
43extern struct nl_addr *rtnl_route_nh_get_gateway(
struct rtnl_nexthop *);
44extern void rtnl_route_nh_set_flags(
struct rtnl_nexthop *,
unsigned int);
45extern void rtnl_route_nh_unset_flags(
struct rtnl_nexthop *,
unsigned int);
46extern unsigned int rtnl_route_nh_get_flags(
struct rtnl_nexthop *);
47extern void rtnl_route_nh_set_realms(
struct rtnl_nexthop *, uint32_t);
48extern uint32_t rtnl_route_nh_get_realms(
struct rtnl_nexthop *);
50extern int rtnl_route_nh_set_newdst(
struct rtnl_nexthop *,
struct nl_addr *);
51extern struct nl_addr *rtnl_route_nh_get_newdst(
struct rtnl_nexthop *);
52extern int rtnl_route_nh_set_via(
struct rtnl_nexthop *,
struct nl_addr *);
53extern struct nl_addr *rtnl_route_nh_get_via(
struct rtnl_nexthop *);
56extern struct rtnl_nh_encap *rtnl_route_nh_get_encap(
struct rtnl_nexthop *);
57extern char *rtnl_route_nh_flags2str(
int,
char *,
size_t);
58extern int rtnl_route_nh_str2flags(
const char *);
64extern void rtnl_nh_encap_free(
struct rtnl_nh_encap *nh_encap);
66extern int rtnl_nh_encap_get_type(
struct rtnl_nh_encap *nh_encap);
70 struct nl_addr *dst, uint8_t ttl);
71struct nl_addr *rtnl_nh_get_encap_mpls_dst(
struct rtnl_nh_encap *);
74extern int rtnl_route_nh_encap_mpls(
struct rtnl_nexthop *nh,
75 struct nl_addr *addr, uint8_t ttl);
76extern struct nl_addr *rtnl_route_nh_get_encap_mpls_dst(
struct rtnl_nexthop *);
77extern uint8_t rtnl_route_nh_get_encap_mpls_ttl(
struct rtnl_nexthop *);
82struct nl_addr *rtnl_nh_get_encap_ip6_dst(
struct rtnl_nh_encap *);
83extern int rtnl_nh_set_encap_ip6_id(
struct rtnl_nh_encap *, uint64_t);
84extern uint64_t rtnl_nh_get_encap_ip6_id(
struct rtnl_nh_encap *);
85extern int rtnl_nh_set_encap_ip6_hoplimit(
struct rtnl_nh_encap *, uint8_t);
86extern int rtnl_nh_get_encap_ip6_hoplimit(
struct rtnl_nh_encap *);
87extern int rtnl_nh_set_encap_ip6_tc(
struct rtnl_nh_encap *, uint8_t);
89extern int rtnl_nh_set_encap_ip6_src(
struct rtnl_nh_encap *,
struct nl_addr *);
90struct nl_addr *rtnl_nh_get_encap_ip6_src(
struct rtnl_nh_encap *);
91extern int rtnl_nh_set_encap_ip6_flags(
struct rtnl_nh_encap *, uint16_t);
92extern int rtnl_nh_get_encap_ip6_flags(
struct rtnl_nh_encap *);
95extern int rtnl_nh_encap_ila(
struct rtnl_nh_encap *nh_encap, uint64_t locator);
96extern int rtnl_nh_get_encap_ila_locator(
struct rtnl_nh_encap *nh_encap,
98extern int rtnl_nh_set_encap_ila_csum_mode(
struct rtnl_nh_encap *nh_encap,
100extern int rtnl_nh_clear_encap_ila_csum_mode(
struct rtnl_nh_encap *nh_encap);
101extern int rtnl_nh_get_encap_ila_csum_mode(
struct rtnl_nh_encap *nh_encap);
102extern int rtnl_nh_set_encap_ila_ident_type(
struct rtnl_nh_encap *nh_encap,
104extern int rtnl_nh_clear_encap_ila_ident_type(
struct rtnl_nh_encap *nh_encap);
105extern int rtnl_nh_get_encap_ila_ident_type(
struct rtnl_nh_encap *nh_encap);
106extern int rtnl_nh_set_encap_ila_hook_type(
struct rtnl_nh_encap *nh_encap,
108extern int rtnl_nh_clear_encap_ila_hook_type(
struct rtnl_nh_encap *nh_encap);
109extern int rtnl_nh_get_encap_ila_hook_type(
struct rtnl_nh_encap *nh_encap);
113 struct nl_addr *dst);
114struct nl_addr *rtnl_nh_get_encap_ip_dst(
struct rtnl_nh_encap *);
115extern int rtnl_nh_set_encap_ip_src(
struct rtnl_nh_encap *,
struct nl_addr *);
116struct nl_addr *rtnl_nh_get_encap_ip_src(
struct rtnl_nh_encap *);
117extern int rtnl_nh_set_encap_ip_ttl(
struct rtnl_nh_encap *, uint8_t);
119extern int rtnl_nh_set_encap_ip_tos(
struct rtnl_nh_encap *, uint8_t);
121extern int rtnl_nh_set_encap_ip_id(
struct rtnl_nh_encap *, uint64_t);
122extern uint64_t rtnl_nh_get_encap_ip_id(
struct rtnl_nh_encap *);
123extern int rtnl_nh_set_encap_ip_flags(
struct rtnl_nh_encap *, uint16_t);
124extern int rtnl_nh_get_encap_ip_flags(
struct rtnl_nh_encap *);
int rtnl_route_nh_identical(struct rtnl_nexthop *, struct rtnl_nexthop *)
Check if the fixed attributes of two nexthops are identical, and may only differ in flags or weight.
int rtnl_route_nh_set_encap(struct rtnl_nexthop *, struct rtnl_nh_encap *)
Set nexthop encapsulation.