summaryrefslogtreecommitdiff
path: root/lib/route/nexthop-encap.h
blob: dde1bfbec05d070b93d7b221bed00a8d9d3e9e17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef NETLINK_NEXTHOP_ENCAP_H_
#define	NETLINK_NEXTHOP_ENCAP_H_

struct nh_encap_ops {
	uint16_t encap_type;

	int	(*build_msg)(struct nl_msg *msg, void *priv);
	int	(*parse_msg)(struct nlattr *nla, struct rtnl_nexthop *rtnh);

	int	(*compare)(void *a, void *b);

	void	(*dump)(void *priv, struct nl_dump_params *dp);
	void	(*destructor)(void *priv);
};

struct rtnl_nh_encap;

/*
 * generic nexthop encap
 */
void nh_set_encap(struct rtnl_nexthop *nh, struct rtnl_nh_encap *rtnh_encap);

int nh_encap_parse_msg(struct nlattr *encap, struct nlattr *encap_type,
		       struct rtnl_nexthop *rtnh);
int nh_encap_build_msg(struct nl_msg *msg, struct rtnl_nh_encap *rtnh_encap);

void nh_encap_dump(struct rtnl_nh_encap *rtnh_encap, struct nl_dump_params *dp);

int nh_encap_compare(struct rtnl_nh_encap *a, struct rtnl_nh_encap *b);

/*
 * MPLS encap
 */
extern struct nh_encap_ops mpls_encap_ops;
#endif