xref: /netbsd-src/external/bsd/ipf/dist/lib/printpoolnode.c (revision c9d5dc6c77aa32fd07899a7a63638e95ffa433dd)
1*c9d5dc6cSdarrenr /*	$NetBSD: printpoolnode.c,v 1.1.1.2 2012/07/22 13:44:42 darrenr Exp $	*/
2bc4097aaSchristos 
3bc4097aaSchristos /*
4bc4097aaSchristos  * Copyright (C) 2012 by Darren Reed.
5bc4097aaSchristos  *
6bc4097aaSchristos  * See the IPFILTER.LICENCE file for details on licencing.
7bc4097aaSchristos  */
8bc4097aaSchristos 
9bc4097aaSchristos #include "ipf.h"
10bc4097aaSchristos 
11bc4097aaSchristos 
12bc4097aaSchristos ip_pool_node_t *
printpoolnode(np,opts,fields)13bc4097aaSchristos printpoolnode(np, opts, fields)
14bc4097aaSchristos 	ip_pool_node_t *np;
15bc4097aaSchristos 	int opts;
16bc4097aaSchristos 	wordtab_t *fields;
17bc4097aaSchristos {
18bc4097aaSchristos 	int i;
19bc4097aaSchristos 
20bc4097aaSchristos 	if (fields != NULL) {
21bc4097aaSchristos 		for (i = 0; fields[i].w_value != 0; i++) {
22bc4097aaSchristos 			printpoolfield(np, IPLT_POOL, i);
23bc4097aaSchristos 			if (fields[i + 1].w_value != 0)
24bc4097aaSchristos 				printf("\t");
25bc4097aaSchristos 		}
26bc4097aaSchristos 		printf("\n");
27bc4097aaSchristos 	} else if ((opts & OPT_DEBUG) == 0) {
28bc4097aaSchristos 		putchar(' ');
29bc4097aaSchristos 		if (np->ipn_info == 1)
30bc4097aaSchristos 			PRINTF("! ");
31bc4097aaSchristos 		printip(np->ipn_addr.adf_family,
32bc4097aaSchristos 			(u_32_t *)&np->ipn_addr.adf_addr.in4);
33bc4097aaSchristos 		printmask(np->ipn_addr.adf_family,
34bc4097aaSchristos 			  (u_32_t *)&np->ipn_mask.adf_addr);
35bc4097aaSchristos 	} else {
36bc4097aaSchristos 		PRINTF("\tAddress: %s%s", np->ipn_info ? "! " : "",
37bc4097aaSchristos 			inet_ntoa(np->ipn_addr.adf_addr.in4));
38bc4097aaSchristos 		printmask(np->ipn_addr.adf_family,
39bc4097aaSchristos 			  (u_32_t *)&np->ipn_mask.adf_addr);
40bc4097aaSchristos #ifdef USE_QUAD_T
41bc4097aaSchristos 		PRINTF("\n\t\tHits %"PRIu64"\tBytes %"PRIu64"\tName %s\tRef %d\n",
42bc4097aaSchristos 			np->ipn_hits, np->ipn_bytes,
43bc4097aaSchristos 			np->ipn_name, np->ipn_ref);
44bc4097aaSchristos #else
45bc4097aaSchristos 		PRINTF("\n\t\tHits %lu\tBytes %lu\tName %s\tRef %d\n",
46bc4097aaSchristos 			np->ipn_hits, np->ipn_bytes,
47bc4097aaSchristos 			np->ipn_name, np->ipn_ref);
48bc4097aaSchristos #endif
49bc4097aaSchristos 	}
50bc4097aaSchristos 	return np->ipn_next;
51bc4097aaSchristos }
52