X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/4e0597cd50268bc57fa118f1362360a2db2ec23a..df66283f1522c35ce692bee06c23c80413ce0791:/l2tpns.c?ds=inline diff --git a/l2tpns.c b/l2tpns.c index 0ac9d03..0414db7 100644 --- a/l2tpns.c +++ b/l2tpns.c @@ -4,7 +4,7 @@ // Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced // vim: sw=8 ts=8 -char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.44 2004-11-05 04:55:27 bodea Exp $"; +char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.46 2004-11-09 05:42:53 bodea Exp $"; #include #include @@ -787,10 +787,6 @@ void processipout(u8 * buf, int len) return; } - // Snooping this session, send it to intercept box - if (sp->snoop_ip && sp->snoop_port) - snoop_send_packet(buf, len, sp->snoop_ip, sp->snoop_port); - LOG(5, session[s].ip, s, t, "Ethernet -> Tunnel (%d bytes)\n", len); // Add on L2TP header @@ -804,6 +800,10 @@ void processipout(u8 * buf, int len) tunnelsend(b, len + (p-b), t); // send it... } + // Snooping this session, send it to intercept box + if (sp->snoop_ip && sp->snoop_port) + snoop_send_packet(buf, len, sp->snoop_ip, sp->snoop_port); + sp->cout += len; // byte count sp->total_cout += len; // byte count sp->pout++; @@ -837,15 +837,12 @@ void send_ipout(sessionidt s, u8 *buf, int len) if (!session[s].ip) return; + t = session[s].tunnel; sp = &session[s]; LOG(5, session[s].ip, s, t, "Ethernet -> Tunnel (%d bytes)\n", len); - // Snooping this session. - if (sp->snoop_ip && sp->snoop_port) - snoop_send_packet(buf, len, sp->snoop_ip, sp->snoop_port); - // Add on L2TP header { u8 *p = makeppp(b, sizeof(b), buf, len, t, s, PPPIP); @@ -856,6 +853,11 @@ void send_ipout(sessionidt s, u8 *buf, int len) } tunnelsend(b, len + (p-b), t); // send it... } + + // Snooping this session. + if (sp->snoop_ip && sp->snoop_port) + snoop_send_packet(buf, len, sp->snoop_ip, sp->snoop_port); + sp->cout += len; // byte count sp->total_cout += len; // byte count sp->pout++; @@ -2947,9 +2949,11 @@ int main(int argc, char *argv[]) switch (o) { case 'd': - // Double fork to detach from terminal - if (fork()) exit(0); if (fork()) exit(0); + setsid(); + freopen("/dev/null", "r", stdin); + freopen("/dev/null", "w", stdout); + freopen("/dev/null", "w", stderr); break; case 'v': optdebug++;