summaryrefslogtreecommitdiff
path: root/mtu1280.c
diff options
context:
space:
mode:
Diffstat (limited to 'mtu1280.c')
-rw-r--r--mtu1280.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/mtu1280.c b/mtu1280.c
index 60a9248..7948af9 100644
--- a/mtu1280.c
+++ b/mtu1280.c
@@ -408,7 +408,6 @@ cb (struct nfq_q_handle *qh, struct nfgenmsg *nfmsg,
}
-
int
main (int argc, char **argv)
{
@@ -417,16 +416,22 @@ main (int argc, char **argv)
struct nfnl_handle *nh;
int fd;
int rv;
- unsigned int queue = 1280; // default value
+ unsigned int queue = 1280; // -q
+ unsigned int do_fork = 0; // -d
char *interface;
char buf[4096] __attribute__ ((aligned));
// Getopt
int c;
int opterr = 0;
- while ((c = getopt (argc, argv, "q:")) != -1)
+ while ((c = getopt (argc, argv, "dq:")) != -1)
switch (c)
{
+ case 'd':
+ fprintf (stderr, "setting\n");
+ do_fork = 1;
+ fprintf (stderr, "set!\n");
+ break;
case 'q':
queue = strtol (optarg, NULL, 10);
break;
@@ -479,6 +484,7 @@ main (int argc, char **argv)
exit (1);
}
+
printf ("setting copy_packet mode\n");
if (nfq_set_mode (qh, NFQNL_COPY_PACKET, 0xffff) < 0)
{
@@ -486,6 +492,14 @@ main (int argc, char **argv)
exit (1);
}
+
+ if (do_fork)
+ {
+ fprintf (stdout, "forking to background\n");
+ daemon (0, 0);
+ }
+
+
fd = nfq_fd (h);
while ((rv = recv (fd, buf, sizeof (buf), 0)) && rv >= 0)