summaryrefslogtreecommitdiff
path: root/usr.sbin/ldpd/lde.h
diff options
context:
space:
mode:
authorClaudio Jeker <claudio@cvs.openbsd.org>2010-06-30 22:15:03 +0000
committerClaudio Jeker <claudio@cvs.openbsd.org>2010-06-30 22:15:03 +0000
commit34931cd02c9f2f36b1c40b7669d8c87152fea6be (patch)
tree6b2302a9030ce6632bbe048678a4c6e2c9008a60 /usr.sbin/ldpd/lde.h
parent43d133ff81055647efc440fd43eb7896003b5d2d (diff)
Make it possible to store multiple LSP to a FEC. This is another step to
handle multipath routes in MPLS. Looks good to michele@
Diffstat (limited to 'usr.sbin/ldpd/lde.h')
-rw-r--r--usr.sbin/ldpd/lde.h18
1 files changed, 12 insertions, 6 deletions
diff --git a/usr.sbin/ldpd/lde.h b/usr.sbin/ldpd/lde.h
index 16a09be974c..8bc08c29895 100644
--- a/usr.sbin/ldpd/lde.h
+++ b/usr.sbin/ldpd/lde.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: lde.h,v 1.14 2010/06/30 05:21:38 claudio Exp $ */
+/* $OpenBSD: lde.h,v 1.15 2010/06/30 22:15:02 claudio Exp $ */
/*
* Copyright (c) 2004, 2005 Esben Norby <norby@openbsd.org>
@@ -77,26 +77,31 @@ struct lde_nbr {
u_int16_t lspace;
};
+struct rt_lsp {
+ LIST_ENTRY(rt_lsp) entry;
+
+ struct in_addr nexthop;
+ u_int32_t remote_label;
+};
+
struct rt_node {
struct fec fec;
- struct in_addr nexthop;
+ LIST_HEAD(, rt_lsp) lsp; /* label switching pathes */
LIST_HEAD(, lde_map) downstream; /* recv mappings */
LIST_HEAD(, lde_map) upstream; /* sent mappings */
u_int32_t local_label;
- u_int32_t remote_label;
u_int16_t lspace;
u_int8_t flags;
- u_int8_t present; /* Is it present in fib? */
};
/* lde.c */
pid_t lde(struct ldpd_conf *, int [2], int [2], int [2]);
int lde_imsg_compose_ldpe(int, u_int32_t, pid_t, void *, u_int16_t);
u_int32_t lde_assign_label(void);
-void lde_send_change_klabel(struct rt_node *);
-void lde_send_delete_klabel(struct rt_node *);
+void lde_send_change_klabel(struct rt_node *, struct rt_lsp *);
+void lde_send_delete_klabel(struct rt_node *, struct rt_lsp *);
void lde_send_labelmapping(u_int32_t, struct map *);
void lde_send_labelrequest(u_int32_t, struct map *);
void lde_send_labelrelease(u_int32_t, struct map *);
@@ -105,6 +110,7 @@ void lde_send_notification(u_int32_t, u_int32_t, u_int32_t,
void lde_nbr_del(struct lde_nbr *);
void lde_nbr_do_mappings(struct rt_node *);
+struct lde_map *lde_map_add(struct lde_nbr *, struct rt_node *, int);
struct lde_nbr *lde_find_address(struct in_addr);