X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/4f5ea4fbe0a32b7623cdc815a5fb99c481d14764..bde7904f922ed78582ef6289c3896978b51ce7cf:/cluster.h?ds=sidebyside

diff --git a/cluster.h b/cluster.h
index 20e1d75..4fe7ad0 100644
--- a/cluster.h
+++ b/cluster.h
@@ -1,5 +1,5 @@
 // L2TPNS Clustering Stuff
-// $Id: cluster.h,v 1.7 2004-11-16 07:54:32 bodea Exp $
+// $Id: cluster.h,v 1.14 2005-07-31 10:04:10 bodea Exp $
 
 #ifndef __CLUSTER_H__
 #define __CLUSTER_H__
@@ -14,13 +14,15 @@
 #define C_LASTSEEN		7	// Tell master the last heartbeat that I handled.
 #define C_KILL			8	// Tell a slave to die.
 #define C_FORWARD		9	// Forwarded packet..
-#define C_BYTES                 10      // Update byte counters.
+#define C_BYTES			10	// Update byte counters.
 #define C_THROTTLE		11	// A packet for the master to throttle. (The TBF tells direction).
 #define C_CSESSION		12	// Compressed session structure.
 #define C_CTUNNEL		13	// Compressed tunnel structure.
 #define C_GARDEN		14	// Gardened packet
+#define C_MASTER		15	// Tell a slave the address of the master.
+#define C_FORWARD_DAE		16	// A DAE packet for the master to handle
 
-#define HB_VERSION		3	// Protocol version number..
+#define HB_VERSION		5	// Protocol version number..
 #define HB_MAX_SEQ		(1<<30)	// Maximum sequence number. (MUST BE A POWER OF 2!)
 #define HB_HISTORY_SIZE		64	// How many old heartbeats we remember?? (Must be a factor of HB_MAX_SEQ)
 
@@ -34,44 +36,49 @@
 #define DEFAULT_MCAST_INTERFACE	"eth0"
 
 typedef struct {
-	u32	version;	// protocol version.
-	u32	seq;		// Sequence number for this heatbeat.
-	u32	basetime;	// What time I started
-	u32	clusterid;	// Id for this cluster?
+	uint32_t version;	// protocol version.
+	uint32_t seq;		// Sequence number for this heatbeat.
+	uint32_t basetime;	// What time I started
+	uint32_t clusterid;	// Id for this cluster?
 
-	u32	highsession;	// Id of the highest in-use session.
-	u32	freesession;	// Id of the first free session.
-	u32	hightunnel;	// Id of the highest used tunnel.
-	u32	size_sess;	// Size of the session structure.
+	uint32_t highsession;	// Id of the highest in-use session.
+	uint32_t freesession;	// Id of the first free session.
+	uint32_t hightunnel;	// Id of the highest used tunnel.
+	uint32_t size_sess;	// Size of the session structure.
 
-	u32	size_tunn;	// size of the tunnel structure.
-	u32	interval;	// ping/heartbeat interval (if changed)
-	u32	timeout;	// heartbeat timeout (if changed)
+	uint32_t size_tunn;	// size of the tunnel structure.
+	uint32_t interval;	// ping/heartbeat interval
+	uint32_t timeout;	// heartbeat timeout
 
-	char reserved[128 - 11*sizeof(u32)];	// Pad out to 128 bytes.
+	uint64_t table_version;	// # state changes processed by cluster
+
+	char reserved[128 - 13*sizeof(uint32_t)];	// Pad out to 128 bytes.
 } heartt;
 
 typedef struct {		/* Used to update byte counters on the */
 				/* master. */
-	u32        sid;
-	u32        in;
-	u32        out;
+	uint32_t sid;
+	uint32_t pin;
+	uint32_t pout;
+	uint32_t cin;
+	uint32_t cout;
 } bytest;
 
 typedef struct {
-	u32	addr;		//
-	u32	ver;		// version of structure.
-	u32	undef;		// Number of undefined structures. 0 if up-to-date.
-	u32	basetime;	// start time of this peer.
+	in_addr_t addr;		// peer address
+	uint32_t ver;		// version of structure.
+	uint32_t undef;		// Number of undefined structures. 0 if up-to-date.
+	uint32_t basetime;	// start time of this peer.
 } pingt;
 
 int cluster_init(void);
-int processcluster(char *buf, int size, u32 addr);
+int processcluster(uint8_t *buf, int size, in_addr_t addr);
 int cluster_send_session(int sid);
 int cluster_send_tunnel(int tid);
-int master_forward_packet(char *data, int size, u32 addr, int port);
-int master_throttle_packet(int tid, char *data, int size);
-int master_garden_packet(sessionidt s, char *data, int size);
+int master_forward_packet(uint8_t *data, int size, in_addr_t addr, int port);
+int master_forward_dae_packet(uint8_t *data, int size, in_addr_t addr, int port);
+int master_throttle_packet(int tid, uint8_t *data, int size);
+int master_garden_packet(sessionidt s, uint8_t *data, int size);
 void master_update_counts(void);
 void cluster_send_ping(time_t basetime);
 void cluster_heartbeat(void);