/*************************************************************************** * Copyright (C) 2004 by Intra2net AG * * opensource@intra2net.com * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License * * version 2.1 as published by the Free Software Foundation; * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H #include #endif #include #include #include char *addr_to_dotted(unsigned int addr) { static char buf[20]; const unsigned char *bytep; bytep = (const unsigned char *) &addr; sprintf(buf, "%u.%u.%u.%u", bytep[0], bytep[1], bytep[2], bytep[3]); return buf; } int main(int argc, char *argv[]) { struct ipt_ACCOUNT_context ctx; struct ipt_account_handle_ip *entry; int i = 0; if (argc != 2) { printf("Syntax: %s TABLE-NAME\n", argv[0]); exit (-1); } if(ipt_ACCOUNT_init(&ctx)) { printf("Init failed: %s\n", ctx.error_str); exit (-1); } while (1) { printf("Run #%d\n", i); // Get entries from table test if (ipt_ACCOUNT_read_entries(&ctx, argv[1], 0)) { printf("Read failed: %s\n", ctx.error_str); ipt_ACCOUNT_deinit(&ctx); exit (-1); } // Output and free entries while ((entry = ipt_ACCOUNT_get_next_entry(&ctx)) != NULL) { printf("IP: %s SRC packets: %u bytes: %u DST packets: %u bytes: %u\n", addr_to_dotted(entry->ip), entry->src_packets, entry->src_bytes, entry->dst_packets, entry->dst_bytes); } sleep(1); i++; } ipt_ACCOUNT_deinit(&ctx); exit (0); }