Cherry-picks the code from 0.1.x branch
[rahunas] / src / rahunasd.h
1 /**
2  * RahuNASd header 
3  * Author: Neutron Soutmun <neo.neutron@gmail.com>
4  * Date:   2008-08-07
5  */
6
7 #ifndef __RAHUNASD_H
8 #define __RAHUNASD_H
9
10 #include <stdio.h>
11 #include <sys/socket.h>
12 #include <netinet/in.h>
13 #include <arpa/inet.h>
14 #include <pthread.h>
15 #include <time.h>
16 #include <linux/if_ether.h>
17 #include <errno.h>
18
19 #include "rh-config.h"
20 #include "rh-utils.h"
21
22 #define MAX_MEMBERS 0x00FFFF
23
24 #define DEFAULT_MAC "00:00:00:00:00:00"
25
26 extern const char *termstring; 
27 extern RHMainServer rh_main_server_instance;
28 extern pthread_mutex_t RHMtxLock;
29
30 enum RH_LOG {
31   RH_LOG_DEBUG,
32   RH_LOG_NORMAL,
33   RH_LOG_ERROR
34 };
35
36 #define RH_LOG_LEVEL RH_LOG_NORMAL
37
38 #ifdef RH_DEBUG
39 #define DP(format, args...) \
40   do {  \
41     fprintf(stderr, "%s - %s: %s (DBG): ", timemsg(), __FILE__, __FUNCTION__); \
42     fprintf(stderr, format "\n", ## args); \
43   } while (0)
44 #else
45 #define DP(format, args...)
46 #endif
47
48 struct rahunas_map {
49   GList *members;
50   in_addr_t first_ip;
51   in_addr_t last_ip;
52   unsigned int size;
53 };
54
55 struct rahunas_member {
56   uint32_t id; 
57   unsigned short expired;
58   time_t session_start;
59   time_t session_timeout;
60   long bandwidth_max_down;
61   long bandwidth_max_up;
62   unsigned short bandwidth_slot_id;
63   char *serviceclass_name;
64   const char *serviceclass_description;
65   uint32_t serviceclass_slot_id;
66   char *mapping_ip;
67   char *username;
68   char *session_id;
69   unsigned char mac_address[ETH_ALEN];
70 };
71
72 void rh_free_member(struct rahunas_member *member);
73
74 static const char *timemsg()
75 {
76   static char tmsg[32] = "";
77   char tfmt[] = "%b %e %T";
78   time_t t;
79
80   t = time(NULL);
81   strftime(tmsg, sizeof tmsg, tfmt, localtime(&t));
82   return tmsg; 
83 }
84
85 #endif // __RAHUNASD_H