diff options
author | ßingen <bingen@voltanet.io> | 2017-03-20 15:34:49 +0100 |
---|---|---|
committer | ßingen <bingen@voltanet.io> | 2017-03-20 17:10:41 +0100 |
commit | fea12efb86407248c6baea2df49e4f03d564dad8 (patch) | |
tree | ffa410618f4629af446b28743c944750a6302df6 /lib/mpls.h | |
parent | Merge pull request #282 from opensourcerouting/ldpd-lspcheck (diff) | |
download | frr-fea12efb86407248c6baea2df49e4f03d564dad8.tar.xz frr-fea12efb86407248c6baea2df49e4f03d564dad8.zip |
Implement generic label manager
Label Manager allows to share MPLS label space among different
daemons. Each daemon can request a chunk of consecutive labels and
release it if it doesn't need them anymore. Label Manager stores the
daemon protocol and instance to identify the owner client. It uses them
to perform garbage collection, releasing all label chunks from a client
when it gets disconnected or reconnected.
Additionally, every client can request that the chunk is never garbage
collected. In that case client has the responsibility to release
non-used labels.
Zebra can host the label manager itself (if no -l param is provided) or
connect to an external one using zserv/zclient (providing its address
with -l param).
Client code is in lib/zclient.c, but currently only LDP is using it.
TODO: Allow for custom ranges requests, i.e., specify the start label
besides the chunk.
TODO: Release labels from LDP.
Signed-off-by: Bingen Eguzkitza <bingen@voltanet.io>
Diffstat (limited to 'lib/mpls.h')
-rw-r--r-- | lib/mpls.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/mpls.h b/lib/mpls.h index b5c1a653b..13a46e101 100644 --- a/lib/mpls.h +++ b/lib/mpls.h @@ -23,6 +23,8 @@ #ifndef _QUAGGA_MPLS_H #define _QUAGGA_MPLS_H +#include <arpa/inet.h> + /* Well-known MPLS label values (RFC 3032 etc). */ #define MPLS_V4_EXP_NULL_LABEL 0 #define MPLS_RA_LABEL 1 |