summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRenato Westphal <renato@opensourcerouting.org>2019-08-08 13:56:39 -0300
committerRenato Westphal <renato@opensourcerouting.org>2019-09-06 21:06:11 -0300
commite132dea0643499187cc51a332fd6616ee6df387c (patch)
tree25c71408ff9d31110e804c5966627fca59a28a83 /lib
parentbad6b0e72ea5730031b7851ee6c8e422cbb1f270 (diff)
zebra: identify MPLS FTNs by route type and instance
Use the route type and instance instead of the route distance to identify MPLS FTNs. This is a more robust approach since the routing daemons can modify the distance of their announced routes via configuration, which can cause inconsistencies. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/zclient.c6
-rw-r--r--lib/zclient.h3
2 files changed, 6 insertions, 3 deletions
diff --git a/lib/zclient.c b/lib/zclient.c
index 81f0b81f62..3e2c0b24d7 100644
--- a/lib/zclient.c
+++ b/lib/zclient.c
@@ -2479,7 +2479,8 @@ int zapi_labels_encode(struct stream *s, int cmd, struct zapi_labels *zl)
return -1;
}
stream_putl(s, zl->ifindex);
- stream_putc(s, zl->distance);
+ stream_putc(s, zl->route_type);
+ stream_putw(s, zl->route_instance);
stream_putl(s, zl->local_label);
stream_putl(s, zl->remote_label);
@@ -2528,7 +2529,8 @@ int zapi_labels_decode(struct stream *s, struct zapi_labels *zl)
return -1;
}
STREAM_GETL(s, zl->ifindex);
- STREAM_GETC(s, zl->distance);
+ STREAM_GETC(s, zl->route_type);
+ STREAM_GETW(s, zl->route_instance);
STREAM_GETL(s, zl->local_label);
STREAM_GETL(s, zl->remote_label);
diff --git a/lib/zclient.h b/lib/zclient.h
index e665635a8a..a3238a9161 100644
--- a/lib/zclient.h
+++ b/lib/zclient.h
@@ -400,7 +400,8 @@ struct zapi_labels {
struct prefix prefix;
union g_addr nexthop;
ifindex_t ifindex;
- uint8_t distance;
+ uint8_t route_type;
+ unsigned short route_instance;
mpls_label_t local_label;
mpls_label_t remote_label;
};