From: bodea Date: Tue, 25 Jan 2005 04:38:49 +0000 (+0000) Subject: don't send 4 byte header when snooping v6 packets X-Git-Tag: release_2_1_0~77 X-Git-Url: http://git.sameswireless.fr/l2tpns.git/commitdiff_plain/9a77f7fa6a6a04197bde4b4a4f30dd7440c88592 don't send 4 byte header when snooping v6 packets --- diff --git a/ppp.c b/ppp.c index 074e00f..6b1bb6e 100644 --- a/ppp.c +++ b/ppp.c @@ -1,6 +1,6 @@ // L2TPNS PPP Stuff -char const *cvs_id_ppp = "$Id: ppp.c,v 1.42 2005/01/25 04:19:06 bodea Exp $"; +char const *cvs_id_ppp = "$Id: ppp.c,v 1.43 2005/01/25 04:38:49 bodea Exp $"; #include #include @@ -852,15 +852,19 @@ void processipin(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l) // Add on the tun header p -= 4; - *(uint32_t *) p = htonl(0x00000800); + *(uint32_t *) p = htonl(PKTIP); l += 4; - if (session[s].tbf_in && !config->cluster_iam_master) { // Are we throttled and a slave? - master_throttle_packet(session[s].tbf_in, p, l); // Pass it to the master for handling. + // Are we throttled and a slave? + if (session[s].tbf_in && !config->cluster_iam_master) { + // Pass it to the master for handling. + master_throttle_packet(session[s].tbf_in, p, l); return; } - if (session[s].tbf_in && config->cluster_iam_master) { // Are we throttled and a master?? actually handle the throttled packets. + // Are we throttled and a master?? + if (session[s].tbf_in && config->cluster_iam_master) { + // Actually handle the throttled packets. tbf_queue_packet(session[s].tbf_in, p, l); return; } @@ -936,7 +940,7 @@ void processipv6in(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l) // Add on the tun header p -= 4; - *(uint32_t *)p = htonl(PKTIPV6); + *(uint32_t *) p = htonl(PKTIPV6); l += 4; // Are we throttled and a slave? @@ -946,9 +950,9 @@ void processipv6in(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l) return; } - // Are we throttled and a master?? actually handle the throttled - // packets. + // Are we throttled and a master?? if (session[s].tbf_in && config->cluster_iam_master) { + // Actually handle the throttled packets. tbf_queue_packet(session[s].tbf_in, p, l); return; } @@ -957,14 +961,16 @@ void processipv6in(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l) if (tun_write(p, l) < 0) { STAT(tun_tx_errors); - LOG(0, s, t, "Error writing %d bytes to TUN device: %s" " (tunfd=%d, p=%p)\n", + LOG(0, s, t, "Error writing %d bytes to TUN device: %s (tunfd=%d, p=%p)\n", l, strerror(errno), tunfd, p); + + return; } if (session[s].snoop_ip && session[s].snoop_port) { // Snooping this session - snoop_send_packet(p, l, session[s].snoop_ip, session[s].snoop_port); + snoop_send_packet(p + 4, l - 4, session[s].snoop_ip, session[s].snoop_port); } session[s].cin += l - 4;