X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/08360e49b4f9d5a7e9d85e673d1f5014530e006d..7a42b7193b4020cbe12f6e602c5d1de3cd850bef:/ppp.c?ds=sidebyside diff --git a/ppp.c b/ppp.c index cdd8a94..7e33528 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.44 2005-02-14 06:58:39 bodea Exp $"; #include #include @@ -60,13 +60,18 @@ void processpap(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l) { uint8_t *b = p; b += 4; + user[0] = pass[0] = 0; if (*b && *b < sizeof(user)) + { memcpy(user, b + 1, *b); - user[*b] = 0; - b += 1 + *b; - if (*b && *b < sizeof(pass)) - memcpy(pass, b + 1, *b); - pass[*b] = 0; + user[*b] = 0; + b += 1 + *b; + if (*b && *b < sizeof(pass)) + { + memcpy(pass, b + 1, *b); + pass[*b] = 0; + } + } LOG(3, s, t, "PAP login %s/%s\n", user, pass); } if (session[s].ip || !session[s].radius) @@ -852,15 +857,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 +945,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 +955,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 +966,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;