Improve debugging output on routing tests failure.
Most of the routing tests create per-test VNET, making it harder to repeat the failure with CLI tools. Provide an additional route/nexthop data on failure. Differential Revision: https://reviews.freebsd.org/D29957 Reviewed by: kp MFC after: 2 weeks
This commit is contained in:
parent
6096814d31
commit
bddae5c8a6
@ -40,7 +40,10 @@
|
||||
#define RTSOCK_ATF_REQUIRE_MSG(_rtm, _cond, _fmt, ...) do { \
|
||||
if (!(_cond)) { \
|
||||
printf("-- CONDITION FAILED, rtm dump --\n\n");\
|
||||
rtsock_print_message(_rtm); \
|
||||
rtsock_print_message(_rtm); \
|
||||
rtsock_print_table(AF_INET); \
|
||||
rtsock_print_table(AF_INET6); \
|
||||
printf("===================================\n");\
|
||||
} \
|
||||
ATF_REQUIRE_MSG(_cond, _fmt, ##__VA_ARGS__); \
|
||||
} while (0);
|
||||
@ -381,4 +384,31 @@ rtsock_print_message(struct rt_msghdr *rtm)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
print_command(char *cmd)
|
||||
{
|
||||
char line[1024];
|
||||
|
||||
FILE *fp = popen(cmd, "r");
|
||||
if (fp != NULL) {
|
||||
while (fgets(line, sizeof(line), fp) != NULL)
|
||||
printf("%s", line);
|
||||
pclose(fp);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
rtsock_print_table(int family)
|
||||
{
|
||||
char cmdbuf[128];
|
||||
char *key = (family == AF_INET) ? "4" : "6";
|
||||
|
||||
snprintf(cmdbuf, sizeof(cmdbuf), "/usr/bin/netstat -%srnW", key);
|
||||
printf("==== %s ===\n", cmdbuf);
|
||||
print_command(cmdbuf);
|
||||
snprintf(cmdbuf, sizeof(cmdbuf), "/usr/bin/netstat -%sonW", key);
|
||||
printf("==== %s ===\n", cmdbuf);
|
||||
print_command(cmdbuf);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user