From 43233d6ef5c8dd7e034e2754e2ff7ba5f7f965e8 Mon Sep 17 00:00:00 2001 From: Alexandre Snarskii Date: Wed, 29 Oct 2014 19:53:11 +0300 Subject: [PATCH] -W len option documented. --- CHANGES | 1 + README.md | 6 +++++- bgpq3.8 | 3 +++ bgpq3.c | 10 ++++++---- bgpq3_printer.c | 19 ++++--------------- 5 files changed, 19 insertions(+), 20 deletions(-) diff --git a/CHANGES b/CHANGES index 527f2c3..104bfe9 100644 --- a/CHANGES +++ b/CHANGES @@ -10,6 +10,7 @@ ]} Based on suggestion by Henrik Thostrup Jensen. + - -W len option documented. 0.1.24 (2014-07-31) - empty prefix-lists (Cisco), extended access-lists (Cisco), as-path diff --git a/README.md b/README.md index 5d45515..98f9014 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ NAME SYNOPSIS -------- - bgpq3 [-h host] [-S sources] [-EP] [-f asn | -G asn] [-346AbDdJjX] [-r len] [-R len] [-m max] OBJECTS [...] + bgpq3 [-h host] [-S sources] [-EP] [-f asn | -G asn] [-346AbDdJjX] [-r len] [-R len] [-m max] [-W len] OBJECTS [...] DESCRIPTION ----------- @@ -107,6 +107,10 @@ The options are as follows: > disable pipelining. +- -W len + + > generate as-path strings of a given length maximum (0 for infinity). + - -X > generate config for Cisco IOS XR devices (plain IOS by default). diff --git a/bgpq3.8 b/bgpq3.8 index 0da7085..344a226 100644 --- a/bgpq3.8 +++ b/bgpq3.8 @@ -41,6 +41,7 @@ .Op Fl r Ar len .Op Fl R Ar len .Op Fl m Ar max +.Op Fl W Ar len .Ar OBJECTS .Op "..." .Sh DESCRIPTION @@ -96,6 +97,8 @@ allow more specific routes up to specified masklen too. use specified sources only (default: RADB,RIPE,APNIC). .It Fl T disable pipelining. +.It Fl W Ar len +generate as-path strings of no more than len items (use 0 for inifinity). .It Fl X generate config for Cisco IOS XR devices (plain IOS by default). .It Ar OBJECTS diff --git a/bgpq3.c b/bgpq3.c index 10d64f3..411912c 100644 --- a/bgpq3.c +++ b/bgpq3.c @@ -32,7 +32,7 @@ usage(int ecode) "route-filters\n as much as possible\n"); printf(" -b : generate BIRD output (Cisco IOS by default)\n"); printf(" -d : generate some debugging output\n"); - printf(" -D : use asdot notation in as-path\n"); + printf(" -D : use asdot notation in as-path (Cisco only)\n"); printf(" -E : generate extended access-list(Cisco) or " "route-filter(Juniper)\n"); printf(" -f number : generate input as-path access-list\n"); @@ -53,6 +53,8 @@ usage(int ecode) printf(" -S sources: use only specified sources (default:" " RADB,RIPE,APNIC)\n"); printf(" -T : disable pipelining (experimental, faster mode)\n"); + printf(" -W len : specify max-entries on as-path line (use 0 for " + "infinity)\n"); printf(" -X : generate config for IOS XR (Cisco IOS by default)\n"); printf("\n" PACKAGE_NAME " version: " PACKAGE_VERSION "\n"); printf("Copyright(c) Alexandre Snarskii 2007-2014\n\n"); @@ -238,7 +240,7 @@ main(int argc, char* argv[]) case 'S': expander.sources=optarg; break; case 'W': expander.aswidth=atoi(optarg); - if(expander.aswidth<1) { + if(expander.aswidth<0) { sx_report(SX_FATAL,"Invalid as-width: %s\n", optarg); exit(1); }; @@ -288,8 +290,8 @@ main(int argc, char* argv[]) }; if(expander.asdot && expander.vendor!=V_CISCO) { - sx_report(SX_FATAL,"asdot notation supported only for Cisco, Juniper" - " uses asplain only\n"); + sx_report(SX_FATAL,"asdot notation supported only for Cisco, " + "other formats use asplain only\n"); }; if(!expander.asn32 && expander.asnumber>65535) { diff --git a/bgpq3_printer.c b/bgpq3_printer.c index 7442575..d25e9bb 100644 --- a/bgpq3_printer.c +++ b/bgpq3_printer.c @@ -306,22 +306,11 @@ bgpq3_print_json_aspath(FILE* f, struct bgpq_expander* b) for(j=0;j<8;j++) { if(b->asn32s[k][i]&(0x80>>j)) { if(!nc) { - if(b->asdot && k>0) { - fprintf(f,"%s\n %i.%i",needscomma?",":"", k,i*8+j); - needscomma=1; - } else { - fprintf(f,"%s\n %i",needscomma?",":"", - k*65536+i*8+j); - needscomma=1; - }; + fprintf(f,"%s\n %i",needscomma?",":"", k*65536+i*8+j); + needscomma=1; } else { - if(b->asdot && k>0) { - fprintf(f,"%s%i.%i,",needscomma?",":"", k,i*8+j); - needscomma=1; - } else { - fprintf(f,"%s%i",needscomma?",":"", k*65536+i*8+j); - needscomma=1; - }; + fprintf(f,"%s%i",needscomma?",":"", k*65536+i*8+j); + needscomma=1; } nc++; if(nc==b->aswidth) {