summaryrefslogtreecommitdiff
path: root/lib/route/nexthop-encap.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/route/nexthop-encap.h')
-rw-r--r--lib/route/nexthop-encap.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/route/nexthop-encap.h b/lib/route/nexthop-encap.h
new file mode 100644
index 00000000..dde1bfbe
--- /dev/null
+++ b/lib/route/nexthop-encap.h
@@ -0,0 +1,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