78f03eb32a4472b4fe9fc47ae59c3c667c325d25
[rahunas] / src / rh-task.h
1 /**
2  * RahuNAS task header
3  * Author: Neutron Soutmun <neo.neutron@gmail.com>
4  * Date:   2008-09-05
5  */
6 #ifndef __RH_TASK_H
7 #define __RH_TASK_H
8
9 #include "rahunasd.h"
10 #include <glib.h>
11
12 #define RH_TASK_MAXNAMELEN 64
13
14 struct task_req {
15   uint32_t id;
16   int vserver_id;
17   const char *username;
18   const char *session_id;
19   unsigned char mac_address[ETH_ALEN];
20   time_t session_start;
21   time_t session_timeout;
22   unsigned short bandwidth_slot_id; 
23   unsigned long bandwidth_max_down;
24   unsigned long bandwidth_max_up;
25   unsigned short req_opt;
26 };
27
28 struct task {
29
30   char taskname[RH_TASK_MAXNAMELEN];
31   unsigned int taskprio;
32
33   /* Start service task */
34   int (*startservice) (void);
35
36   /* Stop service task */
37   int (*stopservice) (void);
38
39   /* Initialize */
40   void (*init) (struct vserver *vs);
41
42   /* Cleanup */
43   void (*cleanup) (struct vserver *vs);
44
45   /* Start session task */
46   int (*startsess) (struct vserver *vs, struct task_req *req);
47
48   /* Stop session task */
49   int (*stopsess) (struct vserver *vs, struct task_req *req);
50
51   /* Commit start session task */
52   int (*commitstartsess) (struct vserver *vs, struct task_req *req);
53
54   /* Commit stop session task */
55   int (*commitstopsess) (struct vserver *vs, struct task_req *req);
56
57   /* Rollback start session task */
58   int (*rollbackstartsess) (struct vserver *vs, struct task_req *req);
59
60   /* Rollback stop session task */
61   int (*rollbackstopsess) (struct vserver *vs, struct task_req *req);
62 };
63
64 extern void task_register(struct main_server *ms, struct task *task);
65
66 void rh_task_register(struct main_server *ms);
67 void rh_task_unregister(struct main_server *ms);
68 int  rh_task_startservice(struct main_server *ms);
69 int  rh_task_stopservice(struct main_server *ms);
70 void rh_task_init(struct main_server *ms, struct vserver *vs);
71 void rh_task_cleanup(struct main_server *ms, struct vserver *vs);
72 int  rh_task_startsess(struct vserver *vs, struct task_req *req);
73 int  rh_task_stopsess(struct vserver *vs, struct task_req *req);
74 int  rh_task_commitstartsess(struct vserver *vs, struct task_req *req);
75 int  rh_task_commitstopsess(struct vserver *vs, struct task_req *req);
76 int  rh_task_rollbackstartsess(struct vserver *vs, struct task_req *req);
77 int  rh_task_rollbackstopsess(struct vserver *vs, struct task_req *req);
78
79 #endif // __RH_TASK_H