xref: /netbsd-src/external/bsd/ipf/dist/lib/printip.c (revision 13885a665959c62f13a82b3caedf986eaa17aa31)
1 /*	$NetBSD: printip.c,v 1.2 2012/07/22 14:27:36 darrenr Exp $	*/
2 
3 /*
4  * Copyright (C) 2012 by Darren Reed.
5  *
6  * See the IPFILTER.LICENCE file for details on licencing.
7  *
8  * Id: printip.c,v 1.1.1.2 2012/07/22 13:44:40 darrenr Exp $
9  */
10 
11 #include "ipf.h"
12 
13 
14 void
printip(family,addr)15 printip(family, addr)
16 	int family;
17 	u_32_t *addr;
18 {
19 	struct in_addr ipa;
20 
21 	if (family == AF_INET) {
22 		ipa.s_addr = *addr;
23 		if (ntohl(ipa.s_addr) < 256)
24 			PRINTF("%lu", (u_long)ntohl(ipa.s_addr));
25 		else
26 			PRINTF("%s", inet_ntoa(ipa));
27 	}
28 #ifdef AF_INET6
29 	else if (family == AF_INET6) {
30 		char buf[INET6_ADDRSTRLEN + 1];
31 		const char *str;
32 
33 		buf[0] = '\0';
34 		str = inet_ntop(AF_INET6, addr, buf, sizeof(buf) - 1);
35 		if (str != NULL)
36 			PRINTF("%s", str);
37 		else
38 			PRINTF("???");
39 	}
40 #endif
41 	else
42 		PRINTF("?(%d)?", family);
43 }
44