From: Philippe Guibert <philippe.guib...@6wind.com>

This function permits comparing 2 route distinguishers.

Signed-off-by: Philippe Guibert <philippe.guib...@6wind.com>
---
 bgpd/bgp_mplsvpn.c | 11 +++++++++++
 bgpd/bgp_mplsvpn.h |  1 +
 2 files changed, 12 insertions(+)

diff --git a/bgpd/bgp_mplsvpn.c b/bgpd/bgp_mplsvpn.c
index 143d5d9..b50b14f 100644
--- a/bgpd/bgp_mplsvpn.c
+++ b/bgpd/bgp_mplsvpn.c
@@ -348,6 +348,17 @@ str2labels (const char *str, uint32_t*labels, size_t 
*nlabels)
   return *endptr == '\0';
 }
 
+int prefix_rd_cmp(struct prefix_rd *p1, struct prefix_rd *p2)
+{
+  if(p1->family != p2->family)
+    return 1;
+  if(p1->prefixlen != p2->prefixlen)
+    return 1;
+  if(memcmp((char *)p1->val, (char *)p2->val, 8))
+    return 1;
+  return 0;
+}
+
 char *
 prefix_rd2str (struct prefix_rd *prd, char *buf, size_t size)
 {
diff --git a/bgpd/bgp_mplsvpn.h b/bgpd/bgp_mplsvpn.h
index bfa9cae..ea8bb6d 100644
--- a/bgpd/bgp_mplsvpn.h
+++ b/bgpd/bgp_mplsvpn.h
@@ -47,5 +47,6 @@ extern int str2prefix_rd (const char *, struct prefix_rd *);
 extern int str2labels (const char *str, uint32_t *labels, size_t *nlabels);
 extern char *labels2str (char *str, size_t size, uint32_t *labels, size_t 
nlabels);
 extern char *prefix_rd2str (struct prefix_rd *, char *, size_t);
+extern int prefix_rd_cmp(struct prefix_rd *p1, struct prefix_rd *p2);
 
 #endif /* _QUAGGA_BGP_MPLSVPN_H */
-- 
2.1.4


_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to