summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormichele <michele@openbsd.org>2008-12-15 21:18:37 +0000
committermichele <michele@openbsd.org>2008-12-15 21:18:37 +0000
commit4bd9dbf52b83ebeb1bb49e8fe0469789b72b6d66 (patch)
treeb61b1d6d29e9e7e0472ad06dfb7312b037ce12dc
parentwork around tree breakage by mpls people (diff)
downloadwireguard-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.c34
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)