1 2 /* 3 * Copyright (C) 2012 by Darren Reed. 4 * 5 * See the IPFILTER.LICENCE file for details on licencing. 6 */ 7 8 #include "ipf.h" 9 10 11 iphtable_t * 12 printhash( iphtable_t *hp, copyfunc_t copyfunc, char *name, int opts, 13 wordtab_t *fields) 14 { 15 iphtent_t *ipep, **table; 16 iphtable_t iph; 17 int printed; 18 size_t sz; 19 20 if ((*copyfunc)((char *)hp, (char *)&iph, sizeof(iph))) 21 return (NULL); 22 23 if ((name != NULL) && strncmp(name, iph.iph_name, FR_GROUPLEN)) 24 return (iph.iph_next); 25 26 if (fields == NULL) 27 printhashdata(hp, opts); 28 29 if ((hp->iph_flags & IPHASH_DELETE) != 0) 30 PRINTF("# "); 31 32 if ((opts & OPT_DEBUG) == 0) 33 PRINTF("\t{"); 34 35 sz = iph.iph_size * sizeof(*table); 36 table = malloc(sz); 37 if ((*copyfunc)((char *)iph.iph_table, (char *)table, sz)) 38 return (NULL); 39 40 for (printed = 0, ipep = iph.iph_list; ipep != NULL; ) { 41 ipep = printhashnode(&iph, ipep, copyfunc, opts, fields); 42 printed++; 43 } 44 if (printed == 0) 45 putchar(';'); 46 47 free(table); 48 49 if ((opts & OPT_DEBUG) == 0) 50 PRINTF(" };\n"); 51 52 return (iph.iph_next); 53 } 54