From 09f5e6db0e25c6ecfa229c94dc63c526f6833d66 Mon Sep 17 00:00:00 2001 From: Alexandre Snarskii Date: Sun, 30 Aug 2015 14:38:18 +0300 Subject: [PATCH] Allow use of alternate port in -h host[:port] --- bgpq3.c | 14 +++++++++++--- bgpq3.h | 1 + bgpq_expander.c | 3 ++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/bgpq3.c b/bgpq3.c index a697356..b599bbb 100644 --- a/bgpq3.c +++ b/bgpq3.c @@ -26,7 +26,7 @@ extern int expand_special_asn; int usage(int ecode) { - printf("\nUsage: bgpq3 [-h host] [-S sources] [-P|E|G |f ]" + printf("\nUsage: bgpq3 [-h host[:port]] [-S sources] [-P|E|G |f ]" " [-2346AbDJjXd] [-R len] ...\n"); printf(" -2 : allow routes belonging to as23456 (transition-as) " "(default: false)\n"); @@ -44,7 +44,8 @@ usage(int ecode) printf(" -F fmt : generate output in user-defined format\n"); printf(" -G number : generate output as-path access-list\n"); printf(" -h host : host running IRRD software (whois.radb.net by " - "default)\n"); + "default)\n" + " (use host:port to specify alternate port)\n"); printf(" -J : generate config for JunOS (Cisco IOS by default)\n"); printf(" -j : generate JSON output (Cisco IOS by default)\n"); printf(" -M match : extra match conditions for JunOS route-filters\n"); @@ -178,8 +179,15 @@ main(int argc, char* argv[]) expander.vendor=V_FORMAT; expander.format=optarg; break; - case 'h': expander.server=optarg; + case 'h': { + char* d=strchr(optarg, ':'); + expander.server=optarg; + if(d) { + *d=0; + expander.port=d+1; + }; break; + }; case 'J': if(expander.vendor) vendor_exclusive(); expander.vendor=V_JUNIPER; break; diff --git a/bgpq3.h b/bgpq3.h index 556dba8..5fb7174 100644 --- a/bgpq3.h +++ b/bgpq3.h @@ -58,6 +58,7 @@ struct bgpq_expander { int piped; char* match; char* server; + char* port; char* format; unsigned maxlen; STAILQ_HEAD(bgpq_requests, bgpq_request) wq, rq; diff --git a/bgpq_expander.c b/bgpq_expander.c index 5ac8a73..966686a 100644 --- a/bgpq_expander.c +++ b/bgpq_expander.c @@ -58,6 +58,7 @@ bgpq_expander_init(struct bgpq_expander* b, int af) memset(b->asn32s[0],0,8192); b->identify=1; b->server="whois.radb.net"; + b->port="43"; STAILQ_INIT(&b->wq); STAILQ_INIT(&b->rq); @@ -714,7 +715,7 @@ bgpq_expand(struct bgpq_expander* b) hints.ai_socktype=SOCK_STREAM; - err=getaddrinfo(b->server,"43",&hints,&res); + err=getaddrinfo(b->server,b->port,&hints,&res); if(err) { sx_report(SX_ERROR,"Unable to resolve %s: %s\n", b->server, gai_strerror(err));