- set hostname in CLI prompt
[l2tpns.git] / l2tpns.h
index fe19bc6..da49b25 100644 (file)
--- a/l2tpns.h
+++ b/l2tpns.h
@@ -1,5 +1,5 @@
 // L2TPNS Global Stuff
-// $Id: l2tpns.h,v 1.7 2004/06/23 03:52:24 fred_nerk Exp $
+// $Id: l2tpns.h,v 1.10 2004/07/07 09:09:53 bodea Exp $
 
 #ifndef __L2TPNS_H__
 #define __L2TPNS_H__
@@ -14,7 +14,6 @@
 #include <arpa/inet.h>
 #include <sys/types.h>
 #include <libcli.h>
-#include "config.h"
 
 #define VERSION        "2.0.0"
 
@@ -43,6 +42,7 @@
 #define IDLE_TIMEOUT   240             // Time between last packet sent and LCP ECHO generation
 
 // Constants
+#include "config.h"
 #ifndef PLUGINDIR
 #define PLUGINDIR      LIBDIR                  // Plugins
 #endif
@@ -60,7 +60,6 @@
 #endif
 
 #define TAPDEVICE      "/dev/net/tun"
-#define        UDP             17
 #define STATEFILE      DATADIR "/state.dump"           // State dump file
 #define CONFIGFILE     FLASHDIR "/startup-config"      // Configuration file
 #define CLIUSERS       FLASHDIR "/users"               // CLI Users file
@@ -125,7 +124,6 @@ typedef struct controls         // control message
 }
 controlt;
 
-// 336 bytes per session
 typedef struct sessions
 {
        sessionidt next;                // next session in linked list
@@ -311,7 +309,7 @@ struct Tstats
 
     unsigned long      c_forwarded;
     unsigned long      recv_forward;
-#ifdef STAT_CALLS
+#ifdef STATISTICS
     unsigned long      call_processtap;
     unsigned long      call_processarp;
     unsigned long      call_processipout;
@@ -343,11 +341,19 @@ struct Tstats
 };
 
 #ifdef STATISTICS
-#define STAT(x)                _statistics->x++
-#define INC_STAT(x,y)  _statistics->x += y
-#define GET_STAT(x)    _statistics->x
-#define SET_STAT(x, y) _statistics->x = y
+
+#ifdef STAT_CALLS
+#define CSTAT(x)       STAT(x)
 #else
+#define CSTAT(x)
+#endif
+
+#define STAT(x)                (_statistics->x++)
+#define INC_STAT(x,y)  (_statistics->x += (y))
+#define GET_STAT(x)    (_statistics->x)
+#define SET_STAT(x, y) (_statistics->x = (y))
+#else
+#define CSTAT(x)
 #define STAT(x)
 #define INC_STAT(x,y)
 #define GET_STAT(x)    0
@@ -359,7 +365,9 @@ struct configt
        int             debug;                          // debugging level
        time_t          start_time;                     // time when l2tpns was started
        char            bandwidth[256];                 // current bandwidth
-       clockt          current_time;
+       clockt          current_time;                   // 1/10ths of a second since the process started.
+                                                       // means that we can only run a given process
+                                                       // for 13 years without re-starting!
 
        char            config_file[128];
        int             reload_config;                  // flag to re-read config (set by cli)
@@ -394,12 +402,12 @@ struct configt
                                                        // Don't use this unless you have a dual processor machine!
        int             icmp_rate;                      // Max number of ICMP unreachable per second to send
 
-       u32     cluster_address;                // Multicast address of cluster.
+       u32             cluster_address;                // Multicast address of cluster.
                                                        // Send to this address to have everyone hear.
        char            cluster_interface[64];          // Which interface to listen for multicast on.
        int             cluster_iam_master;             // Are we the cluster master???
        int             cluster_iam_uptodate;           // Set if we've got a full set of state from the master.
-       u32     cluster_master_address;         // The network address of the cluster master.
+       u32             cluster_master_address;         // The network address of the cluster master.
                                                        // Zero if i am the cluster master.
        int             cluster_seq_number;             // Sequence number of the next heartbeat we'll send out
                                                        // (or the seq number we're next expecting if we're a slave).
@@ -410,6 +418,9 @@ struct configt
        clockt          cluster_last_hb;                // Last time we saw a heartbeat from the master.
        int             cluster_num_changes;            // Number of changes queued.
 
+       int             cluster_hb_interval;            // How often to send a heartbeat.
+       int             cluster_hb_timeout;             // How many missed heartbeats trigger an election.
+
 #ifdef BGP
        u16             as_number;
        char            bgp_peer[2][64];
@@ -513,9 +524,10 @@ 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, ...);
 #ifdef RINGBUFFER
 void ringbuffer_dump(FILE *stream);
 #endif
@@ -561,4 +573,27 @@ extern u32 last_sid;
 extern struct Tstats *_statistics;
 extern ipt my_address;
 extern int tun_write(u8 *data, int size);
+
+
+#define TIME (config->current_time)
+
+// macros for handling help in cli commands
+#define CLI_HELP_REQUESTED     (argc > 0 && argv[argc-1][strlen(argv[argc-1])-1] == '?')
+#define CLI_HELP_NO_ARGS       (argc > 1 || argv[0][1]) ? CLI_OK : cli_arg_help(cli, 1, NULL)
+
+// CVS identifiers (for "show version file")
+extern char const *cvs_id_arp;
+extern char const *cvs_id_cli;
+extern char const *cvs_id_cluster;
+extern char const *cvs_id_constants;
+extern char const *cvs_id_control;
+extern char const *cvs_id_icmp;
+extern char const *cvs_id_l2tpns;
+extern char const *cvs_id_ll;
+extern char const *cvs_id_md5;
+extern char const *cvs_id_ppp;
+extern char const *cvs_id_radius;
+extern char const *cvs_id_tbf;
+extern char const *cvs_id_util;
+
 #endif /* __L2TPNS_H__ */