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