=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/netstat/show.c,v retrieving revision 1.15 retrieving revision 1.16 diff -c -r1.15 -r1.16 *** src/usr.bin/netstat/show.c 2008/12/15 20:16:20 1.15 --- src/usr.bin/netstat/show.c 2008/12/15 21:18:37 1.16 *************** *** 1,4 **** ! /* $OpenBSD: show.c,v 1.15 2008/12/15 20:16:20 deraadt Exp $ */ /* $NetBSD: show.c,v 1.1 1996/11/15 18:01:41 gwr Exp $ */ /* --- 1,4 ---- ! /* $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,66 **** char *any_ntoa(const struct sockaddr *); char *link_print(struct sockaddr *); ! char *label_print_op(u_int8_t); char *label_print(struct sockaddr *); #define ROUNDUP(a) \ --- 60,66 ---- char *any_ntoa(const struct sockaddr *); char *link_print(struct sockaddr *); ! char *label_print_op(u_int32_t); char *label_print(struct sockaddr *); #define ROUNDUP(a) \ *************** *** 523,528 **** --- 523,538 ---- 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,614 **** 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]; --- 615,622 ---- *************** *** 815,824 **** (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)); --- 823,830 ---- *************** *** 867,877 **** } } - #if 0 char * ! label_print_op(u_int8_t type) { ! switch (type) { case MPLS_OP_POP: return ("POP"); case MPLS_OP_SWAP: --- 873,882 ---- } } char * ! label_print_op(u_int32_t type) { ! switch (type & (MPLS_OP_PUSH | MPLS_OP_POP | MPLS_OP_SWAP)) { case MPLS_OP_POP: return ("POP"); case MPLS_OP_SWAP: *************** *** 892,916 **** 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) 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)); free(in_label); free(out_label); return (line); } - #endif void index_pfk(struct sadb_msg *msg, void **headers) --- 897,918 ---- char *in_label; char *out_label; ! 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", in_label, ! out_label); free(in_label); free(out_label); return (line); } void index_pfk(struct sadb_msg *msg, void **headers)