iproute2: ndm states should be handled as flags
(Logical change 1.108)
This commit is contained in:
parent
80354aa911
commit
435ac6b8b5
43
ip/ipneigh.c
43
ip/ipneigh.c
|
|
@ -86,33 +86,6 @@ int nud_state_a2n(unsigned *state, char *arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
char * nud_state_n2a(__u8 state, char *buf, int len)
|
|
||||||
{
|
|
||||||
switch (state) {
|
|
||||||
case NUD_NONE:
|
|
||||||
return "none";
|
|
||||||
case NUD_INCOMPLETE:
|
|
||||||
return "incomplete";
|
|
||||||
case NUD_REACHABLE:
|
|
||||||
return "reachable";
|
|
||||||
case NUD_STALE:
|
|
||||||
return "stale";
|
|
||||||
case NUD_DELAY:
|
|
||||||
return "delay";
|
|
||||||
case NUD_PROBE:
|
|
||||||
return "probe";
|
|
||||||
case NUD_FAILED:
|
|
||||||
return "failed";
|
|
||||||
case NUD_NOARP:
|
|
||||||
return "noarp";
|
|
||||||
case NUD_PERMANENT:
|
|
||||||
return "permanent";
|
|
||||||
default:
|
|
||||||
snprintf(buf, len, "%x", state);
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int flush_update(void)
|
static int flush_update(void)
|
||||||
{
|
{
|
||||||
if (rtnl_send(filter.rth, filter.flushb, filter.flushp) < 0) {
|
if (rtnl_send(filter.rth, filter.flushb, filter.flushp) < 0) {
|
||||||
|
|
@ -316,8 +289,20 @@ int print_neigh(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r->ndm_state) {
|
if (r->ndm_state) {
|
||||||
SPRINT_BUF(b1);
|
int nud = r->ndm_state;
|
||||||
fprintf(fp, " nud %s", nud_state_n2a(r->ndm_state, b1, sizeof(b1)));
|
fprintf(fp, " ");
|
||||||
|
|
||||||
|
#define PRINT_FLAG(f) if (nud & NUD_##f) { \
|
||||||
|
nud &= ~NUD_##f; fprintf(fp, #f "%s", nud ? "," : ""); }
|
||||||
|
PRINT_FLAG(INCOMPLETE);
|
||||||
|
PRINT_FLAG(REACHABLE);
|
||||||
|
PRINT_FLAG(STALE);
|
||||||
|
PRINT_FLAG(DELAY);
|
||||||
|
PRINT_FLAG(PROBE);
|
||||||
|
PRINT_FLAG(FAILED);
|
||||||
|
PRINT_FLAG(NOARP);
|
||||||
|
PRINT_FLAG(PERMANENT);
|
||||||
|
#undef PRINT_FLAG
|
||||||
}
|
}
|
||||||
fprintf(fp, "\n");
|
fprintf(fp, "\n");
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue