summaryrefslogtreecommitdiff
path: root/debian
AgeCommit message (Collapse)Author
2012-12-031:1.0.1-2+vyatta20+oxnard10debian/1.0.1-2+vyatta20+oxnard10oxnardGaurav Sinha
2012-12-031:1.0.1-2+vyatta20+oxnard9debian/1.0.1-2+vyatta20+oxnard9Gaurav Sinha
2012-12-031:1.0.1-2+vyatta20+oxnard8debian/1.0.1-2+vyatta20+oxnard8Gaurav Sinha
2012-11-30From patchwork Thu Nov 29 13:52:20 2012Gaurav Sinha
Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: conntrack: add support to dump the dying and unconfirmed list via ctnetlink Date: Thu, 29 Nov 2012 03:52:20 -0000 From: Pablo Neira <pablo@netfilter.org> X-Patchwork-Id: 202751 Message-Id: <1354197140-8498-1-git-send-email-pablo@netfilter.org> To: netfilter-devel@vger.kernel.org From: Pablo Neira Ayuso <pablo@netfilter.org> This patch adds support for: conntrack -L dying conntrack -L unconfirmed To display the list of dying and unconfirmed conntracks. This provides some instrumentation in case that `conntrack -C` really deviates from what `conntrack -L | wc -l` says. Users like to check this to make sure things are going OK. Still, some conntrack objects may be still in the dying and the unconfirmed list. With this patch, we can also dump their content, before it was not possible. In normal cases both lists would be simply empty, or in the case of the dying list, you can observe that entries go slightly down in number. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> --- src/conntrack.c | 108 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 95 insertions(+), 13 deletions(-) Index: conntrack-tools-oxnard-2d010c5/src/conntrack.c =================================================================== --- conntrack-tools-oxnard-2d010c5.orig/src/conntrack.c 2012-11-30 22:02:18.356340288 +0100 +++ conntrack-tools-oxnard-2d010c5/src/conntrack.c 2012-11-30 22:02:31.011558172 +0100 @@ -820,27 +820,45 @@ *cmd |= newcmd; } -static unsigned int -check_type(int argc, char *argv[]) +static char *get_table(int argc, char *argv[]) { char *table = NULL; - /* Nasty bug or feature in getopt_long ? + /* Nasty bug or feature in getopt_long ? * It seems that it behaves badly with optional arguments. * Fortunately, I just stole the fix from iptables ;) */ if (optarg) return 0; - else if (optind < argc && argv[optind][0] != '-' - && argv[optind][0] != '!') + else if (optind < argc && argv[optind][0] != '-' && + argv[optind][0] != '!') table = argv[optind++]; - - if (!table) - return 0; - + + return table; +} + +enum { + CT_TABLE_CONNTRACK, + CT_TABLE_EXPECT, + CT_TABLE_DYING, + CT_TABLE_UNCONFIRMED, +}; + +static unsigned int check_type(int argc, char *argv[]) +{ + const char *table = get_table(argc, argv); + + /* default to conntrack subsystem if nothing has been specified. */ + if (table == NULL) + return CT_TABLE_CONNTRACK; + if (strncmp("expect", table, strlen(table)) == 0) - return 1; + return CT_TABLE_EXPECT; else if (strncmp("conntrack", table, strlen(table)) == 0) - return 0; + return CT_TABLE_CONNTRACK; + else if (strncmp("dying", table, strlen(table)) == 0) + return CT_TABLE_DYING; + else if (strncmp("unconfirmed", table, strlen(table)) == 0) + return CT_TABLE_UNCONFIRMED; else exit_error(PARAMETER_PROBLEM, "unknown type `%s'", table); @@ -1633,6 +1651,27 @@ return MNL_CB_OK; } +static int mnl_nfct_dump_cb(const struct nlmsghdr *nlh, void *data) +{ + struct nf_conntrack *ct; + char buf[4096]; + + ct = nfct_new(); + if (ct == NULL) + return MNL_CB_OK; + + nfct_nlmsg_parse(nlh, ct); + + nfct_snprintf(buf, sizeof(buf), ct, NFCT_T_UNKNOWN, NFCT_O_DEFAULT, 0); + printf("%s\n", buf); + + nfct_destroy(ct); + + counter++; + + return MNL_CB_OK; +} + static struct ctproto_handler *h; int main(int argc, char *argv[]) @@ -1667,6 +1706,16 @@ switch(c) { /* commands */ case 'L': + type = check_type(argc, argv); + /* Special case: dumping dying and unconfirmed list + * are handled like normal conntrack dumps. + */ + if (type == CT_TABLE_DYING || + type == CT_TABLE_UNCONFIRMED) + add_command(&command, cmd2type[c][0]); + else + add_command(&command, cmd2type[c][type]); + break; case 'I': case 'D': case 'G': @@ -1677,14 +1726,25 @@ case 'C': case 'S': type = check_type(argc, argv); + if (type == CT_TABLE_DYING || + type == CT_TABLE_UNCONFIRMED) { + exit_error(PARAMETER_PROBLEM, + "Can't do that command with " + "tables `dying' and `unconfirmed'"); + } add_command(&command, cmd2type[c][type]); break; case 'U': type = check_type(argc, argv); - if (type == 0) + if (type == CT_TABLE_DYING || + type == CT_TABLE_UNCONFIRMED) { + exit_error(PARAMETER_PROBLEM, + "Can't do that command with " + "tables `dying' and `unconfirmed'"); + } else if (type == CT_TABLE_CONNTRACK) add_command(&command, CT_UPDATE); else - exit_error(PARAMETER_PROBLEM, + exit_error(PARAMETER_PROBLEM, "Can't update expectations"); break; /* options */ @@ -1884,6 +1944,28 @@ struct nfct_filter_dump *filter_dump; case CT_LIST: + if (type == CT_TABLE_DYING) { + if (nfct_mnl_socket_open() < 0) + exit_error(OTHER_PROBLEM, "Can't open handler"); + + res = nfct_mnl_dump(NFNL_SUBSYS_CTNETLINK, + IPCTNL_MSG_CT_GET_DYING, + mnl_nfct_dump_cb); + + nfct_mnl_socket_close(); + break; + } else if (type == CT_TABLE_UNCONFIRMED) { + if (nfct_mnl_socket_open() < 0) + exit_error(OTHER_PROBLEM, "Can't open handler"); + + res = nfct_mnl_dump(NFNL_SUBSYS_CTNETLINK, + IPCTNL_MSG_CT_GET_UNCONFIRMED, + mnl_nfct_dump_cb); + + nfct_mnl_socket_close(); + break; + } + cth = nfct_open(CONNTRACK, 0); if (!cth) exit_error(OTHER_PROBLEM, "Can't open handler");
2012-07-061:1.0.1-2+vyatta20+oxnard6vyatta/VC6.4-2012.08.04/i386vyatta/VC6.4-2012.08.04/amd64debian/1.0.1-2+vyatta20+oxnard6Gaurav Sinha
2012-06-111:1.0.1-2+vyatta20+oxnard5debian/1.0.1-2+vyatta20+oxnard5Gaurav Sinha
2012-06-111:1.0.1-2+vyatta20+oxnard4debian/1.0.1-2+vyatta20+oxnard4Gaurav Sinha
2012-06-111:1.0.1-2+vyatta20+oxnard3debian/1.0.1-2+vyatta20+oxnard3Gaurav Sinha
2012-06-10Merge branch 'pacifica' into oxnardGaurav Sinha
Conflicts: .frlog debian/changelog
2012-06-071:1.0.1-2+vyatta32debian/1.0.1-2+vyatta32Gaurav Sinha
2012-06-051:1.0.1-2+vyatta31debian/1.0.1-2+vyatta31Gaurav Sinha
2012-06-05Debian package conntrack-helpers to package helpers in user spaceGaurav Sinha
2012-06-041:1.0.1-2+vyatta30debian/1.0.1-2+vyatta30Gaurav Sinha
2012-06-041:1.0.1-2+vyatta29debian/1.0.1-2+vyatta29Gaurav Sinha
2012-06-04Add nfct debian package to this submodule.Gaurav Sinha
2012-06-011:1.0.1-2+vyatta28debian/1.0.1-2+vyatta28Gaurav Sinha
2012-05-301:1.0.1-2+vyatta27debian/1.0.1-2+vyatta27Gaurav Sinha
2012-05-301:1.0.1-2+vyatta26debian/1.0.1-2+vyatta26Gaurav Sinha
2012-05-301:1.0.1-2+vyatta25debian/1.0.1-2+vyatta25Gaurav Sinha
2012-05-301:1.0.1-2+vyatta24debian/1.0.1-2+vyatta24Gaurav Sinha
2012-05-301:1.0.1-2+vyatta23debian/1.0.1-2+vyatta23Gaurav Sinha
2012-04-091:1.0.1-2+vyatta22debian/1.0.1-2+vyatta22Gaurav
2012-03-031:1.0.1-2+vyatta21debian/1.0.1-2+vyatta21Deepti Kulkarni
2012-03-031:1.0.1-2+vyatta20+oxnard1vyatta/VC6.4-2012.05.31/amd64vyatta/VC6.4-2012.04.30/amd64vyatta/VC6.4-2012.03.27/amd64debian/1.0.1-2+vyatta20+oxnard1Deepti Kulkarni
2012-02-081:1.0.1-2+vyatta20debian/1.0.1-2+vyatta20Gaurav Sinha
2012-02-031:1.0.1-2+vyatta19vyatta/VC6.4-2012.05.31/i386vyatta/VC6.4-2012.04.30/i386vyatta/VC6.4-2012.03.27/i386debian/1.0.1-2+vyatta19Stephen Hemminger
2012-01-311:1.0.1-2+vyatta18Stephen Hemminger
2012-01-231.0.1-2+vyatta18debian/1.0.1-2+vyatta18Gaurav Sinha
2012-01-23updating version string for conntrack-tools to 1.0.1Gaurav Sinha
2012-01-200.9.14-2+vyatta16debian/0.9.14-2+vyatta16Gaurav Sinha
2012-01-20Fixing build issue in debian/rulesGaurav Sinha
2012-01-200.9.14-2+vyatta15debian/0.9.14-2+vyatta15Gaurav Sinha
2012-01-20updating changelog for merge of expect-sync and oxnardGaurav Sinha
2011-07-070.9.14-2+vyatta13debian/0.9.14-2+vyatta13Deepti Kulkarni
2010-12-280.9.14-2+vyatta12debian/0.9.14-2+vyatta12An-Cheng Huang
2010-09-020.9.14-2+vyatta11debian/0.9.14-2+vyatta11An-Cheng Huang
2010-08-310.9.14-2+vyatta10debian/0.9.14-2+vyatta10An-Cheng Huang
2010-08-31remove debian patching from buildAn-Cheng Huang
2010-07-220.9.14-2+vyatta9debian/0.9.14-2+vyatta9An-Cheng Huang
2010-07-090.9.14-2+vyatta8debian/0.9.14-2+vyatta8Mohit Mehta
2010-07-070.9.14-2+vyatta7debian/0.9.14-2+vyatta7Mohit Mehta
2010-07-010.9.14-2+vyatta6debian/0.9.14-2+vyatta6Mohit Mehta
2010-06-220.9.14-2+vyatta5debian/0.9.14-2+vyatta5Mohit Mehta
2010-06-22update dh_gencontrol for dev buildMohit Mehta
2010-06-150.9.14-2+vyatta4debian/0.9.14-2+vyatta4Mohit Mehta
2010-06-140.9.14-2+vyatta3debian/0.9.14-2+vyatta3Mohit Mehta
2010-06-14remove files for applied patchMohit Mehta
2010-06-14remove generated files, apply debian patch 10-fix_udp_support.dpatchMohit Mehta
2010-06-140.9.14-2+vyatta2debian/0.9.14-2+vyatta2Mohit Mehta
2010-06-14add vyatta entry to changelogdebian/0.9.14-2+vyatta1root