diff options
Diffstat (limited to 'zebra/zebra_dplane.h')
| -rw-r--r-- | zebra/zebra_dplane.h | 23 | 
1 files changed, 23 insertions, 0 deletions
diff --git a/zebra/zebra_dplane.h b/zebra/zebra_dplane.h index 1c053b85bf..562a8499a2 100644 --- a/zebra/zebra_dplane.h +++ b/zebra/zebra_dplane.h @@ -28,6 +28,7 @@  #include "zebra/zebra_ns.h"  #include "zebra/rib.h"  #include "zebra/zserv.h" +#include "zebra/zebra_mpls.h"  /* Key netlink info from zebra ns */  struct zebra_dplane_info { @@ -101,6 +102,10 @@ enum dplane_op_e {  	DPLANE_OP_ROUTE_UPDATE,  	DPLANE_OP_ROUTE_DELETE, +	/* LSP update */ +	DPLANE_OP_LSP_INSTALL, +	DPLANE_OP_LSP_UPDATE, +	DPLANE_OP_LSP_DELETE  };  /* @@ -167,6 +172,8 @@ bool dplane_ctx_is_update(const struct zebra_dplane_ctx *ctx);  uint32_t dplane_ctx_get_seq(const struct zebra_dplane_ctx *ctx);  uint32_t dplane_ctx_get_old_seq(const struct zebra_dplane_ctx *ctx);  vrf_id_t dplane_ctx_get_vrf(const struct zebra_dplane_ctx *ctx); + +/* Accessors for route update information */  int dplane_ctx_get_type(const struct zebra_dplane_ctx *ctx);  int dplane_ctx_get_old_type(const struct zebra_dplane_ctx *ctx);  afi_t dplane_ctx_get_afi(const struct zebra_dplane_ctx *ctx); @@ -188,6 +195,15 @@ const struct nexthop_group *dplane_ctx_get_ng(  const struct nexthop_group *dplane_ctx_get_old_ng(  	const struct zebra_dplane_ctx *ctx); +/* Accessors for LSP information */ +mpls_label_t dplane_ctx_get_in_label(const struct zebra_dplane_ctx *ctx); +uint8_t dplane_ctx_get_addr_family(const struct zebra_dplane_ctx *ctx); +uint32_t dplane_ctx_get_lsp_flags(const struct zebra_dplane_ctx *ctx); +zebra_nhlfe_t *dplane_ctx_get_nhlfe(struct zebra_dplane_ctx *ctx); +zebra_nhlfe_t *dplane_ctx_get_best_nhlfe(struct zebra_dplane_ctx *ctx); +uint32_t dplane_ctx_get_lsp_num_ecmp(const struct zebra_dplane_ctx *ctx); + +/* Namespace info - esp. for netlink communication */  const struct zebra_dplane_info *dplane_ctx_get_ns(  	const struct zebra_dplane_ctx *ctx); @@ -209,6 +225,13 @@ enum zebra_dplane_result dplane_route_update(struct route_node *rn,  enum zebra_dplane_result dplane_route_delete(struct route_node *rn,  					     struct route_entry *re); +/* + * Enqueue LSP change operations for the dataplane. + */ +enum zebra_dplane_result dplane_lsp_add(zebra_lsp_t *lsp); +enum zebra_dplane_result dplane_lsp_update(zebra_lsp_t *lsp); +enum zebra_dplane_result dplane_lsp_delete(zebra_lsp_t *lsp); +  /* Retrieve the limit on the number of pending, unprocessed updates. */  uint32_t dplane_get_in_queue_limit(void);  | 
