rename sess_count to sess_local, fiddle with packet_limit log output
This commit is contained in:
parent
5d174e0df9
commit
e55b28c107
4 changed files with 34 additions and 32 deletions
20
cluster.c
20
cluster.c
|
|
@ -1,6 +1,6 @@
|
||||||
// L2TPNS Clustering Stuff
|
// L2TPNS Clustering Stuff
|
||||||
|
|
||||||
char const *cvs_id_cluster = "$Id: cluster.c,v 1.28 2004/12/22 05:30:58 bodea Exp $";
|
char const *cvs_id_cluster = "$Id: cluster.c,v 1.29 2005/01/13 07:57:35 bodea Exp $";
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
@ -406,18 +406,18 @@ void master_update_counts(void)
|
||||||
if ( walk_session_number > config->cluster_highest_sessionid)
|
if ( walk_session_number > config->cluster_highest_sessionid)
|
||||||
walk_session_number = 1;
|
walk_session_number = 1;
|
||||||
|
|
||||||
if (!sess_count[walk_session_number].cin && !sess_count[walk_session_number].cout)
|
if (!sess_local[walk_session_number].cin && !sess_local[walk_session_number].cout)
|
||||||
continue; // Unused. Skip it.
|
continue; // Unused. Skip it.
|
||||||
|
|
||||||
b[c].sid = walk_session_number;
|
b[c].sid = walk_session_number;
|
||||||
b[c].in = sess_count[walk_session_number].cin;
|
b[c].in = sess_local[walk_session_number].cin;
|
||||||
b[c].out = sess_count[walk_session_number].cout;
|
b[c].out = sess_local[walk_session_number].cout;
|
||||||
|
|
||||||
if (++c > MAX_B_RECS) // Send a max of 400 elements in a packet.
|
if (++c > MAX_B_RECS) // Send a max of 400 elements in a packet.
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Reset counters.
|
// Reset counters.
|
||||||
sess_count[walk_session_number].cin = sess_count[walk_session_number].cout = 0;
|
sess_local[walk_session_number].cin = sess_local[walk_session_number].cout = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!c) // Didn't find any that changes. Get out of here!
|
if (!c) // Didn't find any that changes. Get out of here!
|
||||||
|
|
@ -581,12 +581,12 @@ void cluster_check_master(void)
|
||||||
session[i].last_packet = time_now;
|
session[i].last_packet = time_now;
|
||||||
|
|
||||||
// Accumulate un-sent byte counters.
|
// Accumulate un-sent byte counters.
|
||||||
session[i].cin += sess_count[i].cin;
|
session[i].cin += sess_local[i].cin;
|
||||||
session[i].cout += sess_count[i].cout;
|
session[i].cout += sess_local[i].cout;
|
||||||
session[i].total_cin += sess_count[i].cin;
|
session[i].total_cin += sess_local[i].cin;
|
||||||
session[i].total_cout += sess_count[i].cout;
|
session[i].total_cout += sess_local[i].cout;
|
||||||
|
|
||||||
sess_count[i].cin = sess_count[i].cout = 0;
|
sess_local[i].cin = sess_local[i].cout = 0;
|
||||||
|
|
||||||
session[i].radius = 0; // Reset authentication as the radius blocks aren't up to date.
|
session[i].radius = 0; // Reset authentication as the radius blocks aren't up to date.
|
||||||
|
|
||||||
|
|
|
||||||
34
l2tpns.c
34
l2tpns.c
|
|
@ -4,7 +4,7 @@
|
||||||
// Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
|
// Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
|
||||||
// vim: sw=8 ts=8
|
// vim: sw=8 ts=8
|
||||||
|
|
||||||
char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.77 2005/01/10 07:45:03 bodea Exp $";
|
char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.78 2005/01/13 07:57:36 bodea Exp $";
|
||||||
|
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
@ -151,7 +151,7 @@ static sessionidt shut_acct_n = 0;
|
||||||
|
|
||||||
tunnelt *tunnel = NULL; // Array of tunnel structures.
|
tunnelt *tunnel = NULL; // Array of tunnel structures.
|
||||||
sessiont *session = NULL; // Array of session structures.
|
sessiont *session = NULL; // Array of session structures.
|
||||||
sessioncountt *sess_count = NULL; // Array of partial per-session traffic counters.
|
sessionlocalt *sess_local = NULL; // Array of local per-session counters.
|
||||||
radiust *radius = NULL; // Array of radius structures.
|
radiust *radius = NULL; // Array of radius structures.
|
||||||
ippoolt *ip_address_pool = NULL; // Array of dynamic IP addresses.
|
ippoolt *ip_address_pool = NULL; // Array of dynamic IP addresses.
|
||||||
ip_filtert *ip_filters = NULL; // Array of named filters.
|
ip_filtert *ip_filters = NULL; // Array of named filters.
|
||||||
|
|
@ -832,7 +832,7 @@ static void processipout(uint8_t * buf, int len)
|
||||||
// DoS prevention: enforce a maximum number of packets per 0.1s for a session
|
// DoS prevention: enforce a maximum number of packets per 0.1s for a session
|
||||||
if (config->max_packets > 0)
|
if (config->max_packets > 0)
|
||||||
{
|
{
|
||||||
if (sess_count[s].last_packet_out == TIME)
|
if (sess_local[s].last_packet_out == TIME)
|
||||||
{
|
{
|
||||||
int max = config->max_packets;
|
int max = config->max_packets;
|
||||||
|
|
||||||
|
|
@ -845,24 +845,26 @@ static void processipout(uint8_t * buf, int len)
|
||||||
if (!config->cluster_iam_master && sp->throttle_out && sp->throttle_out < max)
|
if (!config->cluster_iam_master && sp->throttle_out && sp->throttle_out < max)
|
||||||
max = sp->throttle_out;
|
max = sp->throttle_out;
|
||||||
|
|
||||||
if (++sess_count[s].packets_out > max)
|
if (++sess_local[s].packets_out > max)
|
||||||
{
|
{
|
||||||
sess_count[s].packets_dropped++;
|
sess_local[s].packets_dropped++;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (sess_count[s].packets_dropped)
|
if (sess_local[s].packets_dropped)
|
||||||
{
|
{
|
||||||
INC_STAT(tun_rx_dropped, sess_count[s].packets_dropped);
|
INC_STAT(tun_rx_dropped, sess_local[s].packets_dropped);
|
||||||
LOG(2, s, t, "Possible DoS attack on %s (%s); dropped %u packets.\n",
|
LOG(3, s, t, "Dropped %u/%u packets to %s for %suser %s\n",
|
||||||
fmtaddr(ip, 0), sp->user, sess_count[s].packets_dropped);
|
sess_local[s].packets_out, sess_local[s].packets_dropped,
|
||||||
|
fmtaddr(ip, 0), sp->throttle_out ? "throttled " : "",
|
||||||
|
sp->user);
|
||||||
}
|
}
|
||||||
|
|
||||||
sess_count[s].last_packet_out = TIME;
|
sess_local[s].last_packet_out = TIME;
|
||||||
sess_count[s].packets_out = 1;
|
sess_local[s].packets_out = 1;
|
||||||
sess_count[s].packets_dropped = 0;
|
sess_local[s].packets_dropped = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -903,7 +905,7 @@ static void processipout(uint8_t * buf, int len)
|
||||||
sp->total_cout += len; // byte count
|
sp->total_cout += len; // byte count
|
||||||
sp->pout++;
|
sp->pout++;
|
||||||
udp_tx += len;
|
udp_tx += len;
|
||||||
sess_count[s].cout += len; // To send to master..
|
sess_local[s].cout += len; // To send to master..
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -953,7 +955,7 @@ static void send_ipout(sessionidt s, uint8_t *buf, int len)
|
||||||
sp->total_cout += len; // byte count
|
sp->total_cout += len; // byte count
|
||||||
sp->pout++;
|
sp->pout++;
|
||||||
udp_tx += len;
|
udp_tx += len;
|
||||||
sess_count[s].cout += len; // To send to master..
|
sess_local[s].cout += len; // To send to master..
|
||||||
}
|
}
|
||||||
|
|
||||||
// add an AVP (16 bit)
|
// add an AVP (16 bit)
|
||||||
|
|
@ -2729,9 +2731,9 @@ static void initdata(int optdebug, char *optconfig)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(sess_count = shared_malloc(sizeof(sessioncountt) * MAXSESSION)))
|
if (!(sess_local = shared_malloc(sizeof(sessionlocalt) * MAXSESSION)))
|
||||||
{
|
{
|
||||||
LOG(0, 0, 0, "Error doing malloc for sessions_count: %s\n", strerror(errno));
|
LOG(0, 0, 0, "Error doing malloc for sess_local: %s\n", strerror(errno));
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
6
l2tpns.h
6
l2tpns.h
|
|
@ -1,5 +1,5 @@
|
||||||
// L2TPNS Global Stuff
|
// L2TPNS Global Stuff
|
||||||
// $Id: l2tpns.h,v 1.52 2005/01/10 07:17:37 bodea Exp $
|
// $Id: l2tpns.h,v 1.53 2005/01/13 07:57:39 bodea Exp $
|
||||||
|
|
||||||
#ifndef __L2TPNS_H__
|
#ifndef __L2TPNS_H__
|
||||||
#define __L2TPNS_H__
|
#define __L2TPNS_H__
|
||||||
|
|
@ -236,7 +236,7 @@ typedef struct
|
||||||
clockt last_packet_out;
|
clockt last_packet_out;
|
||||||
uint32_t packets_out;
|
uint32_t packets_out;
|
||||||
uint32_t packets_dropped;
|
uint32_t packets_dropped;
|
||||||
} sessioncountt;
|
} sessionlocalt;
|
||||||
|
|
||||||
#define SESSIONPFC 1 // PFC negotiated flags
|
#define SESSIONPFC 1 // PFC negotiated flags
|
||||||
#define SESSIONACFC 2 // ACFC negotiated flags
|
#define SESSIONACFC 2 // ACFC negotiated flags
|
||||||
|
|
@ -644,7 +644,7 @@ void host_unreachable(in_addr_t destination, uint16_t id, in_addr_t source, char
|
||||||
|
|
||||||
extern tunnelt *tunnel;
|
extern tunnelt *tunnel;
|
||||||
extern sessiont *session;
|
extern sessiont *session;
|
||||||
extern sessioncountt *sess_count;
|
extern sessionlocalt *sess_local;
|
||||||
extern ippoolt *ip_address_pool;
|
extern ippoolt *ip_address_pool;
|
||||||
#define sessionfree (session[0].next)
|
#define sessionfree (session[0].next)
|
||||||
|
|
||||||
|
|
|
||||||
6
ppp.c
6
ppp.c
|
|
@ -1,6 +1,6 @@
|
||||||
// L2TPNS PPP Stuff
|
// L2TPNS PPP Stuff
|
||||||
|
|
||||||
char const *cvs_id_ppp = "$Id: ppp.c,v 1.40 2005/01/05 13:50:30 bodea Exp $";
|
char const *cvs_id_ppp = "$Id: ppp.c,v 1.41 2005/01/13 07:57:39 bodea Exp $";
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
@ -750,7 +750,7 @@ void processipin(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l)
|
||||||
|
|
||||||
session[s].cin += l - 4;
|
session[s].cin += l - 4;
|
||||||
session[s].total_cin += l - 4;
|
session[s].total_cin += l - 4;
|
||||||
sess_count[s].cin += l - 4;
|
sess_local[s].cin += l - 4;
|
||||||
|
|
||||||
session[s].pin++;
|
session[s].pin++;
|
||||||
eth_tx += l - 4;
|
eth_tx += l - 4;
|
||||||
|
|
@ -785,7 +785,7 @@ void send_ipin(sessionidt s, uint8_t *buf, int len)
|
||||||
// Increment packet counters
|
// Increment packet counters
|
||||||
session[s].cin += len - 4;
|
session[s].cin += len - 4;
|
||||||
session[s].total_cin += len - 4;
|
session[s].total_cin += len - 4;
|
||||||
sess_count[s].cin += len - 4;
|
sess_local[s].cin += len - 4;
|
||||||
|
|
||||||
session[s].pin++;
|
session[s].pin++;
|
||||||
eth_tx += len - 4;
|
eth_tx += len - 4;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue