X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/4ad75362584e275243a7b70bc64f1762ebc552d9..99b207fddf711ac088ac59186ed7cd361b5fb9ed:/l2tpns.h diff --git a/l2tpns.h b/l2tpns.h index ea13670..2cf1797 100644 --- a/l2tpns.h +++ b/l2tpns.h @@ -1,5 +1,5 @@ // L2TPNS Global Stuff -// $Id: l2tpns.h,v 1.10 2004-07-07 09:09:53 bodea Exp $ +// $Id: l2tpns.h,v 1.13 2004-07-26 00:20:41 fred_nerk Exp $ #ifndef __L2TPNS_H__ #define __L2TPNS_H__ @@ -15,7 +15,7 @@ #include #include -#define VERSION "2.0.0" +#define VERSION "2.0.1" // Limits #define MAXTUNNEL 500 // could be up to 65535 @@ -30,7 +30,7 @@ #define T_FREE (0) // A tunnel ID that won't ever be used. Mark session as free. #define MAXCONTROL 1000 // max length control message we ever send... -#define MAXETHER (1500+18) // max packet we try sending to tap +#define MAXETHER (1500+18) // max packet we try sending to tun #define MAXTEL 96 // telephone number #define MAXPLUGINS 20 // maximum number of plugins to load #define MAXRADSERVER 10 // max radius servers @@ -59,7 +59,7 @@ #define FLASHDIR ETCDIR #endif -#define TAPDEVICE "/dev/net/tun" +#define TUNDEVICE "/dev/net/tun" #define STATEFILE DATADIR "/state.dump" // State dump file #define CONFIGFILE FLASHDIR "/startup-config" // Configuration file #define CLIUSERS FLASHDIR "/users" // CLI Users file @@ -67,7 +67,6 @@ #define ACCT_TIME 3000 // 5 minute accounting interval #define L2TPPORT 1701 // L2TP port #define RADPORT 1645 // old radius port... -#define RADAPORT 1646 // old radius accounting port #define PKTARP 0x0806 // ARP packet type #define PKTIP 0x0800 // IP packet type #define PSEUDOMAC 0x0200 // pseudo MAC prefix (local significant MAC) @@ -105,6 +104,26 @@ typedef u16 tunnelidt; typedef u32 clockt; typedef u8 hasht[16]; +// CLI actions +struct cli_session_actions { + char action; + ipt snoop_ip; + u16 snoop_port; + int throttle; +}; + +#define CLI_SESS_KILL 0x01 +#define CLI_SESS_SNOOP 0x02 +#define CLI_SESS_NOSNOOP 0x04 +#define CLI_SESS_THROTTLE 0x08 +#define CLI_SESS_NOTHROTTLE 0x10 + +struct cli_tunnel_actions { + char action; +}; + +#define CLI_TUN_KILL 0x01 + // dump header: update number if internal format changes #define DUMP_MAGIC "L2TPNS#" VERSION "#" @@ -270,12 +289,12 @@ struct Tstats time_t start_time; time_t last_reset; - unsigned long tap_rx_packets; - unsigned long tap_tx_packets; - unsigned long tap_rx_bytes; - unsigned long tap_tx_bytes; - unsigned long tap_rx_errors; - unsigned long tap_tx_errors; + unsigned long tun_rx_packets; + unsigned long tun_tx_packets; + unsigned long tun_rx_bytes; + unsigned long tun_tx_bytes; + unsigned long tun_rx_errors; + unsigned long tun_tx_errors; unsigned long tunnel_rx_packets; unsigned long tunnel_tx_packets; @@ -287,11 +306,7 @@ struct Tstats unsigned long tunnel_retries; unsigned long radius_retries; - unsigned long arp_errors; - unsigned long arp_replies; - unsigned long arp_discarded; unsigned long arp_sent; - unsigned long arp_recv; unsigned long packets_snooped; @@ -310,8 +325,7 @@ struct Tstats unsigned long c_forwarded; unsigned long recv_forward; #ifdef STATISTICS - unsigned long call_processtap; - unsigned long call_processarp; + unsigned long call_processtun; unsigned long call_processipout; unsigned long call_processudp; unsigned long call_sessionbyip; @@ -374,13 +388,14 @@ struct configt int cleanup_interval; // interval between regular cleanups (in seconds) int multi_read_count; // amount of packets to read per fd in processing loop - char tapdevice[10]; // tap device name + char tundevice[10]; // tun device name char log_filename[128]; char l2tpsecret[64]; char radiussecret[64]; int radius_accounting; ipt radiusserver[MAXRADSERVER]; // radius servers + u16 radiusport[MAXRADSERVER]; // radius base ports u8 numradiusservers; // radius server count short num_radfds; // Number of radius filehandles allocated @@ -398,9 +413,9 @@ struct configt char old_plugins[64][MAXPLUGINS]; int next_tbf; // Next HTB id available to use - int scheduler_fifo; // If 1, will force scheduler to use SCHED_FIFO. - // Don't use this unless you have a dual processor machine! - int icmp_rate; // Max number of ICMP unreachable per second to send + int scheduler_fifo; // If the system has multiple CPUs, use FIFO scheduling policy for this process. + int lock_pages; // Lock pages into memory. + int icmp_rate; // Max number of ICMP unreachable per second to send> u32 cluster_address; // Multicast address of cluster. // Send to this address to have everyone hear. @@ -478,7 +493,7 @@ void rl_destroy_tbf(u16 t); clockt now(void); clockt backoff(u8 try); void routeset(sessionidt, ipt ip, ipt mask, ipt gw, u8 add); -void inittap(void); +void inittun(void); void initudp(void); void initdata(void); void initippool(); @@ -502,7 +517,7 @@ void sendipcp(tunnelidt t, sessionidt s); void processipout(u8 * buf, int len); void processarp(u8 * buf, int len); void processudp(u8 * buf, int len, struct sockaddr_in *addr); -void processtap(u8 * buf, int len); +void processtun(u8 * buf, int len); void processcontrol(u8 * buf, int len, struct sockaddr_in *addr); int assign_ip_address(sessionidt s); void free_ip_address(sessionidt s);