Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/netinet add routines to print in_addr and sockaddr_in (i...



details:   https://anonhg.NetBSD.org/src/rev/fbe5b4814b52
branches:  trunk
changeset: 334701:fbe5b4814b52
user:      christos <christos%NetBSD.org@localhost>
date:      Tue Dec 02 19:35:27 2014 +0000

description:
add routines to print in_addr and sockaddr_in (in_print and sin_print)

diffstat:

 sys/netinet/files.netinet |   3 +-
 sys/netinet/in.h          |   7 ++++-
 sys/netinet/in_print.c    |  61 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 69 insertions(+), 2 deletions(-)

diffs (101 lines):

diff -r 8a497cf476bc -r fbe5b4814b52 sys/netinet/files.netinet
--- a/sys/netinet/files.netinet Tue Dec 02 19:34:33 2014 +0000
+++ b/sys/netinet/files.netinet Tue Dec 02 19:35:27 2014 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: files.netinet,v 1.24 2012/06/25 15:28:39 christos Exp $
+#      $NetBSD: files.netinet,v 1.25 2014/12/02 19:35:27 christos Exp $
 
 defflag opt_tcp_debug.h                TCP_DEBUG
 defparam opt_tcp_debug.h       TCP_NDEBUG
@@ -21,6 +21,7 @@
 file   netinet/in.c            inet
 file   netinet/in_offload.c    inet
 file   netinet/in_pcb.c        inet
+file   netinet/in_print.c
 file   netinet/in_proto.c      inet
 file   netinet/in_selsrc.c     inet & ipselsrc
 file   netinet/ip_flow.c       inet & gateway
diff -r 8a497cf476bc -r fbe5b4814b52 sys/netinet/in.h
--- a/sys/netinet/in.h  Tue Dec 02 19:34:33 2014 +0000
+++ b/sys/netinet/in.h  Tue Dec 02 19:35:27 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: in.h,v 1.93 2014/10/12 19:02:18 christos Exp $ */
+/*     $NetBSD: in.h,v 1.94 2014/12/02 19:35:27 christos Exp $ */
 
 /*
  * Copyright (c) 1982, 1986, 1990, 1993
@@ -616,4 +616,9 @@
 }
 #endif /* _KERNEL */
 
+#if defined(_KERNEL) || defined(_TEST)
+int    in_print(char *, size_t, const struct in_addr *);
+int    sin_print(char *, size_t, const void *);
+#endif
+
 #endif /* !_NETINET_IN_H_ */
diff -r 8a497cf476bc -r fbe5b4814b52 sys/netinet/in_print.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/netinet/in_print.c    Tue Dec 02 19:35:27 2014 +0000
@@ -0,0 +1,61 @@
+/*     $NetBSD: in_print.c,v 1.1 2014/12/02 19:35:27 christos Exp $    */
+
+/*-
+ * Copyright (c) 2014 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <sys/cdefs.h>
+
+#include <sys/types.h>
+#ifdef _KERNEL
+__KERNEL_RCSID(0, "$NetBSD: in_print.c,v 1.1 2014/12/02 19:35:27 christos Exp $");
+#include <sys/systm.h>
+#else
+__RCSID("$NetBSD: in_print.c,v 1.1 2014/12/02 19:35:27 christos Exp $");
+#include <stdio.h>
+#endif
+#include <netinet/in.h>
+
+int
+in_print(char *buf, size_t len, const struct in_addr *ia)
+{
+       const in_addr_t a = ntohl(ia->s_addr);
+       return snprintf(buf, len, "%d.%d.%d.%d", 
+           (a >> 24) & 0xff, (a >> 16) & 0xff,
+           (a >>  8) & 0xff, (a >>  0) & 0xff);
+}
+
+int
+sin_print(char *buf, size_t len, const void *v)
+{
+       const struct sockaddr_in *sin = v;
+       const struct in_addr *ia = &sin->sin_addr;
+       char abuf[INET_ADDRSTRLEN];
+
+       if (!sin->sin_port)
+               return in_print(buf, len, ia);
+
+       in_print(abuf, sizeof(abuf), ia);
+       return snprintf(buf, len, "%s:%hu", abuf, ntohs(sin->sin_port));
+}



Home | Main Index | Thread Index | Old Index