summaryrefslogtreecommitdiff
path: root/extensions
diff options
context:
space:
mode:
author/C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=pablo/emailAddress=pablo@netfilter.org </C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=pablo/emailAddress=pablo@netfilter.org>2005-05-01 23:19:42 +0000
committer/C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=pablo/emailAddress=pablo@netfilter.org </C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=pablo/emailAddress=pablo@netfilter.org>2005-05-01 23:19:42 +0000
commitd894e26211f38db37015850afab6b7331edeecdb (patch)
tree27f9eb6baebd2fc2c5b54c97b4775797b69e43ba /extensions
parent21ed4ac1f957f1e4d7be195a98fb235de13ede21 (diff)
downloadconntrack-tools-d894e26211f38db37015850afab6b7331edeecdb.tar.gz
conntrack-tools-d894e26211f38db37015850afab6b7331edeecdb.zip
o Created changelog file
o Deleted libctnetlink.h and libnfnetlink.h from the include/ dir. o Added support for version (-V) and help (-h) o Added event mask based support o Added GPLv2 headers o Use fprintf instead of printf o Defined print_tuple and print_proto output interfaces o ctnl_[get|del]_conntrack handles return value from kernel via msgerr o Added support for conntrack table flushing o Added test case file (test.sh) o Improve dump output o Autoconf stuff for conntrack + some pablo's modifications. o Fixed packet counters formatting (use %llu instead of %lu)
Diffstat (limited to 'extensions')
-rw-r--r--extensions/Makefile12
-rw-r--r--extensions/Makefile.am14
-rw-r--r--extensions/libct_proto_tcp.c29
-rw-r--r--extensions/libct_proto_udp.c49
4 files changed, 77 insertions, 27 deletions
diff --git a/extensions/Makefile b/extensions/Makefile
deleted file mode 100644
index e23ed90..0000000
--- a/extensions/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-CC=gcc
-
-all:
- ${CC} -fPIC -Wall -g -c libct_proto_tcp.c
- ${CC} -g -shared -Wl,-soname,libct_proto_tcp.so.0 -o libct_proto_tcp.so.0.0 libct_proto_tcp.o -lc
- ln -sf libct_proto_tcp.so.0.0 libct_proto_tcp.so
-
- ${CC} -fPIC -Wall -g -c libct_proto_udp.c
- ${CC} -g -shared -Wl,-soname,libct_proto_udp.so.0 -o libct_proto_udp.so.0.0 libct_proto_udp.o -lc
- ln -sf libct_proto_udp.so.0.0 libct_proto_udp.so
-clean:
- rm -rf *.so *.so.* *.o
diff --git a/extensions/Makefile.am b/extensions/Makefile.am
new file mode 100644
index 0000000..ae78346
--- /dev/null
+++ b/extensions/Makefile.am
@@ -0,0 +1,14 @@
+AUTOMAKE_OPTIONS = no-dependencies foreign
+
+EXTRA_DIST = $(man_MANS) acinclude.m4
+
+man_MANS =
+
+INCLUDES=-I../include -I/lib/modules/$(shell (uname -r))/build/include
+CFLAGS=-fPIC -Wall
+LIBS=
+
+lib_LTLIBRARIES = libct_proto_tcp.la libct_proto_udp.la
+
+libct_proto_tcp_la_SOURCES = libct_proto_tcp.c
+libct_proto_udp_la_SOURCES = libct_proto_udp.c
diff --git a/extensions/libct_proto_tcp.c b/extensions/libct_proto_tcp.c
index 3366da4..58005b0 100644
--- a/extensions/libct_proto_tcp.c
+++ b/extensions/libct_proto_tcp.c
@@ -1,10 +1,19 @@
+/*
+ * (C) 2005 by Pablo Neira Ayuso <pablo@eurodev.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ */
#include <stdio.h>
#include <getopt.h>
#include <stdlib.h>
#include <netinet/in.h> /* For htons */
#include <linux/netfilter_ipv4/ip_conntrack_tuple.h>
#include <linux/netfilter_ipv4/ip_conntrack.h>
-#include "../include/libct_proto.h"
+#include "libct_proto.h"
static struct option opts[] = {
{"orig-port-src", 1, 0, '1'},
@@ -85,25 +94,33 @@ int parse(char c, char *argv[],
break;
}
}
- if (i == 10)
+ if (i == 10) {
printf("doh?\n");
+ return 0;
+ }
}
break;
}
return 1;
}
-void print(struct ip_conntrack_tuple *t)
+void print_tuple(struct ip_conntrack_tuple *t)
+{
+ fprintf(stdout, "sport=%d dport=%d ", ntohs(t->src.u.tcp.port),
+ ntohs(t->dst.u.tcp.port));
+}
+
+void print_proto(union ip_conntrack_proto *proto)
{
- printf("sport=%d dport=%d ", ntohs(t->src.u.tcp.port),
- ntohs(t->dst.u.tcp.port));
+ fprintf(stdout, "[%s] ", states[proto->tcp.state]);
}
static struct ctproto_handler tcp = {
.name = "tcp",
.protonum = 6,
.parse = parse,
- .print = print,
+ .print_tuple = print_tuple,
+ .print_proto = print_proto,
.opts = opts
};
diff --git a/extensions/libct_proto_udp.c b/extensions/libct_proto_udp.c
index cf91934..5675a05 100644
--- a/extensions/libct_proto_udp.c
+++ b/extensions/libct_proto_udp.c
@@ -1,10 +1,19 @@
+/*
+ * (C) 2005 by Pablo Neira Ayuso <pablo@eurodev.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ */
#include <stdio.h>
#include <getopt.h>
#include <stdlib.h>
#include <netinet/in.h> /* For htons */
#include <linux/netfilter_ipv4/ip_conntrack_tuple.h>
#include <linux/netfilter_ipv4/ip_conntrack.h>
-#include "../include/libct_proto.h"
+#include "libct_proto.h"
static struct option opts[] = {
{"orig-port-src", 1, 0, '1'},
@@ -14,6 +23,20 @@ static struct option opts[] = {
{0, 0, 0, 0}
};
+enum udp_param_flags {
+ ORIG_SPORT_BIT = 0,
+ ORIG_SPORT = (1 << ORIG_SPORT_BIT),
+
+ ORIG_DPORT_BIT = 1,
+ ORIG_DPORT = (1 << ORIG_DPORT_BIT),
+
+ REPL_SPORT_BIT = 2,
+ REPL_SPORT = (1 << REPL_SPORT_BIT),
+
+ REPL_DPORT_BIT = 3,
+ REPL_DPORT = (1 << REPL_DPORT_BIT),
+};
+
int parse(char c, char *argv[],
struct ip_conntrack_tuple *orig,
struct ip_conntrack_tuple *reply,
@@ -22,36 +45,44 @@ int parse(char c, char *argv[],
{
switch(c) {
case '1':
- if (optarg)
+ if (optarg) {
orig->src.u.udp.port = htons(atoi(optarg));
+ *flags |= ORIG_SPORT;
+ }
break;
case '2':
- if (optarg)
+ if (optarg) {
orig->dst.u.udp.port = htons(atoi(optarg));
+ *flags |= ORIG_DPORT;
+ }
break;
case '3':
- if (optarg)
+ if (optarg) {
reply->src.u.udp.port = htons(atoi(optarg));
+ *flags |= REPL_SPORT;
+ }
break;
case '4':
- if (optarg)
+ if (optarg) {
reply->dst.u.udp.port = htons(atoi(optarg));
+ *flags |= REPL_DPORT;
+ }
break;
}
return 1;
}
-void print(struct ip_conntrack_tuple *t)
+void print_tuple(struct ip_conntrack_tuple *t)
{
- printf("sport=%d dport=%d ", ntohs(t->src.u.udp.port),
- ntohs(t->dst.u.udp.port));
+ fprintf(stdout, "sport=%d dport=%d ", ntohs(t->src.u.udp.port),
+ ntohs(t->dst.u.udp.port));
}
static struct ctproto_handler udp = {
.name = "udp",
.protonum = 17,
.parse = parse,
- .print = print,
+ .print_tuple = print_tuple,
.opts = opts
};