diff options
author | 2008-12-15 21:18:37 +0000 | |
---|---|---|
committer | 2008-12-15 21:18:37 +0000 | |
commit | 4bd9dbf52b83ebeb1bb49e8fe0469789b72b6d66 (patch) | |
tree | b61b1d6d29e9e7e0472ad06dfb7312b037ce12dc | |
parent | work around tree breakage by mpls people (diff) | |
download | wireguard-openbsd-4bd9dbf52b83ebeb1bb49e8fe0469789b72b6d66.tar.xz wireguard-openbsd-4bd9dbf52b83ebeb1bb49e8fe0469789b72b6d66.zip |
Unbreak netstat, reflecting kernel changes.
Now it shows MPLS informations correctly.
OK claudio@
-rw-r--r-- | usr.bin/netstat/show.c | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/usr.bin/netstat/show.c b/usr.bin/netstat/show.c index 25e4d8fd348..b729e7d00b7 100644 --- a/usr.bin/netstat/show.c +++ b/usr.bin/netstat/show.c @@ -1,4 +1,4 @@ -/* $OpenBSD: show.c,v 1.15 2008/12/15 20:16:20 deraadt Exp $ */ +/* $OpenBSD: show.c,v 1.16 2008/12/15 21:18:37 michele Exp $ */ /* $NetBSD: show.c,v 1.1 1996/11/15 18:01:41 gwr Exp $ */ /* @@ -60,7 +60,7 @@ char *any_ntoa(const struct sockaddr *); char *link_print(struct sockaddr *); -char *label_print_op(u_int8_t); +char *label_print_op(u_int32_t); char *label_print(struct sockaddr *); #define ROUNDUP(a) \ @@ -523,6 +523,16 @@ p_sockaddr(struct sockaddr *sa, struct sockaddr *mask, int flags, int width) cp = netname((struct sockaddr *)sa6, mask); break; } + case AF_MPLS: + if (flags & RTF_HOST || mask == NULL) + cp = routename(sa); + else + cp = netname(sa, mask); + + snprintf(cp, MAXHOSTNAMELEN, "%s %s", cp, + label_print_op(flags)); + + break; default: if ((flags & RTF_HOST) || mask == NULL) cp = routename(sa); @@ -605,10 +615,8 @@ routename(struct sockaddr *sa) case AF_LINK: return (link_print(sa)); -#if 0 case AF_MPLS: return (label_print(sa)); -#endif case AF_UNSPEC: if (sa->sa_len == sizeof(struct sockaddr_rtlabel)) { static char name[RTLABEL_LEN]; @@ -815,10 +823,8 @@ netname(struct sockaddr *sa, struct sockaddr *mask) (struct sockaddr_in6 *)mask); case AF_LINK: return (link_print(sa)); -#if 0 case AF_MPLS: return (label_print(sa)); -#endif default: snprintf(line, sizeof(line), "af %d: %s", sa->sa_family, any_ntoa(sa)); @@ -867,11 +873,10 @@ link_print(struct sockaddr *sa) } } -#if 0 char * -label_print_op(u_int8_t type) +label_print_op(u_int32_t type) { - switch (type) { + switch (type & (MPLS_OP_PUSH | MPLS_OP_POP | MPLS_OP_SWAP)) { case MPLS_OP_POP: return ("POP"); case MPLS_OP_SWAP: @@ -892,25 +897,22 @@ label_print(struct sockaddr *sa) char *in_label; char *out_label; - if (asprintf(&in_label, "%u%%%s", - ntohl(smpls->smpls_in_label) >> MPLS_LABEL_OFFSET, - if_indextoname(smpls->smpls_in_ifindex, ifname_in)) == -1) + if (asprintf(&in_label, "%u", + ntohl(smpls->smpls_in_label) >> MPLS_LABEL_OFFSET) == -1) err(1, NULL); if (asprintf(&out_label, "%u", ntohl(smpls->smpls_out_label) >> MPLS_LABEL_OFFSET) == -1) err(1, NULL); - (void)snprintf(line, sizeof(line), "%-16s %-10s %-6s", in_label, - smpls->smpls_operation == MPLS_OP_POP ? "-" : out_label, - label_print_op(smpls->smpls_operation)); + (void)snprintf(line, sizeof(line), "%-16s %-10s", in_label, + out_label); free(in_label); free(out_label); return (line); } -#endif void index_pfk(struct sadb_msg *msg, void **headers) |