diff options
| author | Renato Westphal <renato@opensourcerouting.org> | 2020-12-05 21:45:52 -0300 | 
|---|---|---|
| committer | Renato Westphal <renato@opensourcerouting.org> | 2021-01-08 22:22:11 -0300 | 
| commit | 077d336aa7f543525c03de5a4617a2314c7ca984 (patch) | |
| tree | 50cb5507a3be86de8db95d0691482c5e004c6550 /ldpd/lde.h | |
| parent | 220e848cc5d558e0a1ac170ec939851249566f46 (diff) | |
ldpd: add support for RLFA clients
Add an API that allows IGP client daemons to register/unregister
RLFAs with ldpd.
IGP daemons need to be able to query the LDP labels needed by RLFAs
and monitor label updates that might affect those RLFAs. This is
similar to the NHT mechanism used by bgpd to resolve and monitor
recursive nexthops.
This API is based on the following ZAPI opaque messages:
* LDP_RLFA_REGISTER: used by IGP daemons to register an RLFA with ldpd.
* LDP_RLFA_UNREGISTER_ALL: used by IGP daemons to unregister all of
  their RLFAs with ldpd.
* LDP_RLFA_LABELS: used by ldpd to send RLFA labels to the registered
  clients.
For each RLFA, ldpd needs to return the following labels:
* Outer label(s): the labels advertised by the adjacent routers to
  reach the PQ node;
* Inner label: the label advertised by the PQ node to reach the RLFA
  destination.
For the inner label, ldpd automatically establishes a targeted
neighborship with the PQ node if one doesn't already exist. For that
to work, the PQ node needs to be configured to accept targeted hello
messages. If that doesn't happen, ldpd doesn't send a response to
the IGP client daemon which in turn won't be able to activate the
previously computed RLFA.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Diffstat (limited to 'ldpd/lde.h')
| -rw-r--r-- | ldpd/lde.h | 2 | 
1 files changed, 2 insertions, 0 deletions
diff --git a/ldpd/lde.h b/ldpd/lde.h index 21769ffe07..28468931ec 100644 --- a/ldpd/lde.h +++ b/ldpd/lde.h @@ -158,6 +158,8 @@ uint32_t	 lde_update_label(struct fec_node *);  void		 lde_free_label(uint32_t label);  void		 lde_send_change_klabel(struct fec_node *, struct fec_nh *);  void		 lde_send_delete_klabel(struct fec_node *, struct fec_nh *); +void		 lde_fec2prefix(const struct fec *fec, struct prefix *prefix); +void		 lde_prefix2fec(const struct prefix *prefix, struct fec *fec);  void		 lde_fec2map(struct fec *, struct map *);  void		 lde_map2fec(struct map *, struct in_addr, struct fec *);  void		 lde_send_labelmapping(struct lde_nbr *, struct fec_node *,  | 
