X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/455e310268d21eb9487b3487efbbe24946a0c5de..5acef8bb78a02ed1b65b519971236ebb7019b31a:/l2tpns.h diff --git a/l2tpns.h b/l2tpns.h index 59e328b..7df1cc6 100644 --- a/l2tpns.h +++ b/l2tpns.h @@ -1,5 +1,5 @@ // L2TPNS Global Stuff -// $Id: l2tpns.h,v 1.25 2004/10/30 07:17:41 bodea Exp $ +// $Id: l2tpns.h,v 1.28 2004/11/03 13:23:59 bodea Exp $ #ifndef __L2TPNS_H__ #define __L2TPNS_H__ @@ -15,7 +15,7 @@ #include #include -#define VERSION "2.0.2" +#define VERSION "2.0.3" // Limits #define MAXTUNNEL 500 // could be up to 65535 @@ -122,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 @@ -172,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) @@ -419,7 +421,7 @@ struct configt ipt default_dns1, default_dns2; - unsigned long rl_rate; // throttle rate + unsigned long rl_rate; // default throttle rate int num_tbfs; // number of throttle buckets int save_state; @@ -537,12 +539,14 @@ int cmd_show_ipcache(struct cli_def *cli, char *command, char **argv, int argc); int cmd_show_hist_idle(struct cli_def *cli, char *command, char **argv, int argc); int cmd_show_hist_open(struct cli_def *cli, char *command, char **argv, int argc); -#define log _log -#ifndef log_hex -#define log_hex(a,b,c,d) do{if (a <= config->debug) _log_hex(a,0,0,0,b,c,d);}while (0) -#endif +#undef log +#undef log_hex +#define log(D, a, s, t, f, ...) ({ if (D <= config->debug) _log(D, a, s, t, f, ## __VA_ARGS__); }) +#define log_hex(D, t, d, s) ({ if (D <= config->debug) _log_hex(D, t, d, s); }) + void _log(int level, ipt address, sessionidt s, tunnelidt t, const char *format, ...) __attribute__((format (printf, 5, 6))); -void _log_hex(int level, ipt address, sessionidt s, tunnelidt t, const char *title, const char *data, int maxsize); +void _log_hex(int level, const char *title, const char *data, int maxsize); + void build_chap_response(char *challenge, u8 id, u16 challenge_length, char **challenge_response); int sessionsetup(tunnelidt t, sessionidt s); int cluster_send_session(int s); @@ -565,7 +569,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; @@ -597,6 +601,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)