Module Name:    src
Committed By:   kefren
Date:           Sat Jun 26 14:30:31 UTC 2010

Modified Files:
        src/usr.bin/netstat: show.c

Log Message:
add MPLS clue for showing routes


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/usr.bin/netstat/show.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/netstat/show.c
diff -u src/usr.bin/netstat/show.c:1.8 src/usr.bin/netstat/show.c:1.9
--- src/usr.bin/netstat/show.c:1.8	Sun Sep 13 02:53:17 2009
+++ src/usr.bin/netstat/show.c	Sat Jun 26 14:30:31 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: show.c,v 1.8 2009/09/13 02:53:17 elad Exp $	*/
+/*	$NetBSD: show.c,v 1.9 2010/06/26 14:30:31 kefren Exp $	*/
 /*	$OpenBSD: show.c,v 1.1 2006/05/27 19:16:37 claudio Exp $	*/
 
 /*
@@ -44,6 +44,7 @@
 #include <net/route.h>
 #include <netinet/in.h>
 #include <netinet/if_ether.h>
+#include <netmpls/mpls.h>
 #include <arpa/inet.h>
 
 #include <err.h>
@@ -59,6 +60,7 @@
 
 char	*any_ntoa(const struct sockaddr *);
 char	*link_print(struct sockaddr *);
+char	*mpls_ntoa(const struct sockaddr *); 
 
 #define ROUNDUP(a) \
 	((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
@@ -288,6 +290,9 @@
 	case AF_APPLETALK:
 		afname = "AppleTalk";
 		break;
+	case AF_MPLS:
+		afname = "MPLS";
+		break;
 	default:
 		afname = NULL;
 		break;
@@ -420,6 +425,9 @@
 	case AF_LINK:
 		return (link_print(sa));
 
+	case AF_MPLS:
+		return mpls_ntoa(sa);
+
 #if 0 /* XXX-elad */
 	case AF_UNSPEC:
 		if (sa->sa_len == sizeof(struct sockaddr_rtlabel)) {
@@ -684,3 +692,19 @@
 		return (link_ntoa(sdl));
 	}
 }
+
+char *
+mpls_ntoa(const struct sockaddr *sa)
+{
+	static char obuf[100];
+	const struct sockaddr_mpls *sm;
+	union mpls_shim ms;
+
+	sm = (const struct sockaddr_mpls*)sa;
+	ms.s_addr = ntohl(sm->smpls_addr.s_addr);
+
+	snprintf(obuf, sizeof(obuf), "%u",
+	     ms.shim.label);
+
+	return obuf;
+}

Reply via email to