X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/340d76dae5734fd64a69f6cee60e4e508d2323c2..994c888b0b264d34363d1618c7671dc678772cc1:/l2tpns.h diff --git a/l2tpns.h b/l2tpns.h index bea1bc7..3e7573e 100644 --- a/l2tpns.h +++ b/l2tpns.h @@ -1,5 +1,5 @@ // L2TPNS Global Stuff -// $Id: l2tpns.h,v 1.20 2004-10-04 23:34:54 fred_nerk Exp $ +// $Id: l2tpns.h,v 1.26 2004-11-02 04:35:04 bodea Exp $ #ifndef __L2TPNS_H__ #define __L2TPNS_H__ @@ -40,26 +40,37 @@ #define MAX_LOG_LENGTH 512 // Maximum size of log message #define ECHO_TIMEOUT 60 // Time between last packet sent and LCP ECHO generation #define IDLE_TIMEOUT 240 // Time between last packet sent and LCP ECHO generation -#define BUSY_WAIT_TIMEOUT 3000 // 5 minutes in 1/10th seconds to wait for radius to cleanup on shutdown +#define BUSY_WAIT_TIME 3000 // 5 minutes in 1/10th seconds to wait for radius to cleanup on shutdown // Constants -#include "config.h" -#ifndef PLUGINDIR -#define PLUGINDIR LIBDIR // Plugins +#ifndef ETCDIR +#define ETCDIR "/etc/l2tpns" #endif -#ifndef PLUGINCONF -#define PLUGINCONF ETCDIR // Plugin config dir +#ifndef LIBDIR +#define LIBDIR "/usr/lib/l2tpns" #endif -#ifndef DATADIR -#define DATADIR "/tmp" +#ifndef STATEDIR +#define STATEDIR "/var/lib/l2tpns" +#endif + +#ifndef PLUGINDIR +#define PLUGINDIR LIBDIR // Plugins +#endif + +#ifndef PLUGINCONF +#define PLUGINCONF ETCDIR // Plugin config dir #endif #ifndef FLASHDIR #define FLASHDIR ETCDIR #endif +#ifndef DATADIR +#define DATADIR STATEDIR +#endif + #define TUNDEVICE "/dev/net/tun" #define STATEFILE DATADIR "/state.dump" // State dump file #define CONFIGFILE FLASHDIR "/startup-config" // Configuration file @@ -111,7 +122,8 @@ struct cli_session_actions { char action; ipt snoop_ip; u16 snoop_port; - int throttle; + int throttle_in; + int throttle_out; }; #define CLI_SESS_KILL 0x01 @@ -161,7 +173,8 @@ typedef struct sessions u32 total_cin; // This counter is never reset while a session is open u32 total_cout; // This counter is never reset while a session is open u32 id; // session id - u32 throttle; // non-zero if this session is throttled. + u16 throttle_in; // upstream throttle rate (kbps) + u16 throttle_out; // downstream throttle rate clockt opened; // when started clockt die; // being closed, when to finally free time_t last_packet; // Last packet from the user (used for idle timeouts) @@ -408,7 +421,9 @@ struct configt ipt default_dns1, default_dns2; - unsigned long rl_rate; + unsigned long rl_rate; // default throttle rate + int num_tbfs; // number of throttle buckets + int save_state; char accounting_dir[128]; ipt bind_address; @@ -448,7 +463,6 @@ struct configt char bgp_peer[2][64]; u16 bgp_peer_as[2]; #endif - char hostname[256]; // our hostname - set to gethostname() by default }; struct config_descriptt @@ -485,17 +499,6 @@ void radiusretry(u16 r); u16 radiusnew(sessionidt s); void radiusclear(u16 r, sessionidt s); -// throttle.c -int throttle_session(sessionidt s, int throttle); - - -// rl.c -void init_rl(); -u16 rl_create_tbf(); -u16 rl_get_tbf(); -void rl_done_tbf(u16 t); -void rl_destroy_tbf(u16 t); - // l2tpns.c clockt now(void); @@ -503,7 +506,7 @@ clockt backoff(u8 try); void routeset(sessionidt, ipt ip, ipt mask, ipt gw, u8 add); void inittun(void); void initudp(void); -void initdata(void); +void initdata(int optdebug, char *optconfig); void initippool(); sessionidt sessionbyip(ipt ip); sessionidt sessionbyuser(char *username); @@ -547,7 +550,7 @@ int sessionsetup(tunnelidt t, sessionidt s); int cluster_send_session(int s); int cluster_send_tunnel(int t); int cluster_send_goodbye(); -void init_cli(); +void init_cli(char *hostname); void cli_do_file(FILE *fh); void cli_do(int sockfd); int cli_arg_help(struct cli_def *cli, int cr_ok, char *entry, ...); @@ -564,7 +567,7 @@ void host_unreachable(ipt destination, u16 id, ipt source, char *packet, int pac void fix_address_pool(int sid); void rebuild_address_pool(void); void send_ipin(sessionidt s, u8 * buf, int len); -int throttle_session(sessionidt s, int throttle); +void throttle_session(sessionidt s, int rate_in, int rate_out); int load_session(sessionidt, sessiont *); void become_master(void); // We're the master; kick off any required master initializations. extern tunnelt *tunnel; @@ -596,6 +599,7 @@ extern u32 last_id; extern struct Tstats *_statistics; extern ipt my_address; extern int tun_write(u8 *data, int size); +extern int clifd; #define TIME (config->current_time)