From 6937c3f2bd8cf40ce8d2f0d3fea37f076e4ce709 Mon Sep 17 00:00:00 2001 From: Bjørn Mork Date: Sat, 4 Mar 2017 20:59:09 +0100 Subject: ripe-atlas-fw: imported version 4740 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Bjørn Mork --- eperd/traceroute.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'eperd/traceroute.c') diff --git a/eperd/traceroute.c b/eperd/traceroute.c index c446d8e..441aebd 100644 --- a/eperd/traceroute.c +++ b/eperd/traceroute.c @@ -28,7 +28,7 @@ #define uh_sum check #endif -#define TRACEROUTE_OPT_STRING ("!46IUFrTa:b:c:f:g:i:m:p:w:z:A:O:S:H:D:R:W:") +#define TRACEROUTE_OPT_STRING ("!46IUFrTa:b:c:f:g:i:m:p:w:z:A:B:O:S:H:D:R:W:") #define OPT_4 (1 << 0) #define OPT_6 (1 << 1) @@ -81,6 +81,7 @@ struct trtstate { /* Parameters */ char *atlas; + char *bundle_id; char *hostname; char *destportstr; char *out_filename; @@ -404,6 +405,8 @@ static void report(struct trtstate *state) get_timesync(), state->starttime, (long)time(NULL)); + if (state->bundle_id) + fprintf(fh, DBQ(bundle) ":%s, ", state->bundle_id); } fprintf(fh, DBQ(dst_name) ":" DBQ(%s), @@ -3816,6 +3819,7 @@ static void *traceroute_init(int __attribute((unused)) argc, char *argv[], /* must be int-sized */ size_t newsiz; char *str_Atlas; + char *str_bundle; const char *hostname; char *out_filename; const char *destportstr; @@ -3849,6 +3853,7 @@ static void *traceroute_init(int __attribute((unused)) argc, char *argv[], hbhoptsize= 0; destoptsize= 0; str_Atlas= NULL; + str_bundle= NULL; out_filename= NULL; response_in= NULL; response_out= NULL; @@ -3861,7 +3866,7 @@ for (i= 0; argv[i] != NULL; i++) &count, &firsthop, &gaplimit, &interface, &maxhops, &destportstr, &timeout, - &duptimeout, &str_Atlas, &out_filename, &maxpacksize, + &duptimeout, &str_Atlas, &str_bundle, &out_filename, &maxpacksize, &hbhoptsize, &destoptsize, &response_in, &response_out); hostname = argv[optind]; @@ -3925,6 +3930,14 @@ for (i= 0; argv[i] != NULL; i++) return NULL; } } + if (str_bundle) + { + if (!validate_atlas_id(str_bundle)) + { + crondlog(LVL8 "bad bundle ID '%s'", str_bundle); + return NULL; + } + } if (!delay_name_res) { @@ -3969,6 +3982,7 @@ for (i= 0; argv[i] != NULL; i++) state->duptimeout= duptimeout*1000; state->timeout= timeout*1000; state->atlas= str_Atlas ? strdup(str_Atlas) : NULL; + state->bundle_id= str_bundle ? strdup(str_bundle) : NULL; state->hostname= strdup(hostname); state->do_icmp= do_icmp; state->do_tcp= do_tcp; @@ -4479,6 +4493,8 @@ static int traceroute_delete(void *state) free(trtstate->atlas); trtstate->atlas= NULL; + free(trtstate->bundle_id); + trtstate->bundle_id= NULL; free(trtstate->hostname); trtstate->hostname= NULL; free(trtstate->destportstr); -- cgit v1.2.3