Module Name: src Committed By: christos Date: Tue Dec 2 19:35:27 UTC 2014
Modified Files: src/sys/netinet: files.netinet in.h Added Files: src/sys/netinet: in_print.c Log Message: add routines to print in_addr and sockaddr_in (in_print and sin_print) To generate a diff of this commit: cvs rdiff -u -r1.24 -r1.25 src/sys/netinet/files.netinet cvs rdiff -u -r1.93 -r1.94 src/sys/netinet/in.h cvs rdiff -u -r0 -r1.1 src/sys/netinet/in_print.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/netinet/files.netinet diff -u src/sys/netinet/files.netinet:1.24 src/sys/netinet/files.netinet:1.25 --- src/sys/netinet/files.netinet:1.24 Mon Jun 25 11:28:39 2012 +++ src/sys/netinet/files.netinet Tue Dec 2 14:35:27 2014 @@ -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/igmp.c inet 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 Index: src/sys/netinet/in.h diff -u src/sys/netinet/in.h:1.93 src/sys/netinet/in.h:1.94 --- src/sys/netinet/in.h:1.93 Sun Oct 12 15:02:18 2014 +++ src/sys/netinet/in.h Tue Dec 2 14:35:27 2014 @@ -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 @@ sockaddr_in_alloc(const struct in_addr * } #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_ */ Added files: Index: src/sys/netinet/in_print.c diff -u /dev/null src/sys/netinet/in_print.c:1.1 --- /dev/null Tue Dec 2 14:35:27 2014 +++ src/sys/netinet/in_print.c Tue Dec 2 14:35:27 2014 @@ -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)); +}