Mailing List Archive

[PATCH 2/6] bgpd: add prefix_rd_cmp function
From: Philippe Guibert <philippe.guibert@6wind.com>

This function permits comparing 2 route distinguishers.

Signed-off-by: Philippe Guibert <philippe.guibert@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