X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/12f16f60c19b470a3a4e5ee145485095dc674dee..0247ea133b707931ce7e33516332dbcfcf6dadb7:/l2tpns.h diff --git a/l2tpns.h b/l2tpns.h index eb575a3..a0026ae 100644 --- a/l2tpns.h +++ b/l2tpns.h @@ -1,5 +1,5 @@ // L2TPNS Global Stuff -// $Id: l2tpns.h,v 1.38 2004/11/27 05:19:53 bodea Exp $ +// $Id: l2tpns.h,v 1.45 2004/12/03 06:40:02 bodea Exp $ #ifndef __L2TPNS_H__ #define __L2TPNS_H__ @@ -15,7 +15,7 @@ #include #include -#define VERSION "2.0.9" +#define VERSION "2.0.13" // Limits #define MAXTUNNEL 500 // could be up to 65535 @@ -109,6 +109,7 @@ enum // Types typedef unsigned short u16; typedef unsigned int u32; +typedef unsigned long long u64; typedef unsigned char u8; typedef u32 ipt; typedef u16 portt; @@ -124,6 +125,8 @@ struct cli_session_actions { u16 snoop_port; int throttle_in; int throttle_out; + int filter_in; + int filter_out; }; #define CLI_SESS_KILL 0x01 @@ -131,6 +134,8 @@ struct cli_session_actions { #define CLI_SESS_NOSNOOP 0x04 #define CLI_SESS_THROTTLE 0x08 #define CLI_SESS_NOTHROTTLE 0x10 +#define CLI_SESS_FILTER 0x20 +#define CLI_SESS_NOFILTER 0x40 struct cli_tunnel_actions { char action; @@ -273,7 +278,6 @@ struct Tringbuffer char level; sessionidt session; tunnelidt tunnel; - ipt address; char message[MAX_LOG_LENGTH]; } buffer[RINGBUFFER_SIZE]; int head; @@ -462,6 +466,7 @@ typedef struct int cluster_hb_interval; // How often to send a heartbeat. int cluster_hb_timeout; // How many missed heartbeats trigger an election. + u64 cluster_table_version; // # state changes processed by cluster #ifdef BGP #define BGP_NUM_PEERS 2 @@ -493,8 +498,8 @@ typedef struct #define FILTER_PORT_OP_GT 3 #define FILTER_PORT_OP_LT 4 #define FILTER_PORT_OP_RANGE 5 - portt port; - portt port2; // for range + portt port; // port (host byte order) + portt port2; // range } ip_filter_portt; typedef struct @@ -502,18 +507,21 @@ typedef struct int action; // permit/deny #define FILTER_ACTION_DENY 1 #define FILTER_ACTION_PERMIT 2 - int proto; // protocol: IPPROTO_* (netinet/in.h) - ipt src_ip; // source ip + u8 proto; // protocol: IPPROTO_* (netinet/in.h) + ipt src_ip; // source ip (network byte order) ipt src_wild; ip_filter_portt src_ports; ipt dst_ip; // dest ip ipt dst_wild; ip_filter_portt dst_ports; - u8 tcp_flag_op; // match type: any, all -#define FILTER_FLAG_OP_ANY 0 -#define FILTER_FLAG_OP_ALL 1 + u8 frag; // apply to non-initial fragments + u8 tcp_flag_op; // match type: any, all, established +#define FILTER_FLAG_OP_ANY 1 +#define FILTER_FLAG_OP_ALL 2 +#define FILTER_FLAG_OP_EST 3 u8 tcp_sflags; // flags set u8 tcp_cflags; // flags clear + u32 counter; // match count } ip_filter_rulet; #define TCP_FLAG_FIN 0x01 @@ -569,16 +577,17 @@ void tunnelsend(u8 * buf, u16 l, tunnelidt t); void sendipcp(tunnelidt t, sessionidt s); void processudp(u8 * buf, int len, struct sockaddr_in *addr); void snoop_send_packet(char *packet, u16 size, ipt destination, u16 port); +int ip_filter(u8 *buf, int len, u8 filter); 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); #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(D, s, t, f, ...) ({ if (D <= config->debug) _log(D, 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(int level, sessionidt s, tunnelidt t, const char *format, ...) __attribute__((format (printf, 4, 5))); void _log_hex(int level, const char *title, const char *data, int maxsize); int sessionsetup(tunnelidt t, sessionidt s); @@ -611,12 +620,12 @@ if (count++ < max) { \ void *array[20]; \ char **strings; \ int size, i; \ - LOG(0, 0, 0, t, "Backtrace follows"); \ + LOG(0, 0, t, "Backtrace follows"); \ size = backtrace(array, 10); \ strings = backtrace_symbols(array, size); \ if (strings) for (i = 0; i < size; i++) \ { \ - LOG(0, 0, 0, t, "%s\n", strings[i]); \ + LOG(0, 0, t, "%s\n", strings[i]); \ } \ free(strings); \ }