summaryrefslogtreecommitdiffstats
path: root/lib/mpls.h
diff options
context:
space:
mode:
authorßingen <bingen@voltanet.io>2017-03-20 15:34:49 +0100
committerßingen <bingen@voltanet.io>2017-03-20 17:10:41 +0100
commitfea12efb86407248c6baea2df49e4f03d564dad8 (patch)
treeffa410618f4629af446b28743c944750a6302df6 /lib/mpls.h
parentMerge pull request #282 from opensourcerouting/ldpd-lspcheck (diff)
downloadfrr-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.h2
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