Changeset b5e3f15c3ecb424e105dd5a93288c5f134de6816
- Timestamp:
- 04/06/09 00:26:38 (3 years ago)
- Children:
- 8ecd62957f2caca419e633605e4b81d2936660ae
- Parents:
- 59f8607b48ef867c2d3338c9c840006b0f459b9d
- git-committer:
- Neutron Soutmun <neo.neutron@…> (04/06/09 00:26:38)
- Files:
-
- 7 modified
-
ChangeLog (modified) (1 diff)
-
src/rahunasd.c (modified) (2 diffs)
-
src/rh-task-dbset.c (modified) (4 diffs)
-
src/rh-task-ipset.c (modified) (2 diffs)
-
src/rh-task-memset.c (modified) (5 diffs)
-
src/rh-task.h (modified) (1 diff)
-
src/rh-xmlrpc-server.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
ChangeLog
r59f8607 rb5e3f15 1 2009-04-06 Neutron Soutmun <neo.neutron@gmail.com> 2 3 * src/rahunasd.c, src/rh-task-{memset,ipset}.c: Fix the member deleted during 4 polling process that cause the process will stop unexpectly. 5 * src/rh-task-dbset.c: 6 - Using task_req and rh_task_startsess to restore set data from DB instead 7 of manual call. 8 * src/rh-task.h: Add bandwidth_slot_id into task_req structure. 9 * src/rh-xmlrpc-server.c: Initial session_start = 0 to trigger the program 10 to use the current timestamp; 11 1 12 2009-04-03 Neutron Soutmun <neo.neutron@gmail.com> 2 13 -
src/rahunasd.c
rd5429ac rb5e3f15 102 102 while (runner != NULL) { 103 103 member = (struct rahunas_member *)runner->data; 104 runner = g_list_next(runner); 105 104 106 id = member->id; 105 107 … … 130 132 res = rh_task_stopsess(process->vs, &req); 131 133 } 132 133 runner = g_list_next(runner);134 134 } 135 135 } -
src/rh-task-dbset.c
rd5429ac rb5e3f15 14 14 #include "rh-ipset.h" 15 15 #include "rh-utils.h" 16 #include "rh-task-memset.h"17 #include "rh-task-bandwidth.h"18 16 19 17 struct dbset_row { … … 208 206 GList *member_node = NULL; 209 207 struct rahunas_member *member = NULL; 210 struct bandwidth_req bw_req; 208 struct task_req req; 209 unsigned char ethernet[ETH_ALEN] = {0,0,0,0,0,0}; 211 210 unsigned char max_try = 3; 212 211 … … 226 225 id = iptoid(vs->v_map, row->ip); 227 226 228 DP("id=%d", id);229 230 227 if (id < 0) 231 228 continue; 232 229 233 member_node = member_get_node_by_id(vs, id); 234 235 if (member_node == NULL) { 236 DP("Create new member"); 237 member = (struct rahunas_member *) rh_malloc(sizeof(struct rahunas_member)); 238 if (member == NULL) 239 continue; 240 241 memset(member, 0, sizeof(struct rahunas_member)); 242 vs->v_map->members = 243 g_list_insert_sorted(vs->v_map->members, member, idcmp); 244 } else { 245 DP("Member already exists"); 246 member = (struct rahunas_member *) member_node->data; 247 } 248 249 // MEMSET 250 member->id = id; 251 member->session_id = g_strdup(row->session_id); 252 member->username = g_strdup(row->username); 253 parse_mac(row->mac, &member->mac_address); 254 memcpy(&member->session_start, &row->session_start, 255 sizeof(time_t)); 256 memcpy(&member->session_timeout, &row->session_timeout, 257 sizeof(time_t)); 258 member->bandwidth_slot_id = row->bandwidth_slot_id; 259 member->bandwidth_max_down = row->bandwidth_max_down; 260 member->bandwidth_max_up = row->bandwidth_max_up; 261 262 // IPSET 263 DP("Restore, ip=%s, mac=%s", row->ip, row->mac); 264 set_adtip(vs->v_set, row->ip, row->mac, IP_SET_OP_ADD_IP); 265 266 267 // Bandwidth 268 sprintf(bw_req.ip, "%s", row->ip); 269 sprintf(bw_req.bandwidth_max_down, "%lu", row->bandwidth_max_down); 270 sprintf(bw_req.bandwidth_max_up, "%lu", row->bandwidth_max_up); 271 sprintf(bw_req.slot_id, "%u", row->bandwidth_slot_id); 272 273 mark_reserved_slot_id(row->bandwidth_slot_id); 274 275 while (max_try-- > 0) { 276 if (bandwidth_add(vs, &bw_req) == 0) 277 break; 278 } 230 req.id = id; 231 req.vserver_id = atoi(row->vserver_id); 232 req.username = row->username; 233 req.session_id = row->session_id; 234 parse_mac(row->mac, ðernet); 235 memcpy(req.mac_address, ðernet, ETH_ALEN); 236 237 req.session_start = row->session_start; 238 req.session_timeout = row->session_timeout; 239 240 req.bandwidth_slot_id = row->bandwidth_slot_id; 241 req.bandwidth_max_down = row->bandwidth_max_down; 242 req.bandwidth_max_up = row->bandwidth_max_up; 243 244 rh_task_startsess(vs, &req); 279 245 } 280 246 return TRUE; … … 373 339 PROGRAM, NULL, NULL, 374 340 GDA_CONNECTION_OPTIONS_NONE, NULL); 375 341 376 342 strftime(&time_str, sizeof time_str, "%s", localtime(&req->session_start)); 377 343 strftime(&time_str2, sizeof time_str2, "%s", -
src/rh-task-ipset.c
rd5429ac rb5e3f15 34 34 while (runner != NULL) { 35 35 member = (struct rahunas_member *) runner->data; 36 runner = g_list_next(runner); 37 36 38 id = member->id; 37 39 … … 42 44 send_xmlrpc_stopacct(process->vs, id, RH_RADIUS_TERM_NAS_REBOOT); 43 45 rh_task_stopsess(process->vs, &req); 44 45 runner = g_list_next(runner);46 46 } 47 47 } -
src/rh-task-memset.c
rd5429ac rb5e3f15 32 32 gint idcmp(struct rahunas_member *a, struct rahunas_member *b) 33 33 { 34 if (a == NULL || b == NULL)35 return 0;36 37 34 if (a != NULL && b != NULL) 38 35 return (a->id - b->id); 36 37 return -1; 39 38 } 40 39 … … 66 65 { 67 66 GList *runner = NULL; 67 GList *deleting = NULL; 68 68 struct rahunas_member *member = NULL; 69 69 … … 78 78 member = (struct rahunas_member *) runner->data; 79 79 80 DP("Cleanup IP: %s", idtoip(vs->v_map, member->id)); 81 80 82 rh_free_member(member); 81 82 runner = g_list_delete_link(runner, runner); 83 deleting = runner; 84 runner = g_list_next(runner); 85 86 vs->v_map->members = g_list_delete_link(vs->v_map->members, deleting); 83 87 } 84 88 … … 123 127 124 128 vs->v_map->members = 125 g_list_insert_sorted(vs->v_map->members, member, idcmp); 129 g_list_insert_sorted(vs->v_map->members, member, idcmp); 130 126 131 } else { 127 132 DP("Member already exists"); … … 145 150 member->session_id = termstring; 146 151 147 time(&(member->session_start)); 148 memcpy(&req->session_start, &member->session_start, 149 sizeof(time_t)); 152 if (req->session_start == 0) { 153 time(&(req->session_start)); 154 } 155 156 memcpy(&member->session_start, &req->session_start, sizeof(time_t)); 150 157 151 158 memcpy(&member->mac_address, &req->mac_address, ETH_ALEN); -
src/rh-task.h
rd5429ac rb5e3f15 20 20 time_t session_start; 21 21 time_t session_timeout; 22 unsigned short bandwidth_slot_id; 22 23 unsigned long bandwidth_max_down; 23 24 unsigned long bandwidth_max_up; -
src/rh-xmlrpc-server.c
rd5429ac rb5e3f15 79 79 parse_mac(mac_address, ðernet); 80 80 memcpy(req.mac_address, ðernet, ETH_ALEN); 81 req.session_start = 0; 81 82 req.session_timeout = 0; 82 83
