f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh/*
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * Copyright (C) 2002 by Darren Reed.
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh *
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * See the IPFILTER.LICENCE file for details on licencing.
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh *
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh * Use is subject to license terms.
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh */
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#pragma ident "%Z%%M% %I% %E% SMI"
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#include "ipf.h"
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#define PRINTF (void)printf
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh#define FPRINTF (void)fprintf
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhvoid printhashdata(hp, opts)
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhiphtable_t *hp;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dhint opts;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh{
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh if ((opts & OPT_DEBUG) == 0) {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh if ((hp->iph_type & IPHASH_ANON) == IPHASH_ANON)
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("# 'anonymous' table\n");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh switch (hp->iph_type & ~IPHASH_ANON)
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh case IPHASH_LOOKUP :
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("table");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh break;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh case IPHASH_GROUPMAP :
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("group-map");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh if (hp->iph_flags & FR_INQUE)
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF(" in");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh else if (hp->iph_flags & FR_OUTQUE)
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF(" out");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh else
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF(" ???");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh break;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh default :
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("%#x", hp->iph_type);
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh break;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh }
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF(" role = ");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh } else {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("Hash Table Number: %s", hp->iph_name);
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh if ((hp->iph_type & IPHASH_ANON) == IPHASH_ANON)
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("(anon)");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh putchar(' ');
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("Role: ");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh }
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh switch (hp->iph_unit)
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh case IPL_LOGNAT :
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("nat");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh break;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh case IPL_LOGIPF :
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("ipf");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh break;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh case IPL_LOGAUTH :
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("auth");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh break;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh case IPL_LOGCOUNT :
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("count");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh break;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh default :
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("#%d", hp->iph_unit);
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh break;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh }
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh if ((opts & OPT_DEBUG) == 0) {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh if ((hp->iph_type & ~IPHASH_ANON) == IPHASH_LOOKUP)
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF(" type = hash");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF(" number = %s size = %lu",
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh hp->iph_name, (u_long)hp->iph_size);
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh if (hp->iph_seed != 0)
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF(" seed = %lu", hp->iph_seed);
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh putchar('\n');
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh } else {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF(" Type: ");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh switch (hp->iph_type & ~IPHASH_ANON)
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh case IPHASH_LOOKUP :
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("lookup");
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh break;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh case IPHASH_GROUPMAP :
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("groupmap Group. %s", hp->iph_name);
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh break;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh default :
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh break;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh }
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh putchar('\n');
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("\t\tSize: %lu\tSeed: %lu",
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh (u_long)hp->iph_size, hp->iph_seed);
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("\tRef. Count: %d\tMasks: %#x\n", hp->iph_ref,
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh hp->iph_masks[0]);
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh }
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh if ((opts & OPT_DEBUG) != 0) {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh struct in_addr m;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh int i;
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh for (i = 0; i < 32; i++) {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh if ((1 << i) & hp->iph_masks[0]) {
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh ntomask(4, i, &m.s_addr);
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh PRINTF("\t\tMask: %s\n", inet_ntoa(m));
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh }
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh }
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh }
f4b3ec61df05330d25f55a36b975b4d7519fdeb1dh}