printhashnode.c revision 145511
1272343Sngie/*	$NetBSD$	*/
2272343Sngie
3272343Sngie/*
4272343Sngie * Copyright (C) 2002 by Darren Reed.
5272343Sngie *
6272343Sngie * See the IPFILTER.LICENCE file for details on licencing.
7272343Sngie */
8272343Sngie
9272343Sngie#include "ipf.h"
10272343Sngie
11272343Sngie#define	PRINTF	(void)printf
12272343Sngie#define	FPRINTF	(void)fprintf
13272343Sngie
14272343Sngieiphtent_t *printhashnode(iph, ipep, copyfunc, opts)
15272343Sngieiphtable_t *iph;
16272343Sngieiphtent_t *ipep;
17272343Sngiecopyfunc_t copyfunc;
18272343Sngieint opts;
19272343Sngie{
20272343Sngie	iphtent_t ipe;
21272343Sngie
22272343Sngie	if ((*copyfunc)(ipep, &ipe, sizeof(ipe)))
23272343Sngie		return NULL;
24272343Sngie
25272343Sngie	ipe.ipe_addr.in4_addr = htonl(ipe.ipe_addr.in4_addr);
26272343Sngie	ipe.ipe_mask.in4_addr = htonl(ipe.ipe_mask.in4_addr);
27272343Sngie
28272343Sngie	if ((opts & OPT_DEBUG) != 0) {
29272343Sngie		PRINTF("\tAddress: %s",
30272343Sngie			inet_ntoa(ipe.ipe_addr.in4));
31272343Sngie		printmask((u_32_t *)&ipe.ipe_mask.in4_addr);
32272343Sngie		PRINTF("\tRef. Count: %d\tGroup: %s\n", ipe.ipe_ref,
33272343Sngie			ipe.ipe_group);
34272343Sngie	} else {
35272343Sngie		putchar(' ');
36272343Sngie		printip((u_32_t *)&ipe.ipe_addr.in4_addr);
37272343Sngie		printmask((u_32_t *)&ipe.ipe_mask.in4_addr);
38272343Sngie		if (ipe.ipe_value != 0) {
39272343Sngie			switch (iph->iph_type & ~IPHASH_ANON)
40272343Sngie			{
41272343Sngie			case IPHASH_GROUPMAP :
42272343Sngie				if (strncmp(ipe.ipe_group, iph->iph_name,
43272343Sngie					    FR_GROUPLEN))
44272343Sngie					PRINTF(", group = %s", ipe.ipe_group);
45272343Sngie				break;
46272343Sngie			}
47272343Sngie		}
48272343Sngie		putchar(';');
49272343Sngie	}
50272343Sngie	ipep = ipe.ipe_next;
51272343Sngie	return ipep;
52272343Sngie}
53272343Sngie