version 1.1.1.2, 2021/03/17 00:07:30
|
version 1.1.1.3, 2023/09/27 11:18:58
|
Line 43
|
Line 43
|
#include "utils.h" |
#include "utils.h" |
|
|
#define MAXLOADBAL 5 |
#define MAXLOADBAL 5 |
#define MAX_FORMAT_STR 81 | #define MAX_FORMAT_STR 320 |
|
|
|
|
void report_open( |
void report_open( |
Line 65 static size_t snprint_addr(
|
Line 65 static size_t snprint_addr(
|
struct hostent *host = |
struct hostent *host = |
ctl->dns ? addr2host((void *) addr, ctl->af) : NULL; |
ctl->dns ? addr2host((void *) addr, ctl->af) : NULL; |
if (!host) |
if (!host) |
return snprintf(dst, dst_len, "%s", strlongip(ctl, addr)); | return snprintf(dst, dst_len, "%s", strlongip(ctl->af, addr)); |
else if (ctl->dns && ctl->show_ips) |
else if (ctl->dns && ctl->show_ips) |
return snprintf(dst, dst_len, "%s (%s)", host->h_name, |
return snprintf(dst, dst_len, "%s (%s)", host->h_name, |
strlongip(ctl, addr)); | strlongip(ctl->af, addr)); |
else |
else |
return snprintf(dst, dst_len, "%s", host->h_name); |
return snprintf(dst, dst_len, "%s", host->h_name); |
} else |
} else |
Line 170 void report_close(
|
Line 170 void report_close(
|
if (j < 0) |
if (j < 0) |
continue; |
continue; |
|
|
/* 1000.0 is a temporay hack for stats usec to ms, impacted net_loss. */ | /* 1000.0 is a temporary hack for stats usec to ms, impacted net_loss. */ |
if (strchr(data_fields[j].format, 'f')) { |
if (strchr(data_fields[j].format, 'f')) { |
snprintf(buf + len, sizeof(buf), data_fields[j].format, |
snprintf(buf + len, sizeof(buf), data_fields[j].format, |
data_fields[j].net_xxx(at) / 1000.0); |
data_fields[j].net_xxx(at) / 1000.0); |
Line 215 void report_close(
|
Line 215 void report_close(
|
if (!found) { |
if (!found) { |
|
|
#ifdef HAVE_IPINFO |
#ifdef HAVE_IPINFO |
|
if (mpls->labels && z == 1 && ctl->enablempls) |
|
print_mpls(mpls); |
if (is_printii(ctl)) { |
if (is_printii(ctl)) { |
if (mpls->labels && z == 1 && ctl->enablempls) |
|
print_mpls(mpls); |
|
snprint_addr(ctl, name, sizeof(name), addr2); |
snprint_addr(ctl, name, sizeof(name), addr2); |
printf(" %s%s\n", fmt_ipinfo(ctl, addr2), name); |
printf(" %s%s\n", fmt_ipinfo(ctl, addr2), name); |
if (ctl->enablempls) |
|
print_mpls(mplss); |
|
} |
} |
|
if (ctl->enablempls) |
|
print_mpls(mplss); |
#else |
#else |
int k; |
int k; |
if (mpls->labels && z == 1 && ctl->enablempls) { |
if (mpls->labels && z == 1 && ctl->enablempls) { |
Line 235 void report_close(
|
Line 235 void report_close(
|
} |
} |
|
|
if (z == 1) { |
if (z == 1) { |
printf(" | `|-- %s\n", strlongip(ctl, addr2)); | printf(" | `|-- %s\n", strlongip(ctl->af, addr2)); |
for (k = 0; k < mplss->labels && ctl->enablempls; k++) { |
for (k = 0; k < mplss->labels && ctl->enablempls; k++) { |
printf |
printf |
(" | +-- [MPLS: Lbl %lu TC %u S %u TTL %u]\n", |
(" | +-- [MPLS: Lbl %lu TC %u S %u TTL %u]\n", |
Line 243 void report_close(
|
Line 243 void report_close(
|
mplss->ttl[k]); |
mplss->ttl[k]); |
} |
} |
} else { |
} else { |
printf(" | |-- %s\n", strlongip(ctl, addr2)); | printf(" | |-- %s\n", strlongip(ctl->af, addr2)); |
for (k = 0; k < mplss->labels && ctl->enablempls; k++) { |
for (k = 0; k < mplss->labels && ctl->enablempls; k++) { |
printf |
printf |
(" | +-- [MPLS: Lbl %lu TC %u S %u TTL %u]\n", |
(" | +-- [MPLS: Lbl %lu TC %u S %u TTL %u]\n", |
Line 344 void json_close(struct mtr_ctl *ctl)
|
Line 344 void json_close(struct mtr_ctl *ctl)
|
goto on_error; |
goto on_error; |
|
|
#ifdef HAVE_IPINFO |
#ifdef HAVE_IPINFO |
if(!ctl->ipinfo_no) { | if (!ctl->ipinfo_no) { |
char* fmtinfo = fmt_ipinfo(ctl, addr); |
char* fmtinfo = fmt_ipinfo(ctl, addr); |
if (fmtinfo != NULL) |
if (fmtinfo != NULL) |
fmtinfo = trim(fmtinfo, '\0'); |
fmtinfo = trim(fmtinfo, '\0'); |
Line 385 void json_close(struct mtr_ctl *ctl)
|
Line 385 void json_close(struct mtr_ctl *ctl)
|
if (ret == -1) |
if (ret == -1) |
goto on_error; |
goto on_error; |
|
|
printf("\n"); // bash promt should be on new line | printf("\n"); // bash prompt should be on new line |
json_decref(jreport); |
json_decref(jreport); |
return; |
return; |
on_error: |
on_error: |
Line 447 void xml_close(
|
Line 447 void xml_close(
|
title = "Loss"; |
title = "Loss"; |
} |
} |
|
|
/* 1000.0 is a temporay hack for stats usec to ms, impacted net_loss. */ | /* 1000.0 is a temporary hack for stats usec to ms, impacted net_loss. */ |
if (strchr(data_fields[j].format, 'f')) { |
if (strchr(data_fields[j].format, 'f')) { |
printf(name, |
printf(name, |
title, data_fields[j].net_xxx(at) / 1000.0, title); |
title, data_fields[j].net_xxx(at) / 1000.0, title); |
Line 470 void csv_close(
|
Line 470 void csv_close(
|
struct mtr_ctl *ctl, |
struct mtr_ctl *ctl, |
time_t now) |
time_t now) |
{ |
{ |
int i, j, at, max; | int i, j, at, max, z, w; |
ip_t *addr; |
ip_t *addr; |
|
ip_t *addr2 = NULL; |
char name[MAX_FORMAT_STR]; |
char name[MAX_FORMAT_STR]; |
|
|
for (i = 0; i < MAXFLD; i++) { |
for (i = 0; i < MAXFLD; i++) { |
Line 518 void csv_close(
|
Line 519 void csv_close(
|
if (j < 0) |
if (j < 0) |
continue; |
continue; |
|
|
/* 1000.0 is a temporay hack for stats usec to ms, impacted net_loss. */ | /* 1000.0 is a temporary hack for stats usec to ms, impacted net_loss. */ |
if (strchr(data_fields[j].format, 'f')) { |
if (strchr(data_fields[j].format, 'f')) { |
printf(",%.2f", |
printf(",%.2f", |
(double) (data_fields[j].net_xxx(at) / 1000.0)); |
(double) (data_fields[j].net_xxx(at) / 1000.0)); |
Line 527 void csv_close(
|
Line 528 void csv_close(
|
} |
} |
} |
} |
printf("\n"); |
printf("\n"); |
|
if (ctl->reportwide == 0) |
|
continue; |
|
|
|
for (z = 0; z < MAX_PATH; z++) { |
|
int found = 0; |
|
addr2 = net_addrs(at, z); |
|
snprint_addr(ctl, name, sizeof(name), addr2); |
|
if ((addrcmp |
|
((void *) &ctl->unspec_addr, (void *) addr2, |
|
ctl->af)) == 0) { |
|
break; |
|
} else if ((addrcmp |
|
((void *) addr, (void *) addr2, |
|
ctl->af)) == 0) { |
|
continue; /* Latest Host is already printed */ |
|
} else { |
|
for (w = 0; w < z; w++) |
|
/* Ok... checking if there are ips repeated on same hop */ |
|
if ((addrcmp |
|
((void *) addr2, (void *) net_addrs(at, w), |
|
ctl->af)) == 0) { |
|
found = 1; |
|
break; |
|
} |
|
|
|
if (!found) { |
|
#ifdef HAVE_IPINFO |
|
if (!ctl->ipinfo_no) { |
|
char *fmtinfo = fmt_ipinfo(ctl, addr2); |
|
fmtinfo = trim(fmtinfo, '\0'); |
|
printf("MTR.%s,%lld,%s,%s,%d,%s,%s", PACKAGE_VERSION, |
|
(long long) now, "OK", ctl->Hostname, at + 1, name, |
|
fmtinfo); |
|
} else |
|
#endif |
|
printf("MTR.%s,%lld,%s,%s,%d,%s", PACKAGE_VERSION, |
|
(long long) now, "OK", ctl->Hostname, at + 1, name); |
|
|
|
/* Use values associated with the first ip discovered for this hop */ |
|
for (i = 0; i < MAXFLD; i++) { |
|
j = ctl->fld_index[ctl->fld_active[i]]; |
|
if (j < 0) |
|
continue; |
|
|
|
/* 1000.0 is a temporary hack for stats usec to ms, impacted net_loss. */ |
|
if (strchr(data_fields[j].format, 'f')) { |
|
printf(",%.2f", |
|
(double) (data_fields[j].net_xxx(at) / 1000.0)); |
|
} else { |
|
printf(",%d", data_fields[j].net_xxx(at)); |
|
} |
|
} |
|
printf("\n"); |
|
} |
|
} |
|
} |
} |
} |
} |
} |