diff -Nru bgpdump-1.5.0/bgpdump_attr.h bgpdump-1.6.0/bgpdump_attr.h --- bgpdump-1.5.0/bgpdump_attr.h 2016-09-16 08:55:35.000000000 +0000 +++ bgpdump-1.6.0/bgpdump_attr.h 2018-09-26 09:09:04.000000000 +0000 @@ -56,6 +56,7 @@ #define BGP_ATTR_EXT_COMMUNITIES 16 #define BGP_ATTR_NEW_AS_PATH 17 #define BGP_ATTR_NEW_AGGREGATOR 18 +#define BGP_ATTR_LARGE_COMMUNITIES 32 /* Flag macro */ #define ATTR_FLAG_BIT(X) (1 << ((X) - 1)) @@ -129,6 +130,7 @@ struct aspath *aspath; struct community *community; struct ecommunity *ecommunity; + struct lcommunity *lcommunity; struct transit *transit; /* libbgpdump additions */ @@ -156,6 +158,13 @@ char *str; }; +struct lcommunity +{ + int size; + u_int32_t *val; + char *str; +}; + struct cluster_list { int length; diff -Nru bgpdump-1.5.0/bgpdump.c bgpdump-1.6.0/bgpdump.c --- bgpdump-1.5.0/bgpdump.c 2016-09-16 08:55:35.000000000 +0000 +++ bgpdump-1.6.0/bgpdump.c 2018-09-26 09:09:04.000000000 +0000 @@ -146,6 +146,7 @@ static int mode=0; static int timetype=0; static int show_packet_index = 0; +static int show_large_comms = 0; static int packet_index = 0; static const char USAGE[] = "\ @@ -162,11 +163,13 @@ -O output to instead of STDOUT\n\ -s log to syslog (the default)\n\ -v log to STDERR\n\ + -q quiet\n\ \n\ Options for -m and -M modes:\n\ -t dump timestamps for RIB dumps reflect the time of the dump (the default)\n\ -t change timestamps for RIB dumps reflect the last route modification\n\ -p show packet index at second position\n\ + -l show large communities field after regular communities\n\ \n\ Special options:\n\ -T run unit tests and exit\n\ @@ -181,10 +184,11 @@ int fd; bool usage_error = false; bool use_syslog = true; + bool quiet = false; log_to_stderr(); - while ((c=getopt(argc,argv,"if:o:t:mMHO:svTp"))!=-1) + while ((c=getopt(argc,argv,"if:o:t:mMHO:svTplq"))!=-1) switch(c) { case 'H': @@ -232,6 +236,13 @@ case 'p': show_packet_index = 1; break; + case 'l': + show_large_comms = 1; + break; + case 'q': + quiet = true; + break; + case '?': default: usage_error = true; @@ -240,7 +251,8 @@ argv += optind; if(use_syslog) { - debug("logging to syslog"); + if(!quiet) + debug("logging to syslog"); log_to_syslog(); } @@ -1372,6 +1384,10 @@ } if( (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES) ) !=0) printf("COMMUNITY:%s\n",attr->community->str); + + if( (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LARGE_COMMUNITIES) ) !=0) + printf("LARGE_COMMUNITY:%s\n",attr->lcommunity->str); + } } @@ -1488,14 +1504,14 @@ { int idx ; char buf[128]; - char tmp2[20]; + char aggregate[20]; unsigned int npref; unsigned int nmed; if (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ATOMIC_AGGREGATE)) - sprintf(tmp2,"AG"); + sprintf(aggregate,"AG"); else - sprintf(tmp2,"NAG"); + sprintf(aggregate,"NAG"); for (idx=0;idxattr->nexthop),npref,nmed); if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES) ) !=0) - printf("%s|%s|",entry->attr->community->str+1,tmp2); - else - printf("|%s|",tmp2); - + printf("%s|",entry->attr->community->str+1); + else + printf("|"); + + if (show_large_comms) { + if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LARGE_COMMUNITIES) ) !=0) + printf("%s|",entry->attr->lcommunity->str+1); + else + printf("|"); + } + + printf("%s|", aggregate); /* AG/NAG */ + if (entry->attr->aggregator_addr.s_addr != -1) printf("%u %s|\n",entry->attr->aggregator_as,inet_ntoa(entry->attr->aggregator_addr)); else @@ -1573,14 +1598,14 @@ { int idx ; char buf[128]; - char tmp2[20]; + char aggregate[20]; unsigned int npref; unsigned int nmed; if (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ATOMIC_AGGREGATE)) - sprintf(tmp2,"AG"); + sprintf(aggregate,"AG"); else - sprintf(tmp2,"NAG"); + sprintf(aggregate,"NAG"); for (idx=0;idxnexthop.v4_addr),entry->attr->local_pref,entry->attr->med); if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES) ) !=0) - printf("%s|%s|",entry->attr->community->str+1,tmp2); + printf("%s|",entry->attr->community->str+1); else - printf("|%s|",tmp2); + printf("|"); + + if (show_large_comms) { + if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LARGE_COMMUNITIES) ) !=0) + printf("%s|",entry->attr->lcommunity->str+1); + else + printf("|"); + } + + printf("%s|", aggregate); /* AG/NAG */ } else @@ -1668,10 +1702,18 @@ printf("%s|%d|%d|",inet_ntoa(entry->attr->nexthop),npref,nmed); //printf("%s|%d|%d|",inet_ntoa(entry->attr->nexthop),entry->attr->local_pref,entry->attr->med); if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES) ) !=0) - printf("%s|%s|",entry->attr->community->str+1,tmp2); + printf("%s|",entry->attr->community->str+1); else - printf("|%s|",tmp2); + printf("|"); + if (show_large_comms) { + if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LARGE_COMMUNITIES) ) !=0) + printf("%s|",entry->attr->lcommunity->str+1); + else + printf("|"); + } + + printf("%s|",aggregate); /* AG/NAG */ } if (entry->attr->aggregator_addr.s_addr != -1) @@ -1713,14 +1755,14 @@ char buf[128]; char buf1[128]; char buf2[128]; - char tmp2[20]; + char aggregate[20]; unsigned int npref; unsigned int nmed; if (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ATOMIC_AGGREGATE)) - sprintf(tmp2,"AG"); + sprintf(aggregate,"AG"); else - sprintf(tmp2,"NAG"); + sprintf(aggregate,"NAG"); for (idx=0;idxattr),describe_origin(entry->attr->origin),fmt_ipv6(prefix->nexthop,buf),npref,nmed); if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES) ) !=0) - printf("%s|%s|",entry->attr->community->str+1,tmp2); + printf("%s|",entry->attr->community->str+1); else - printf("|%s|",tmp2); + printf("|"); + + if (show_large_comms) { + if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LARGE_COMMUNITIES) ) !=0) + printf("%s|",entry->attr->lcommunity->str+1); + else + printf("|"); + + } + + printf("%s|", aggregate); /* AG/NAG */ if (entry->attr->aggregator_addr.s_addr != -1) @@ -1816,16 +1868,16 @@ { struct tm *date = NULL; - char tmp2[20]; + char aggregate[20]; unsigned int npref; unsigned int nmed; char time_str[20]; char peer[BGPDUMP_ADDRSTRLEN], prefix[BGPDUMP_ADDRSTRLEN], nexthop[BGPDUMP_ADDRSTRLEN]; if (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ATOMIC_AGGREGATE)) - sprintf(tmp2,"AG"); + sprintf(aggregate,"AG"); else - sprintf(tmp2,"NAG"); + sprintf(aggregate,"NAG"); time_t *t; if (timetype==0) { @@ -1880,9 +1932,19 @@ printf("%s|%u|%u|",nexthop,npref,nmed); if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES) ) !=0) - printf("%s|%s|",entry->attr->community->str+1,tmp2); + printf("%s|",entry->attr->community->str+1); else - printf("|%s|",tmp2); + printf("|"); + + if (show_large_comms) { + if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LARGE_COMMUNITIES) ) !=0) + printf("%s|",entry->attr->lcommunity->str+1); + else + printf("|"); + + } + + printf("%s|",aggregate); /* AG/NAG */ if (entry->attr->aggregator_addr.s_addr != -1) printf("%u %s|\n",entry->attr->aggregator_as,inet_ntoa(entry->attr->aggregator_addr)); @@ -1997,10 +2059,19 @@ printf("%s|%u|%u|",nexthop,npref,nmed); if( (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES) ) !=0) - printf("%s|%s|",attr->community->str+1,aggregate); + printf("%s|",attr->community->str+1); else - printf("|%s|",aggregate); + printf("|"); + + if (show_large_comms) { + if( (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LARGE_COMMUNITIES) ) !=0) + printf("%s|",attr->lcommunity->str+1); + else + printf("|"); + } + printf("%s|",aggregate); + if (attr->aggregator_addr.s_addr != -1) printf("%u %s|\n",attr->aggregator_as,inet_ntoa(attr->aggregator_addr)); else diff -Nru bgpdump-1.5.0/bgpdump_formats.h bgpdump-1.6.0/bgpdump_formats.h --- bgpdump-1.5.0/bgpdump_formats.h 2016-09-16 08:55:35.000000000 +0000 +++ bgpdump-1.6.0/bgpdump_formats.h 2018-09-26 09:09:04.000000000 +0000 @@ -79,7 +79,7 @@ #define BGPDUMP_SUBTYPE_ZEBRA_BGP_MESSAGE_LOCAL 6 /* BGP4MP_MESSAGE_LOCAL */ #define BGPDUMP_SUBTYPE_ZEBRA_BGP_MESSAGE_AS4_LOCAL 7 /* BGP4MP_MESSAGE_AS4_LOCAL */ -/* draft-petrie-grow-mrt-add-paths-00 */ +/* RFC8050 add-path extensions */ #define BGPDUMP_SUBTYPE_ZEBRA_BGP_MESSAGE_ADDPATH 8 /* BGP4MP_MESSAGE_ADDPATH */ #define BGPDUMP_SUBTYPE_ZEBRA_BGP_MESSAGE_AS4_ADDPATH 9 /* BGP4MP_MESSAGE_AS4_ADDPATH */ #define BGPDUMP_SUBTYPE_ZEBRA_BGP_MESSAGE_LOCAL_ADDPATH 10 /* BGP4MP_MESSAGE_LOCAL_ADDPATH */ diff -Nru bgpdump-1.5.0/bgpdump_lib.c bgpdump-1.6.0/bgpdump_lib.c --- bgpdump-1.5.0/bgpdump_lib.c 2016-09-16 08:55:35.000000000 +0000 +++ bgpdump-1.6.0/bgpdump_lib.c 2018-09-26 09:09:04.000000000 +0000 @@ -64,6 +64,7 @@ static void process_attr_aspath_string(struct aspath *as); static char aspath_delimiter_char (u_char type, u_char which); static void process_attr_community_string(struct community *com); +static void process_attr_lcommunity_string(struct lcommunity *lcom); static void process_mp_announce(struct mstream *s, struct mp_info *info, struct zebra_incomplete *incomplete, int is_addp); static void process_mp_withdraw(struct mstream *s, struct mp_info *info, struct zebra_incomplete *incomplete, int is_addp); @@ -258,7 +259,7 @@ u_int8_t safi; for(afi = 1; afi <= BGPDUMP_MAX_AFI; afi++) { - for(safi = 1; safi < BGPDUMP_MAX_SAFI; safi++) { + for(safi = 1; safi <= BGPDUMP_MAX_SAFI; safi++) { if(info->announce[afi][safi]) free(info->announce[afi][safi]); info->announce[afi][safi] = NULL; @@ -355,6 +356,16 @@ free(attr->community); } + if(attr->lcommunity != NULL) { + if(attr->lcommunity->val != NULL) + free(attr->lcommunity->val); + + if(attr->lcommunity->str != NULL) + free(attr->lcommunity->str); + + free(attr->lcommunity); + } + if(attr->data != NULL) free(attr->data); @@ -622,7 +633,7 @@ e = &prefixdata->entries[i]; mstream_getw(s, &e->peer_index); - assert(e->peer_index <= entry->dump->table_dump_v2_peer_index_table->peer_count); + assert(e->peer_index < entry->dump->table_dump_v2_peer_index_table->peer_count); e->peer = &entry->dump->table_dump_v2_peer_index_table->entries[e->peer_index]; mstream_getl(s, &e->originated_time); @@ -672,7 +683,7 @@ e = &prefixdata->entries[i]; mstream_getw(s, &e->peer_index); - assert(e->peer_index <= entry->dump->table_dump_v2_peer_index_table->peer_count); + assert(e->peer_index < entry->dump->table_dump_v2_peer_index_table->peer_count); e->peer = &entry->dump->table_dump_v2_peer_index_table->entries[e->peer_index]; mstream_getl(s, &e->originated_time); @@ -926,7 +937,8 @@ int process_zebra_bgp_message_open(struct mstream *s, BGPDUMP_ENTRY *entry, u_int8_t asn_len) { mstream_getc(s, &entry->body.zebra_message.version); - entry->body.zebra_message.my_as = read_asn(s, asn_len); + // my_as in open is always 16bits, regardless of MRT subtype + entry->body.zebra_message.my_as = read_asn(s, ASN16_LEN); mstream_getw(s, &entry->body.zebra_message.hold_time); entry->body.zebra_message.bgp_id = mstream_get_ipv4(s); mstream_getc(s, &entry->body.zebra_message.opt_len); @@ -1003,6 +1015,8 @@ attr->aspath = NULL; attr->community = NULL; + attr->lcommunity = NULL; + attr->transit = NULL; attr->mp_info = calloc(1, sizeof(struct mp_info)); if(attr->mp_info == NULL) { @@ -1121,6 +1135,23 @@ attr->community->str = NULL; process_attr_community_string(attr->community); break; + case BGP_ATTR_LARGE_COMMUNITIES: + assert(! attr->lcommunity); + if((attr->lcommunity = malloc(sizeof(struct lcommunity))) == NULL) { + err("%s: out of memory", __func__); + exit(1); /* XXX */ + } + + attr->lcommunity->size = len / 12; + if((attr->lcommunity->val = malloc(len)) == NULL) { + err("%s: out of memory", __func__); + exit(1); /* XXX */ + } + + mstream_get(s,attr->lcommunity->val,len); + attr->lcommunity->str = NULL; + process_attr_lcommunity_string(attr->lcommunity); + break; case BGP_ATTR_NEW_AS_PATH: assert(! attr->new_aspath); attr->new_aspath = create_aspath(len, ASN32_LEN); @@ -1394,6 +1425,39 @@ } } +void process_attr_lcommunity_string(struct lcommunity *lcom) { + + char buf[BUFSIZ]; + u_int32_t i; + u_int32_t global; + u_int32_t local1; + u_int32_t local2; + + memset (buf, 0, BUFSIZ); + + for (i = 0; i < lcom->size; i++) + { + memcpy (&global, lcom->val + (i * 3), sizeof (u_int32_t)); + memcpy (&local1, lcom->val + (i * 3) + 1, sizeof (u_int32_t)); + memcpy (&local2, lcom->val + (i * 3) + 2, sizeof (u_int32_t)); + + global = ntohl (global); + local1 = ntohl (local1); + local2 = ntohl (local2); + + snprintf (buf + strlen (buf), BUFSIZ - strlen (buf), + " %u:%u:%u", global, local1, local2); + } + + if((lcom->str = malloc(strlen(buf)+1)) != NULL) { + strcpy(lcom->str, buf); + } else { + err("%s: out of memory", __func__); + exit(1); /* XXX */ + } + +} + static struct mp_nlri *get_nexthop(struct mstream *s) { struct mp_nlri *nlri = calloc(1, sizeof(struct mp_nlri)); diff -Nru bgpdump-1.5.0/bgpdump_mstream.h bgpdump-1.6.0/bgpdump_mstream.h --- bgpdump-1.5.0/bgpdump_mstream.h 2016-09-16 08:55:35.000000000 +0000 +++ bgpdump-1.6.0/bgpdump_mstream.h 2018-09-26 09:09:04.000000000 +0000 @@ -33,7 +33,7 @@ typedef struct mstream { u_char *start; - u_int16_t position; + u_int32_t position; u_int32_t len; } mstream_t; diff -Nru bgpdump-1.5.0/ChangeLog bgpdump-1.6.0/ChangeLog --- bgpdump-1.5.0/ChangeLog 2016-09-16 08:55:35.000000000 +0000 +++ bgpdump-1.6.0/ChangeLog 2018-09-26 09:09:04.000000000 +0000 @@ -8,6 +8,17 @@ ISSUES, AS YOUR E-MAIL MAY BE LOST ========================================================== +2018-09-26 Colin Petrie v1.6.0 + * Fix overflow for large records + * Add basic '-q' quiet mode + * fix off-by-one in peer index assert + * fix MyAS handling in open message + * version bump as structs have new fields and sizes, + apps should be recompiled + +2017-01-15 Colin Petrie + * Add support for BGP Large Communities + 2016-09-15 Colin Petrie v1.5.0 * Many security fixes, crashes, segfaults, memory leaks fixed. * Many fixes provided by Christoph Biedl from Debian port diff -Nru bgpdump-1.5.0/configure.in bgpdump-1.6.0/configure.in --- bgpdump-1.5.0/configure.in 2016-09-16 08:55:35.000000000 +0000 +++ bgpdump-1.6.0/configure.in 2018-09-26 09:09:04.000000000 +0000 @@ -1,7 +1,7 @@ dnl Process this file with autoconf to produce a configure script. AC_REVISION($Revision$) -AC_INIT([libbgpdump], 1.5.0, [ris@ripe.net]) +AC_INIT([libbgpdump], 1.6.0, [ris@ripe.net]) AC_CONFIG_SRCDIR([bgpdump_lib.c]) AC_CONFIG_HEADERS([bgpdump-config.h]) diff -Nru bgpdump-1.5.0/debian/changelog bgpdump-1.6.0/debian/changelog --- bgpdump-1.5.0/debian/changelog 2018-07-19 21:43:14.000000000 +0000 +++ bgpdump-1.6.0/debian/changelog 2019-01-27 14:33:01.000000000 +0000 @@ -1,3 +1,9 @@ +bgpdump (1.6.0-1) unstable; urgency=medium + + * New upstream version 1.6.0 + + -- Christoph Biedl Sun, 27 Jan 2019 15:33:01 +0100 + bgpdump (1.5.0-3) unstable; urgency=medium * Use asciidoctor to render the manpage. Closes: #895167 diff -Nru bgpdump-1.5.0/debian/patches/fix-crash-on-huge-prefix-lists.patch bgpdump-1.6.0/debian/patches/fix-crash-on-huge-prefix-lists.patch --- bgpdump-1.5.0/debian/patches/fix-crash-on-huge-prefix-lists.patch 2016-10-26 22:50:13.000000000 +0000 +++ bgpdump-1.6.0/debian/patches/fix-crash-on-huge-prefix-lists.patch 2019-01-27 13:35:00.000000000 +0000 @@ -9,7 +9,7 @@ --- a/bgpdump_lib.c +++ b/bgpdump_lib.c -@@ -1525,11 +1525,16 @@ +@@ -1589,11 +1589,16 @@ break; } diff -Nru bgpdump-1.5.0/debian/patches/fix-unaligned-memory-access.patch bgpdump-1.6.0/debian/patches/fix-unaligned-memory-access.patch --- bgpdump-1.5.0/debian/patches/fix-unaligned-memory-access.patch 2018-07-19 06:33:10.000000000 +0000 +++ bgpdump-1.6.0/debian/patches/fix-unaligned-memory-access.patch 2019-01-27 13:35:00.000000000 +0000 @@ -7,7 +7,7 @@ --- a/bgpdump_lib.c +++ b/bgpdump_lib.c -@@ -1295,12 +1295,14 @@ +@@ -1326,12 +1326,14 @@ space = 1; int asn_pos = i * as->asn_len; diff -Nru bgpdump-1.5.0/debian/patches/increase-max-prefixes.patch bgpdump-1.6.0/debian/patches/increase-max-prefixes.patch --- bgpdump-1.5.0/debian/patches/increase-max-prefixes.patch 2018-07-19 06:33:10.000000000 +0000 +++ bgpdump-1.6.0/debian/patches/increase-max-prefixes.patch 2019-01-27 13:35:00.000000000 +0000 @@ -8,7 +8,7 @@ --- a/bgpdump_attr.h +++ b/bgpdump_attr.h -@@ -214,7 +214,7 @@ +@@ -223,7 +223,7 @@ pathid_t path_id; }; diff -Nru bgpdump-1.5.0/debian/patches/series bgpdump-1.6.0/debian/patches/series --- bgpdump-1.5.0/debian/patches/series 2018-07-19 06:33:10.000000000 +0000 +++ bgpdump-1.6.0/debian/patches/series 2019-01-27 14:32:27.000000000 +0000 @@ -11,3 +11,4 @@ # big test (see README.Debian) enhance-test-script.patch fix-unaligned-memory-access.patch +use-ldflags-for-linking.patch diff -Nru bgpdump-1.5.0/debian/patches/use-ldflags-for-linking.patch bgpdump-1.6.0/debian/patches/use-ldflags-for-linking.patch --- bgpdump-1.5.0/debian/patches/use-ldflags-for-linking.patch 1970-01-01 00:00:00.000000000 +0000 +++ bgpdump-1.6.0/debian/patches/use-ldflags-for-linking.patch 2019-01-27 14:32:27.000000000 +0000 @@ -0,0 +1,16 @@ +Description: Pass LDFLAGS to bgpdump linkage +Author: Christoph Biedl +Bug: https://bitbucket.org/ripencc/bgpdump/issues/50 +Last-Update: 2019-01-27 + +--- a/Makefile.in ++++ b/Makefile.in +@@ -32,7 +32,7 @@ + $(COMPILE) -o example example.c libbgpdump.a $(SYS_LIBS) + + bgpdump: bgpdump.c libbgpdump.a +- $(COMPILE) -o bgpdump bgpdump.c libbgpdump.a $(SYS_LIBS) ++ $(COMPILE) $(LDFLAGS) -o bgpdump bgpdump.c libbgpdump.a $(SYS_LIBS) + + check-clean: + rm -f test_out/*.bgp.gz diff -Nru bgpdump-1.5.0/debian/patches/use-libbsd.patch bgpdump-1.6.0/debian/patches/use-libbsd.patch --- bgpdump-1.5.0/debian/patches/use-libbsd.patch 2018-07-19 06:33:10.000000000 +0000 +++ bgpdump-1.6.0/debian/patches/use-libbsd.patch 2019-01-27 13:35:00.000000000 +0000 @@ -23,7 +23,7 @@ #include #include -@@ -77,7 +78,7 @@ +@@ -78,7 +79,7 @@ static struct aspath *asn32_merge_paths(struct aspath *path, struct aspath *newpath); static void asn32_expand_16_to_32(char *dst, char *src, int len); @@ -32,7 +32,7 @@ static size_t strlcat(char *dst, const char *src, size_t size); #endif -@@ -1689,7 +1690,7 @@ +@@ -1753,7 +1754,7 @@ } } diff -Nru bgpdump-1.5.0/debian/README.Debian bgpdump-1.6.0/debian/README.Debian --- bgpdump-1.5.0/debian/README.Debian 2018-07-19 06:33:10.000000000 +0000 +++ bgpdump-1.6.0/debian/README.Debian 2019-01-27 14:32:27.000000000 +0000 @@ -15,7 +15,7 @@ To run the test during build: * Download the full upstream tarball from - https://bitbucket.org/ripencc/bgpdump/downloads + https://bitbucket.org/ripencc/bgpdump/downloads/?tab=tags * Unpack the test files: $ tar --wildcards --strip-components=1 -xjvf .bz2 '*/test_*' * Add the list to include-binaries so dpkg-source will not complain: diff -Nru bgpdump-1.5.0/.hg_archival.txt bgpdump-1.6.0/.hg_archival.txt --- bgpdump-1.5.0/.hg_archival.txt 2016-09-16 08:55:35.000000000 +0000 +++ bgpdump-1.6.0/.hg_archival.txt 2018-09-26 09:09:04.000000000 +0000 @@ -1,4 +1,4 @@ repo: fc85b5d83c23266299237988401380dcb3d3c4f3 -node: a8ca3180d6d46836b4d4f3f66696b7ed1f7884ee +node: 6be858c0cc9e14607c6bb1dd6015df536dd642c5 branch: default -tag: 1.5.0 +tag: 1.6.0 diff -Nru bgpdump-1.5.0/.hgtags bgpdump-1.6.0/.hgtags --- bgpdump-1.5.0/.hgtags 2016-09-16 08:55:35.000000000 +0000 +++ bgpdump-1.6.0/.hgtags 2018-09-26 09:09:04.000000000 +0000 @@ -8,3 +8,4 @@ c4c53146f09af40a0068992d67a345a05ac54514 1.4.99.14 d8e8bcf60eb4c7ce065b2744d6a32003c728d8b2 1.4.99.15 601292759e414fd15a59332928956012b3dc3ddb 1.5.00.00 +a8ca3180d6d46836b4d4f3f66696b7ed1f7884ee 1.5.0