1 /* 2 * Copyright (C) 2002 by Darren Reed. 3 * 4 * See the IPFILTER.LICENCE file for details on licencing. 5 * 6 * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 7 * Use is subject to license terms. 8 */ 9 10 #include "ipf.h" 11 12 #define PRINTF (void)printf 13 #define FPRINTF (void)fprintf 14 15 16 void printhashdata(hp, opts) 17 iphtable_t *hp; 18 int opts; 19 { 20 21 if ((opts & OPT_DEBUG) == 0) { 22 if ((hp->iph_type & IPHASH_ANON) == IPHASH_ANON) 23 PRINTF("# 'anonymous' table\n"); 24 switch (hp->iph_type & ~IPHASH_ANON) 25 { 26 case IPHASH_LOOKUP : 27 PRINTF("table"); 28 break; 29 case IPHASH_GROUPMAP : 30 PRINTF("group-map"); 31 if (hp->iph_flags & FR_INQUE) 32 PRINTF(" in"); 33 else if (hp->iph_flags & FR_OUTQUE) 34 PRINTF(" out"); 35 else 36 PRINTF(" ???"); 37 break; 38 default : 39 PRINTF("%#x", hp->iph_type); 40 break; 41 } 42 PRINTF(" role = "); 43 } else { 44 PRINTF("Hash Table Number: %s", hp->iph_name); 45 if ((hp->iph_type & IPHASH_ANON) == IPHASH_ANON) 46 PRINTF("(anon)"); 47 putchar(' '); 48 PRINTF("Role: "); 49 } 50 51 switch (hp->iph_unit) 52 { 53 case IPL_LOGNAT : 54 PRINTF("nat"); 55 break; 56 case IPL_LOGIPF : 57 PRINTF("ipf"); 58 break; 59 case IPL_LOGAUTH : 60 PRINTF("auth"); 61 break; 62 case IPL_LOGCOUNT : 63 PRINTF("count"); 64 break; 65 default : 66 PRINTF("#%d", hp->iph_unit); 67 break; 68 } 69 70 if ((opts & OPT_DEBUG) == 0) { 71 if ((hp->iph_type & ~IPHASH_ANON) == IPHASH_LOOKUP) 72 PRINTF(" type = hash"); 73 PRINTF(" number = %s size = %lu", 74 hp->iph_name, (u_long)hp->iph_size); 75 if (hp->iph_seed != 0) 76 PRINTF(" seed = %lu", hp->iph_seed); 77 putchar('\n'); 78 } else { 79 PRINTF(" Type: "); 80 switch (hp->iph_type & ~IPHASH_ANON) 81 { 82 case IPHASH_LOOKUP : 83 PRINTF("lookup"); 84 break; 85 case IPHASH_GROUPMAP : 86 PRINTF("groupmap Group. %s", hp->iph_name); 87 break; 88 default : 89 break; 90 } 91 92 putchar('\n'); 93 PRINTF("\t\tSize: %lu\tSeed: %lu", 94 (u_long)hp->iph_size, hp->iph_seed); 95 PRINTF("\tRef. Count: %d\tMasks: %#x\n", hp->iph_ref, 96 hp->iph_masks[0]); 97 } 98 99 if ((opts & OPT_DEBUG) != 0) { 100 struct in_addr m; 101 int i; 102 103 for (i = 0; i < 32; i++) { 104 if ((1 << i) & hp->iph_masks[0]) { 105 ntomask(4, i, &m.s_addr); 106 PRINTF("\t\tMask: %s\n", inet_ntoa(m)); 107 } 108 } 109 } 110 } 111