Changeset cb5371333692435b9818b9043a26980e404202d1
- Timestamp:
- 06/20/11 22:46:42 (11 months ago)
- Children:
- 4b5d05b46785f944e0d4ba506afeb9df499a6aac
- Parents:
- 215b3eba66c465438d9ed78037766d0f7f7b4dea
- git-committer:
- Neutron Soutmun <neo.neutron@…> (06/20/11 22:46:42)
- Files:
-
- 33 modified
-
configure.ac (modified) (1 diff)
-
data/rahunas.db (modified) (previous)
-
src/Makefile.am (modified) (1 diff)
-
src/rahunasd.c (modified) (13 diffs)
-
src/rahunasd.h (modified) (2 diffs)
-
src/rh-config.c (modified) (5 diffs)
-
src/rh-config.h (modified) (1 diff)
-
src/rh-ipset.c (modified) (9 diffs)
-
src/rh-ipset.h (modified) (3 diffs)
-
src/rh-server.c (modified) (16 diffs)
-
src/rh-server.h (modified) (2 diffs)
-
src/rh-serviceclass.h (modified) (1 diff)
-
src/rh-task-bandwidth.c (modified) (16 diffs)
-
src/rh-task-bandwidth.h (modified) (3 diffs)
-
src/rh-task-dbset.c (modified) (15 diffs)
-
src/rh-task-dbset.h (modified) (1 diff)
-
src/rh-task-ipset.c (modified) (12 diffs)
-
src/rh-task-ipset.h (modified) (1 diff)
-
src/rh-task-iptables.c (modified) (13 diffs)
-
src/rh-task-iptables.h (modified) (1 diff)
-
src/rh-task-memset.c (modified) (14 diffs)
-
src/rh-task-memset.h (modified) (1 diff)
-
src/rh-task-serviceclass.c (modified) (11 diffs)
-
src/rh-task-serviceclass.h (modified) (2 diffs)
-
src/rh-task.c (modified) (9 diffs)
-
src/rh-task.h (modified) (1 diff)
-
src/rh-utils.c (modified) (4 diffs)
-
src/rh-utils.h (modified) (2 diffs)
-
src/rh-xmlrpc-cmd.c (modified) (1 diff)
-
src/rh-xmlrpc-cmd.h (modified) (1 diff)
-
src/rh-xmlrpc-server.c (modified) (13 diffs)
-
tools/Makefile.am (modified) (1 diff)
-
weblogin/locale/th_TH/LC_MESSAGES/messages.mo (modified) (previous)
Legend:
- Unmodified
- Added
- Removed
-
configure.ac
r0249086 rcb53713 29 29 AC_SUBST(LIBGNET_LIBS) 30 30 31 dnl Check for LibGDA 3.x32 LIBGDA_REQ= 3.0.231 dnl Check for LibGDA 4.x 32 LIBGDA_REQ=4.0 33 33 PKG_CHECK_MODULES(LIBGDA, [ libgda-4.0 >= $LIBGDA_REQ ], , [ AC_MSG_ERROR([LibGDA is required]) ]) 34 34 -
src/Makefile.am
r43154f8 rcb53713 17 17 -DRAHUNAS_RUN_DIR=\"$(localstatedir)/run/\" \ 18 18 -DRAHUNAS_FIREWALL_WRAPPER=\"$(sbindir)/rahunas-firewall\" \ 19 -DRAHUNAS_BANDWIDTH_WRAPPER=\"$(sbindir)/rahunas-bandwidth\" 19 -DRAHUNAS_BANDWIDTH_WRAPPER=\"$(sbindir)/rahunas-bandwidth\" \ 20 -D_GNU_SOURCE 20 21 21 22 rahunasd_SOURCES = \ -
src/rahunasd.c
r43154f8 rcb53713 27 27 pid_t pid, sid; 28 28 29 struct main_server rh_main_server_instance = { 29 pthread_mutex_t RHMtxLock = PTHREAD_MUTEX_INITIALIZER; 30 pthread_mutex_t RHPollingMtxLock = PTHREAD_MUTEX_INITIALIZER; 31 pthread_cond_t RHPollingCond = PTHREAD_COND_INITIALIZER; 32 33 static void rh_exit (void); 34 static void rh_reload (void); 35 static int expired_check (void *data); 36 static int polling_expired_check (RHMainServer *ms, RHVServer *vs); 37 static int do_task_init (RHMainServer *ms, RHVServer *vs); 38 static int do_task_cleanup (RHMainServer *ms, RHVServer *vs); 39 static int do_task_stopservice (RHMainServer *ms, RHVServer *vs); 40 static int do_vserver_reload (RHMainServer *ms, RHVServer *vs); 41 static int do_vserver_init_done (RHMainServer *ms, RHVServer *vs); 42 static int do_serviceclass_init (RHMainServer *ms, RHSvClass *sc); 43 static int do_serviceclass_reload(RHMainServer *ms, RHSvClass *sc); 44 static void *polling_service (void *data); 45 46 RHMainServer rh_main_server_instance = { 30 47 .vserver_list = NULL, 31 48 .serviceclass_list = NULL, 32 49 .task_list = NULL, 33 50 }; 34 struct main_server *rh_main_server = &rh_main_server_instance;51 RHMainServer *rh_main_server = &rh_main_server_instance; 35 52 36 53 void rh_sighandler(int sig) … … 63 80 } 64 81 65 size_t expired_check(void *data) 82 static int 83 expired_check(void *data) 66 84 { 67 85 struct processing_set *process = (struct processing_set *) data; … … 83 101 84 102 while (runner != NULL) { 103 time_t time_now = time (NULL); 104 85 105 member = (struct rahunas_member *)runner->data; 86 106 runner = g_list_next(runner); … … 94 114 DP("Processing id = %d", id); 95 115 96 DP("Time now: %d, Time get: %d", time(NULL), d->timestamp); 97 DP("Time diff = %d, idle_timeout=%d", (time(NULL) - d->timestamp), 116 DP("Time diff = %d, idle_timeout=%d", (time_now - d->timestamp), 98 117 process->vs->vserver_config->idle_timeout); 99 118 100 if ( (time(NULL) - d->timestamp)>119 if (time_now - d->timestamp > 101 120 process->vs->vserver_config->idle_timeout) { 102 121 // Idle Timeout … … 105 124 memcpy(req.mac_address, &d->ethernet, ETH_ALEN); 106 125 req.req_opt = RH_RADIUS_TERM_IDLE_TIMEOUT; 126 107 127 send_xmlrpc_stopacct(process->vs, id, 108 128 RH_RADIUS_TERM_IDLE_TIMEOUT); 129 130 pthread_mutex_lock (&RHMtxLock); 109 131 res = rh_task_stopsess(process->vs, &req); 132 pthread_mutex_unlock (&RHMtxLock); 110 133 } else if (member->session_timeout != 0 && 111 time (NULL)> member->session_timeout) {134 time_now > member->session_timeout) { 112 135 // Session Timeout (Expired) 113 136 DP("Found IP: %s session timeout", idtoip(process->vs->v_map, id)); … … 115 138 memcpy(req.mac_address, &d->ethernet, ETH_ALEN); 116 139 req.req_opt = RH_RADIUS_TERM_SESSION_TIMEOUT; 140 117 141 send_xmlrpc_stopacct(process->vs, id, 118 142 RH_RADIUS_TERM_SESSION_TIMEOUT); 143 144 pthread_mutex_lock (&RHMtxLock); 119 145 res = rh_task_stopsess(process->vs, &req); 120 } 121 } 122 } 123 124 int polling_expired_check(struct main_server *ms, struct vserver *vs) { 125 walk_through_set(&expired_check, vs); 146 pthread_mutex_unlock (&RHMtxLock); 147 } 148 } 149 } 150 151 static int 152 polling_expired_check (RHMainServer *ms, RHVServer *vs) { 153 walk_through_set(expired_check, vs); 126 154 return 0; 127 155 } 128 156 129 157 gboolean polling(gpointer data) { 130 struct main_server *ms = (struct main_server *)data; 131 struct vserver *vs = NULL; 132 133 if (ms->polling_blocked) { 134 DP("%s", "Skip polling!"); 135 return TRUE; 136 } 137 138 DP("%s", "Start polling!"); 139 walk_through_vserver(&polling_expired_check, ms); 158 if (pthread_mutex_trylock (&RHPollingMtxLock) == 0) 159 { 160 DP("%s", "Start polling!"); 161 pthread_cond_signal (&RHPollingCond); 162 pthread_mutex_unlock (&RHPollingMtxLock); 163 } 140 164 return TRUE; 141 165 } 142 166 143 void rh_exit() 144 { 145 walk_through_vserver(&rh_task_cleanup, rh_main_server); 167 static void 168 rh_exit (void) 169 { 170 walk_through_vserver(do_task_cleanup, rh_main_server); 146 171 rh_task_stopservice(rh_main_server); 147 172 rh_task_unregister(rh_main_server); 148 173 unregister_vserver_all(rh_main_server); 149 rh_closelog(rh_main_server->main_config->log_file); 150 } 151 152 void rh_reload() 174 rh_closelog(rh_main_server->log_fd); 175 } 176 177 static void 178 rh_reload (void) 153 179 { 154 180 logmsg(RH_LOG_NORMAL, "Reloading config files"); … … 187 213 } 188 214 189 walk_through_serviceclass( &serviceclass_reload, rh_main_server);215 walk_through_serviceclass(do_serviceclass_reload, rh_main_server); 190 216 serviceclass_unused_cleanup(rh_main_server); 191 217 192 walk_through_vserver( &vserver_reload, rh_main_server);218 walk_through_vserver(do_vserver_reload, rh_main_server); 193 219 vserver_unused_cleanup(rh_main_server); 194 220 … … 306 332 307 333 308 int main(int argc, char * *argv)334 int main(int argc, char *argv[]) 309 335 { 310 336 gchar* addr = "localhost"; … … 328 354 GNetXmlRpcServer *server = NULL; 329 355 GMainLoop* main_loop = NULL; 356 pthread_t polling_tid; 330 357 331 358 signal(SIGTERM, &rh_sighandler); … … 384 411 385 412 if (rh_main_server->main_config->serviceclass) 386 walk_through_serviceclass( &serviceclass_init, rh_main_server);387 388 walk_through_vserver( &rh_task_init, rh_main_server);413 walk_through_serviceclass(do_serviceclass_init, rh_main_server); 414 415 walk_through_vserver(do_task_init, rh_main_server); 389 416 390 417 gnet_init(); … … 396 423 if (!server) { 397 424 syslog(LOG_ERR, "Could not start XML-RPC server!"); 398 walk_through_vserver( &rh_task_stopservice, rh_main_server);425 walk_through_vserver(do_task_stopservice, rh_main_server); 399 426 exit (EXIT_FAILURE); 400 427 } … … 418 445 419 446 g_timeout_add_seconds (rh_main_server->main_config->polling_interval, 420 polling, rh_main_server); 421 447 polling, NULL); 422 448 423 walk_through_vserver(&vserver_init_done, rh_main_server); 449 walk_through_vserver(do_vserver_init_done, rh_main_server); 450 451 if (pthread_create (&polling_tid, NULL, polling_service, 452 (void *) rh_main_server) != 0) 453 { 454 perror ("Create polling service"); 455 } 456 else 457 { 458 pthread_detach (polling_tid); 459 } 460 424 461 logmsg(RH_LOG_NORMAL, "Ready to serve..."); 425 462 g_main_loop_run(main_loop); … … 427 464 exit(EXIT_SUCCESS); 428 465 } 466 467 static int 468 do_task_init (RHMainServer *ms, RHVServer *vs) 469 { 470 rh_task_init (ms, vs); 471 return 0; 472 } 473 474 static int 475 do_task_cleanup (RHMainServer *ms, RHVServer *vs) 476 { 477 rh_task_cleanup (ms, vs); 478 return 0; 479 } 480 481 static int 482 do_task_stopservice (RHMainServer *ms, RHVServer *vs) 483 { 484 rh_task_stopservice (ms); 485 return 0; 486 } 487 488 static int 489 do_vserver_reload (RHMainServer *ms, RHVServer *vs) 490 { 491 vserver_reload (ms, vs); 492 return 0; 493 } 494 495 static int 496 do_vserver_init_done (RHMainServer *ms, RHVServer *vs) 497 { 498 vserver_init_done (ms, vs); 499 return 0; 500 } 501 502 static int 503 do_serviceclass_init (RHMainServer *ms, RHSvClass *sc) 504 { 505 serviceclass_init (ms, sc); 506 return 0; 507 } 508 509 static int 510 do_serviceclass_reload(RHMainServer *ms, RHSvClass *sc) 511 { 512 serviceclass_reload (ms, sc); 513 return 0; 514 } 515 516 static void * 517 polling_service (void *data) 518 { 519 RHMainServer *ms = (RHMainServer *)data; 520 521 for (;;) 522 { 523 pthread_mutex_lock (&RHPollingMtxLock); 524 pthread_cond_wait (&RHPollingCond, &RHPollingMtxLock); 525 526 walk_through_vserver(polling_expired_check, ms); 527 528 pthread_mutex_unlock (&RHPollingMtxLock); 529 } 530 } -
src/rahunasd.h
r9cc499e rcb53713 12 12 #include <netinet/in.h> 13 13 #include <arpa/inet.h> 14 #include <pthread.h> 14 15 #include <time.h> 15 16 #include <linux/if_ether.h> … … 24 25 25 26 extern const char *termstring; 26 extern struct main_server rh_main_server_instance; 27 extern RHMainServer rh_main_server_instance; 28 extern pthread_mutex_t RHMtxLock; 27 29 28 30 enum RH_LOG { -
src/rh-config.c
r6e30b68 rcb53713 4 4 * Date: 2008-11-26 5 5 */ 6 7 #include <string.h> 8 #include <stdlib.h> 6 9 #include <ctype.h> 7 #include <stdlib.h>8 #include <string.h>9 10 #include <syslog.h> 10 11 #include <dirent.h> … … 298 299 299 300 300 rh_free( &clone_key);301 rh_free((void **) &clone_key); 301 302 302 303 return lcfg_status_ok; … … 349 350 } 350 351 351 int get_vservers_config(const char *conf_dir, struct main_server *server)352 int get_vservers_config(const char *conf_dir, RHMainServer *server) 352 353 { 353 354 DIR *dp; … … 411 412 int cleanup_vserver_config(struct rahunas_vserver_config *config) 412 413 { 413 rh_free( &(config->vserver_name));414 rh_free( &(config->dev_external));415 rh_free( &(config->dev_internal));416 rh_free( &(config->vlan));417 rh_free( &(config->vlan_raw_dev_external));418 rh_free( &(config->vlan_raw_dev_internal));419 rh_free( &(config->bridge));420 rh_free( &(config->masquerade));421 rh_free( &(config->ignore_mac));422 rh_free( &(config->vserver_ip));423 rh_free( &(config->vserver_fqdn));424 rh_free( &(config->vserver_ports_allow));425 rh_free( &(config->vserver_ports_intercept));426 rh_free( &(config->clients));427 rh_free( &(config->excluded));428 rh_free( &(config->dns));429 rh_free( &(config->ssh));430 rh_free( &(config->proxy));431 rh_free( &(config->proxy_host));432 rh_free( &(config->proxy_port));433 rh_free( &(config->bittorrent));434 rh_free( &(config->bittorrent_allow));435 rh_free( &(config->radius_host));436 rh_free( &(config->radius_secret));437 rh_free( &(config->radius_encrypt));438 rh_free( &(config->radius_auth_port));439 rh_free( &(config->radius_account_port));440 rh_free( &(config->nas_identifier));441 rh_free( &(config->nas_port));442 rh_free( &(config->nas_login_title));443 rh_free( &(config->nas_default_redirect));444 rh_free( &(config->nas_default_language));445 rh_free( &(config->nas_weblogin_template));414 rh_free((void **) &config->vserver_name); 415 rh_free((void **) &config->dev_external); 416 rh_free((void **) &config->dev_internal); 417 rh_free((void **) &config->vlan); 418 rh_free((void **) &config->vlan_raw_dev_external); 419 rh_free((void **) &config->vlan_raw_dev_internal); 420 rh_free((void **) &config->bridge); 421 rh_free((void **) &config->masquerade); 422 rh_free((void **) &config->ignore_mac); 423 rh_free((void **) &config->vserver_ip); 424 rh_free((void **) &config->vserver_fqdn); 425 rh_free((void **) &config->vserver_ports_allow); 426 rh_free((void **) &config->vserver_ports_intercept); 427 rh_free((void **) &config->clients); 428 rh_free((void **) &config->excluded); 429 rh_free((void **) &config->dns); 430 rh_free((void **) &config->ssh); 431 rh_free((void **) &config->proxy); 432 rh_free((void **) &config->proxy_host); 433 rh_free((void **) &config->proxy_port); 434 rh_free((void **) &config->bittorrent); 435 rh_free((void **) &config->bittorrent_allow); 436 rh_free((void **) &config->radius_host); 437 rh_free((void **) &config->radius_secret); 438 rh_free((void **) &config->radius_encrypt); 439 rh_free((void **) &config->radius_auth_port); 440 rh_free((void **) &config->radius_account_port); 441 rh_free((void **) &config->nas_identifier); 442 rh_free((void **) &config->nas_port); 443 rh_free((void **) &config->nas_login_title); 444 rh_free((void **) &config->nas_default_redirect); 445 rh_free((void **) &config->nas_default_language); 446 rh_free((void **) &config->nas_weblogin_template); 446 447 447 448 return 0; 448 449 } 449 450 450 int cleanup_serviceclass_config(struct rahunas_serviceclass_config *config) 451 { 452 rh_free(&(config->serviceclass_name)); 453 rh_free(&(config->description)); 454 rh_free(&(config->network)); 455 rh_free(&(config->fake_arpd)); 456 rh_free(&(config->fake_arpd_iface)); 451 int 452 cleanup_serviceclass_config(struct rahunas_serviceclass_config *config) 453 { 454 rh_free((void **) &config->serviceclass_name); 455 rh_free((void **) &config->description); 456 rh_free((void **) &config->network); 457 rh_free((void **) &config->fake_arpd); 458 rh_free((void **) &config->fake_arpd_iface); 457 459 458 460 return 0; … … 461 463 int cleanup_mainserver_config(struct rahunas_main_config *config) 462 464 { 463 rh_free( &(config->conf_dir));464 rh_free( &(config->serviceclass_conf_dir));465 rh_free( &(config->log_file));466 rh_free( &(config->dhcp));465 rh_free((void **) &config->conf_dir); 466 rh_free((void **) &config->serviceclass_conf_dir); 467 rh_free((void **) &config->log_file); 468 rh_free((void **) &config->dhcp); 467 469 468 470 return 0; -
src/rh-config.h
r43154f8 rcb53713 130 130 int get_config(const char *cfg_file, union rahunas_config *config); 131 131 int get_value(const char *cfg_file, const char *key, void **data, size_t *len); 132 int get_vservers_config(const char *conf_dir, struct main_server *server);133 int get_serviceclass_config(const char *conf_dir, struct main_server *server);132 int get_vservers_config(const char *conf_dir, RHMainServer *server); 133 int get_serviceclass_config(const char *conf_dir, RHMainServer *server); 134 134 int cleanup_vserver_config(struct rahunas_vserver_config *config); 135 135 int cleanup_serviceclass_config(struct rahunas_serviceclass_config *config); -
src/rh-ipset.c
r43154f8 rcb53713 7 7 #include <stdio.h> 8 8 #include <stdlib.h> 9 #include <string.h> 9 10 #include <errno.h> 10 11 #include <unistd.h> … … 107 108 } 108 109 109 int kernel_getfrom_handleerrno(void *data, s ize_t * size)110 int kernel_getfrom_handleerrno(void *data, socklen_t * size) 110 111 { 111 112 int res = wrapped_getsockopt(data, size); … … 234 235 unsigned char mac[ETH_ALEN] = {0,0,0,0,0,0}; 235 236 parse_ip(adtip, &ip); 236 parse_mac(adtmac, &mac);237 parse_mac(adtmac, mac); 237 238 238 239 return set_adtip_nb(rahunas_set, &ip, mac, op); … … 381 382 } 382 383 383 size_t load_set_list( struct vserver *vs, const char name[IP_SET_MAXNAMELEN],384 size_t load_set_list(RHVServer *vs, const char name[IP_SET_MAXNAMELEN], 384 385 ip_set_id_t *idx, 385 386 unsigned op, unsigned cmd) … … 448 449 } 449 450 450 int get_header_from_set ( struct vserver *vs)451 int get_header_from_set (RHVServer *vs) 451 452 { 452 453 struct ip_set_req_rahunas_create *header = NULL; … … 510 511 } 511 512 512 int walk_through_set (int (*callback)(void *), struct vserver *vs)513 int walk_through_set (int (*callback)(void *), RHVServer *vs) 513 514 { 514 515 struct processing_set process; … … 517 518 socklen_t size, req_size; 518 519 int res = 0; 519 520 check_protocolversion (); 520 521 check_protocolversion (); 522 523 pthread_mutex_lock (&RHMtxLock); 521 524 522 525 size = req_size = load_set_list(vs, vs->vserver_config->vserver_name, &idx, … … 534 537 if (res != 0 || size != req_size) { 535 538 rh_free(&data); 539 pthread_mutex_unlock (&RHMtxLock); 536 540 return -EAGAIN; 537 541 } … … 542 546 process.vs = vs; 543 547 process.list = data; 548 549 pthread_mutex_unlock (&RHMtxLock); 544 550 (*callback)(&process); 545 } 546 547 rh_free(&data); 548 return res; 551 rh_free (&data); 552 return 0; 553 } 554 555 pthread_mutex_unlock (&RHMtxLock); 556 return 0; 549 557 } 550 558 -
src/rh-ipset.h
r43154f8 rcb53713 29 29 30 30 struct processing_set { 31 struct vserver *vs;31 RHVServer *vs; 32 32 void *list; 33 33 }; … … 77 77 int kernel_sendto_handleerrno(unsigned op, void *data, socklen_t size); 78 78 void kernel_sendto(void *data, size_t size); 79 int kernel_getfrom_handleerrno(void *data, s ize_t * size);79 int kernel_getfrom_handleerrno(void *data, socklen_t * size); 80 80 struct set *set_adt_get(const char *name); 81 81 int set_adtip(struct set *rahunas_set, const char *adtip, const char *adtmac, … … 92 92 void set_flush(const char *name); 93 93 94 size_t load_set_list( struct vserver *vs, const char name[IP_SET_MAXNAMELEN],94 size_t load_set_list(RHVServer *vs, const char name[IP_SET_MAXNAMELEN], 95 95 ip_set_id_t *idx, 96 96 unsigned op, unsigned cmd); 97 97 98 int get_header_from_set ( struct vserver *vs);98 int get_header_from_set (RHVServer *vs); 99 99 100 int walk_through_set (int (*callback)(void *), struct vserver *vs);100 int walk_through_set (int (*callback)(void *), RHVServer *vs); 101 101 102 102 void parse_ip(const char *str, ip_set_ip_t *ip); -
src/rh-server.c
r43154f8 rcb53713 5 5 */ 6 6 #include <stdio.h> 7 #include <string.h> 7 8 #include "rahunasd.h" 8 9 #include "rh-server.h" 9 10 #include "rh-utils.h" 10 11 11 struct vserver *vserver_exists(GList *vserver_list, int vserver_id, 12 const char *vserver_name)13 { 14 GList *runner = g_list_first(vserver_list); 15 struct vserver *lvserver = NULL;16 17 while (runner != NULL) { 18 lvserver = ( struct vserver *)runner->data;12 RHVServer * 13 vserver_exists (GList *vserver_list, int vserver_id, const char *vserver_name) 14 { 15 GList *runner = g_list_first(vserver_list); 16 RHVServer *lvserver = NULL; 17 18 while (runner != NULL) { 19 lvserver = (RHVServer *)runner->data; 19 20 20 21 if (lvserver->vserver_config->vserver_id == vserver_id) … … 29 30 } 30 31 31 struct vserver *vserver_get_by_id(struct main_server *ms, int search_id)32 RHVServer *vserver_get_by_id(RHMainServer *ms, int search_id) 32 33 { 33 34 GList *runner = g_list_first(ms->vserver_list); 34 struct vserver *lvserver = NULL;35 36 while (runner != NULL) { 37 lvserver = ( struct vserver *)runner->data;35 RHVServer *lvserver = NULL; 36 37 while (runner != NULL) { 38 lvserver = (RHVServer *)runner->data; 38 39 39 40 if (lvserver->vserver_config->vserver_id == search_id) { … … 46 47 } 47 48 48 int vserver_cleanup( struct vserver *vs)49 int vserver_cleanup(RHVServer *vs) 49 50 { 50 51 if (vs == NULL) … … 57 58 } 58 59 59 int mainserver_cleanup( struct main_server *ms)60 int mainserver_cleanup(RHMainServer *ms) 60 61 { 61 62 if (ms == NULL) … … 68 69 } 69 70 70 int register_vserver( struct main_server *ms, const char *vserver_cfg_file)71 int register_vserver(RHMainServer *ms, const char *vserver_cfg_file) 71 72 { 72 73 GList *vserver_list = ms->vserver_list; … … 77 78 union rahunas_config *cfg_get = NULL; 78 79 struct rahunas_vserver_config *vserver_config = NULL; 79 struct vserver *new_vserver = NULL;80 struct vserver *old_vserver = NULL;80 RHVServer *new_vserver = NULL; 81 RHVServer *old_vserver = NULL; 81 82 82 83 union rahunas_config config = { … … 130 131 if (old_vserver->dummy_config != NULL) { 131 132 DP("Cleanup old dummy config"); 132 rh_free( &old_vserver->dummy_config);133 rh_free((void **) &old_vserver->dummy_config); 133 134 } 134 135 … … 167 168 memcpy(vserver_config, &config, sizeof(struct rahunas_vserver_config)); 168 169 169 new_vserver = ( struct vserver *) rh_malloc(sizeof(struct vserver));170 new_vserver = (RHVServer *) rh_malloc(sizeof(RHVServer)); 170 171 171 172 if (new_vserver == NULL) 172 173 return -1; 173 174 174 memset(new_vserver, 0, sizeof( struct vserver));175 memset(new_vserver, 0, sizeof(RHVServer)); 175 176 176 177 new_vserver->vserver_config = vserver_config; … … 182 183 } 183 184 184 int unregister_vserver( struct main_server *ms, int vserver_id)185 { 186 GList *vserver_list = ms->vserver_list; 187 GList *runner = g_list_first(vserver_list); 188 struct vserver *lvserver = NULL;189 190 while (runner != NULL) { 191 lvserver = ( struct vserver *)runner->data;185 int unregister_vserver(RHMainServer *ms, int vserver_id) 186 { 187 GList *vserver_list = ms->vserver_list; 188 GList *runner = g_list_first(vserver_list); 189 RHVServer *lvserver = NULL; 190 191 while (runner != NULL) { 192 lvserver = (RHVServer *)runner->data; 192 193 if (lvserver->vserver_config->vserver_id == vserver_id) { 193 194 vserver_cleanup(lvserver); … … 202 203 } 203 204 204 int unregister_vserver_all( struct main_server *ms)205 int unregister_vserver_all(RHMainServer *ms) 205 206 { 206 207 GList *vserver_list = ms->vserver_list; 207 208 GList *runner = g_list_first(vserver_list); 208 209 GList *deleting = NULL; 209 struct vserver *lvserver = NULL;210 211 while (runner != NULL) { 212 lvserver = ( struct vserver *)runner->data;210 RHVServer *lvserver = NULL; 211 212 while (runner != NULL) { 213 lvserver = (RHVServer *)runner->data; 213 214 vserver_cleanup(lvserver); 214 215 deleting = runner; … … 222 223 } 223 224 224 int walk_through_vserver(int (*callback)(void *, void *), struct main_server *ms) 225 { 226 GList *vserver_list = ms->vserver_list; 227 GList *runner = g_list_first(vserver_list); 228 struct vserver *vs = NULL; 229 230 while (runner != NULL) { 231 vs = (struct vserver *)runner->data; 225 int walk_through_vserver(int (*callback)(RHMainServer *, RHVServer*), 226 RHMainServer *ms) 227 { 228 GList *vserver_list = ms->vserver_list; 229 GList *runner = g_list_first(vserver_list); 230 RHVServer *vs = NULL; 231 232 while (runner != NULL) { 233 vs = (RHVServer *)runner->data; 232 234 233 235 (*callback)(ms, vs); … … 239 241 } 240 242 241 void vserver_init_done( struct main_server *ms, struct vserver *vs)243 void vserver_init_done(RHMainServer *ms, RHVServer *vs) 242 244 { 243 245 if (vs != NULL) { … … 247 249 } 248 250 249 void vserver_reload( struct main_server *ms, struct vserver *vs)251 void vserver_reload(RHMainServer *ms, RHVServer *vs) 250 252 { 251 253 if (vs->vserver_config->init_flag == VS_DONE) { … … 287 289 memcpy(vs->vserver_config, vs->dummy_config, 288 290 sizeof(struct rahunas_vserver_config)); 289 rh_free( &vs->dummy_config);291 rh_free((void **) &vs->dummy_config); 290 292 } 291 293 … … 299 301 300 302 301 void vserver_unused_cleanup( struct main_server *ms)302 { 303 GList *vserver_list = ms->vserver_list; 304 GList *runner = g_list_first(vserver_list); 305 struct vserver *lvserver = NULL;306 307 while (runner != NULL) { 308 lvserver = ( struct vserver *)runner->data;303 void vserver_unused_cleanup(RHMainServer *ms) 304 { 305 GList *vserver_list = ms->vserver_list; 306 GList *runner = g_list_first(vserver_list); 307 RHVServer *lvserver = NULL; 308 309 while (runner != NULL) { 310 lvserver = (RHVServer *)runner->data; 309 311 if (lvserver->vserver_config->init_flag == VS_NONE) { 310 312 logmsg(RH_LOG_NORMAL, "[%s] - Config removed", … … 319 321 } 320 322 } 321 322 return 0; 323 } 323 } -
src/rh-server.h
r43154f8 rcb53713 9 9 #include <glib.h> 10 10 #include "rh-config.h" 11 12 typedef struct vserver RHVServer; 13 typedef struct main_server RHMainServer; 11 14 12 15 struct main_server { … … 24 27 struct rahunas_map *v_map; 25 28 struct set *v_set; 26 struct main_server *main_server;29 RHMainServer *main_server; 27 30 }; 28 31 29 struct vserver *vserver_exists(GList *vserver_list, int vserver_id, 30 const char *vserver_name); 31 struct vserver *vserver_get_by_id(struct main_server *ms, int search_id); 32 int vserver_cleanup(struct vserver *vs); 33 int mainserver_cleanup(struct main_server *ms); 34 int walk_through_vserver(int (*callback)(void *, void *), struct main_server *ms); 35 int register_vserver(struct main_server *ms, const char *vserver_cfg_file); 36 int unregister_vserver(struct main_server *ms, int vserver_id); 37 int unregister_vserver_all(struct main_server *ms); 38 void vserver_init_done(struct main_server *ms, struct vserver *vs); 39 void vserver_reload(struct main_server *ms, struct vserver *vs); 40 void vserver_unused_cleanup(struct main_server *ms); 32 RHVServer *vserver_exists (GList *vserver_list, int vserver_id, 33 const char *vserver_name); 34 RHVServer *vserver_get_by_id (RHMainServer *ms, int search_id); 35 36 int vserver_cleanup (RHVServer *vs); 37 int mainserver_cleanup (RHMainServer *ms); 38 39 int walk_through_vserver (int (*callback)(RHMainServer *, RHVServer *), 40 RHMainServer *ms); 41 int register_vserver (RHMainServer *ms, const char *vserver_cfg_file); 42 int unregister_vserver (RHMainServer *ms, int vserver_id); 43 int unregister_vserver_all (RHMainServer *ms); 44 void vserver_init_done (RHMainServer *ms, RHVServer *vs); 45 void vserver_reload (RHMainServer *ms, RHVServer *vs); 46 void vserver_unused_cleanup (RHMainServer *ms); 41 47 42 48 #endif // __RH_SERVER_H -
src/rh-serviceclass.h
r43154f8 rcb53713 11 11 12 12 #define SERVICECLASS_SET_NAME "rahunas_serviceclass" 13 14 typedef struct serviceclass RHSvClass; 13 15 14 16 struct serviceclass { -
src/rh-task-bandwidth.c
rd676a99 rcb53713 6 6 7 7 #include <stdlib.h> 8 #include <string.h> 8 9 #include <syslog.h> 9 10 #include <sys/types.h> … … 67 68 } 68 69 69 int bandwidth_exec( struct vserver *vs, char *const args[])70 int bandwidth_exec(RHVServer *vs, char *const args[]) 70 71 { 71 72 pid_t ws; … … 135 136 } 136 137 137 int bandwidth_start( struct vserver *vs)138 int bandwidth_start(RHVServer *vs) 138 139 { 139 140 char *args[5]; … … 153 154 } 154 155 155 int bandwidth_stop( struct vserver *vs)156 int bandwidth_stop(RHVServer *vs) 156 157 { 157 158 char *args[5]; … … 171 172 } 172 173 173 int bandwidth_add( struct vserver *vs, struct bandwidth_req *bw_req)174 int bandwidth_add(RHVServer *vs, struct bandwidth_req *bw_req) 174 175 { 175 176 char *args[9]; … … 192 193 } 193 194 194 int bandwidth_del( struct vserver *vs, struct bandwidth_req *bw_req)195 int bandwidth_del(RHVServer *vs, struct bandwidth_req *bw_req) 195 196 { 196 197 char *args[6]; … … 222 223 223 224 /* Initialize */ 224 static void init ( struct vserver *vs)225 static void init (RHVServer *vs) 225 226 { 226 227 struct interfaces *iface = NULL; … … 244 245 245 246 /* Cleanup */ 246 static int cleanup (struct vserver *vs)247 static void cleanup (RHVServer *vs) 247 248 { 248 249 struct interfaces *iface = NULL; … … 264 265 265 266 /* Start session task */ 266 static int startsess ( struct vserver *vs, struct task_req *req)267 static int startsess (RHVServer *vs, struct task_req *req) 267 268 { 268 269 struct bandwidth_req bw_req; … … 283 284 if (member->bandwidth_slot_id > 0) 284 285 return 0; 286 287 memset (bw_req.ip, 0, sizeof (bw_req.ip)); 288 memset (bw_req.bandwidth_max_down, 0, sizeof (bw_req.bandwidth_max_down)); 289 memset (bw_req.bandwidth_max_up, 0, sizeof (bw_req.bandwidth_max_up)); 285 290 286 291 // Formating the bandwidth request … … 316 321 317 322 /* Stop session task */ 318 static int stopsess ( struct vserver *vs, struct task_req *req)323 static int stopsess (RHVServer *vs, struct task_req *req) 319 324 { 320 325 struct bandwidth_req bw_req; … … 348 353 349 354 /* Commit start session task */ 350 static int commitstartsess ( struct vserver *vs, struct task_req *req)355 static int commitstartsess (RHVServer *vs, struct task_req *req) 351 356 { 352 357 /* Do nothing or need to implement */ … … 354 359 355 360 /* Commit stop session task */ 356 static int commitstopsess ( struct vserver *vs, struct task_req *req)361 static int commitstopsess (RHVServer *vs, struct task_req *req) 357 362 { 358 363 /* Do nothing or need to implement */ … … 360 365 361 366 /* Rollback start session task */ 362 static int rollbackstartsess ( struct vserver *vs, struct task_req *req)367 static int rollbackstartsess (RHVServer *vs, struct task_req *req) 363 368 { 364 369 /* Do nothing or need to implement */ … … 366 371 367 372 /* Rollback stop session task */ 368 static int rollbackstopsess ( struct vserver *vs, struct task_req *req)373 static int rollbackstopsess (RHVServer *vs, struct task_req *req) 369 374 { 370 375 /* Do nothing or need to implement */ … … 386 391 }; 387 392 388 void rh_task_bandwidth_reg( struct main_server *ms) {393 void rh_task_bandwidth_reg(RHMainServer *ms) { 389 394 task_register(ms, &taskbandwidth); 390 395 } -
src/rh-task-bandwidth.h
rd5429ac rcb53713 6 6 #ifndef __RH_TASK_BANDWIDTH_H 7 7 #define __RH_TASK_BANDWIDTH_H 8 9 #include "rh-server.h" 8 10 9 11 /* MAX_SLOT_PAGE is calculated from the formula of … … 18 20 #define MAX_SLOT_PAGE 619 19 21 20 extern void rh_task_bandwidth_reg( struct main_server *ms);22 extern void rh_task_bandwidth_reg(RHMainServer *ms); 21 23 22 24 struct bandwidth_req { … … 27 29 }; 28 30 29 int bandwidth_add( struct vserver *vs, struct bandwidth_req *bw_req);30 int bandwidth_exec( struct vserver *vs, char *const args[]);31 int bandwidth_add(RHVServer *vs, struct bandwidth_req *bw_req); 32 int bandwidth_exec(RHVServer *vs, char *const args[]); 31 33 void mark_reserved_slot_id(unsigned int slot_id); 32 34 #endif // __RH_TASK_BANDWIDTH_H -
src/rh-task-dbset.c
r0fe3338 rcb53713 14 14 #include "rh-ipset.h" 15 15 #include "rh-utils.h" 16 #include "rh-task-memset.h" 16 17 17 18 struct dbset_row { … … 51 52 } 52 53 53 gboolean *parse_dm_to_struct(GList **data_list, GdaDataModel *dm) { 54 gboolean 55 parse_dm_to_struct(GList **data_list, GdaDataModel *dm) { 54 56 gint row_id; 55 57 gint column_id; 56 GValue *value;58 const GValue *value; 57 59 gchar *str; 58 gchar *title;60 const gchar *title; 59 61 GdaNumeric *num; 60 62 struct dbset_row *row; … … 201 203 } 202 204 203 gboolean restore_set(GList **data_list, struct vserver *vs)205 gboolean restore_set(GList **data_list, RHVServer *vs) 204 206 { 205 207 GList *node = NULL; … … 234 236 req.username = row->username; 235 237 req.session_id = row->session_id; 236 parse_mac(row->mac, ðernet);237 memcpy(req.mac_address, ðernet, ETH_ALEN);238 parse_mac(row->mac, ethernet); 239 memcpy(req.mac_address, ethernet, ETH_ALEN); 238 240 239 241 req.session_start = row->session_start; … … 252 254 } 253 255 254 255 GdaConnection *openconn (GdaConnectionOptions options)256 GdaConnection * 257 openconn (GdaConnectionOptions options) 256 258 { 257 259 GdaConnection *connection = NULL; … … 302 304 303 305 /* Initialize */ 304 static void init ( struct vserver *vs)306 static void init (RHVServer *vs) 305 307 { 306 308 GdaConnection *connection; … … 335 337 336 338 /* Cleanup */ 337 static void cleanup ( struct vserver *vs)339 static void cleanup (RHVServer *vs) 338 340 { 339 341 /* Do nothing */ … … 341 343 342 344 /* Start session task */ 343 static int startsess ( struct vserver *vs, struct task_req *req)345 static int startsess (RHVServer *vs, struct task_req *req) 344 346 { 345 347 GdaConnection *connection; … … 353 355 connection = openconn (GDA_CONNECTION_OPTIONS_NONE); 354 356 355 strftime( &time_str, sizeof time_str, "%s", localtime(&req->session_start));356 strftime( &time_str2, sizeof time_str2, "%s",357 strftime(time_str, sizeof time_str, "%s", localtime(&req->session_start)); 358 strftime(time_str2, sizeof time_str2, "%s", 357 359 localtime(&req->session_timeout)); 358 360 … … 392 394 393 395 /* Stop session task */ 394 static int stopsess ( struct vserver *vs, struct task_req *req)396 static int stopsess (RHVServer *vs, struct task_req *req) 395 397 { 396 398 GdaConnection *connection; … … 428 430 429 431 /* Commit start session task */ 430 static int commitstartsess ( struct vserver *vs, struct task_req *req)432 static int commitstartsess (RHVServer *vs, struct task_req *req) 431 433 { 432 434 /* Do nothing or need to implement */ … … 434 436 435 437 /* Commit stop session task */ 436 static int commitstopsess ( struct vserver *vs, struct task_req *req)438 static int commitstopsess (RHVServer *vs, struct task_req *req) 437 439 { 438 440 /* Do nothing or need to implement */ … … 440 442 441 443 /* Rollback start session task */ 442 static int rollbackstartsess ( struct vserver *vs, struct task_req *req)444 static int rollbackstartsess (RHVServer *vs, struct task_req *req) 443 445 { 444 446 /* Do nothing or need to implement */ … … 446 448 447 449 /* Rollback stop session task */ 448 static int rollbackstopsess ( struct vserver *vs, struct task_req *req)450 static int rollbackstopsess (RHVServer *vs, struct task_req *req) 449 451 { 450 452 /* Do nothing or need to implement */ … … 466 468 }; 467 469 468 void rh_task_dbset_reg( struct main_server *ms) {470 void rh_task_dbset_reg(RHMainServer *ms) { 469 471 task_register(ms, &task_dbset); 470 472 } -
src/rh-task-dbset.h
rd5429ac rcb53713 7 7 #define __RH_TASK_DBSET_H 8 8 9 extern void rh_task_dbset_reg(struct main_server *ms); 9 #include "rh-server.h" 10 11 extern void rh_task_dbset_reg(RHMainServer *ms); 10 12 11 13 #endif // __RH_TASK_MEMSET_H -
src/rh-task-ipset.c
r91cc1f0 rcb53713 6 6 */ 7 7 8 #include <string.h> 8 9 #include <syslog.h> 9 10 … … 13 14 #include "rh-xmlrpc-cmd.h" 14 15 15 size_t set_cleanup(void *data) 16 static int 17 set_cleanup(void *data) 16 18 { 17 19 struct processing_set *process = (struct processing_set *) data; … … 40 42 DP("Found IP: %s in set, try logout", idtoip(process->vs->v_map, id)); 41 43 req.id = id; 42 memcpy(req.mac_address, &table[id].ethernet, ETH_ALEN);44 memcpy(req.mac_address, table[id].ethernet, ETH_ALEN); 43 45 req.req_opt = RH_RADIUS_TERM_NAS_REBOOT; 44 46 send_xmlrpc_stopacct(process->vs, id, RH_RADIUS_TERM_NAS_REBOOT); … … 60 62 61 63 /* Initialize */ 62 static void init ( struct vserver *vs)64 static void init (RHVServer *vs) 63 65 { 64 66 if (vs->vserver_config->init_flag == VS_RELOAD) … … 79 81 80 82 /* Cleanup */ 81 static void cleanup ( struct vserver *vs)83 static void cleanup (RHVServer *vs) 82 84 { 83 85 if (vs->vserver_config->init_flag == VS_RELOAD) … … 90 92 91 93 set_flush(vs->vserver_config->vserver_name); 92 93 rh_free(&(vs->v_set)); 94 rh_free((void **) &vs->v_set); 94 95 } 95 96 96 97 /* Start session task */ 97 static int startsess ( struct vserver *vs, struct task_req *req)98 static int startsess (RHVServer *vs, struct task_req *req) 98 99 { 99 100 int res = 0; … … 107 108 108 109 /* Stop session task */ 109 static int stopsess ( struct vserver *vs, struct task_req *req)110 static int stopsess (RHVServer *vs, struct task_req *req) 110 111 { 111 112 int res = 0; … … 119 120 120 121 /* Commit start session task */ 121 static int commitstartsess ( struct vserver *vs, struct task_req *req)122 static int commitstartsess (RHVServer *vs, struct task_req *req) 122 123 { 123 124 /* Do nothing or need to implement */ … … 125 126 126 127 /* Commit stop session task */ 127 static int commitstopsess ( struct vserver *vs, struct task_req *req)128 static int commitstopsess (RHVServer *vs, struct task_req *req) 128 129 { 129 130 /* Do nothing or need to implement */ … … 131 132 132 133 /* Rollback start session task */ 133 static int rollbackstartsess ( struct vserver *vs, struct task_req *req)134 static int rollbackstartsess (RHVServer *vs, struct task_req *req) 134 135 { 135 136 /* Do nothing or need to implement */ … … 137 138 138 139 /* Rollback stop session task */ 139 static int rollbackstopsess ( struct vserver *vs, struct task_req *req)140 static int rollbackstopsess (RHVServer *vs, struct task_req *req) 140 141 { 141 142 /* Do nothing or need to implement */ … … 157 158 }; 158 159 159 void rh_task_ipset_reg( struct main_server *ms) {160 void rh_task_ipset_reg(RHMainServer *ms) { 160 161 task_register(ms, &task_ipset); 161 162 } -
src/rh-task-ipset.h
rd5429ac rcb53713 7 7 #define __RH_TASK_MEMSET_H 8 8 9 extern void rh_task_ipset_reg(struct main_server *ms); 9 #include "rh-server.h" 10 11 extern void rh_task_ipset_reg(RHMainServer *ms); 10 12 11 13 #endif // __RH_TASK_MEMSET_H -
src/rh-task-iptables.c
r0fe3338 rcb53713 6 6 7 7 #include <stdlib.h> 8 #include <string.h> 8 9 #include <syslog.h> 9 10 #include <sys/types.h> … … 17 18 #include "rh-utils.h" 18 19 19 int iptables_exec( struct vserver *vs, char *const args[])20 int iptables_exec(RHVServer *vs, char *const args[]) 20 21 { 21 22 pid_t ws; … … 106 107 } 107 108 108 int iptables_start( struct vserver *vs)109 int iptables_start(RHVServer *vs) 109 110 { 110 111 char *args[3]; … … 119 120 } 120 121 121 int iptables_stop( struct vserver *vs)122 int iptables_stop(RHVServer *vs) 122 123 { 123 124 char *args[3]; … … 145 146 146 147 /* Initialize */ 147 static void init ( struct vserver *vs)148 static void init (RHVServer *vs) 148 149 { 149 150 logmsg(RH_LOG_NORMAL, "[%s] Task IPTABLES initialize..", … … 154 155 155 156 /* Cleanup */ 156 static int cleanup (struct vserver *vs)157 static void cleanup (RHVServer *vs) 157 158 { 158 159 logmsg(RH_LOG_NORMAL, "[%s] Task IPTABLES cleanup..", … … 163 164 164 165 /* Start session task */ 165 static int startsess ( struct vserver *vs, struct task_req *req)166 static int startsess (RHVServer *vs, struct task_req *req) 166 167 { 167 168 /* Do nothing */ … … 170 171 171 172 /* Stop session task */ 172 static int stopsess ( struct vserver *vs, struct task_req *req)173 static int stopsess (RHVServer *vs, struct task_req *req) 173 174 { 174 175 /* Do nothing */ … … 177 178 178 179 /* Commit start session task */ 179 static int commitstartsess ( struct vserver *vs, struct task_req *req)180 static int commitstartsess (RHVServer *vs, struct task_req *req) 180 181 { 181 182 /* Do nothing or need to implement */ … … 183 184 184 185 /* Commit stop session task */ 185 static int commitstopsess ( struct vserver *vs, struct task_req *req)186 static int commitstopsess (RHVServer *vs, struct task_req *req) 186 187 { 187 188 /* Do nothing or need to implement */ … … 189 190 190 191 /* Rollback start session task */ 191 static int rollbackstartsess ( struct vserver *vs, struct task_req *req)192 static int rollbackstartsess (RHVServer *vs, struct task_req *req) 192 193 { 193 194 /* Do nothing or need to implement */ … … 195 196 196 197 /* Rollback stop session task */ 197 static int rollbackstopsess ( struct vserver *vs, struct task_req *req)198 static int rollbackstopsess (RHVServer *vs, struct task_req *req) 198 199 { 199 200 /* Do nothing or need to implement */ … … 215 216 }; 216 217 217 void rh_task_iptables_reg( struct main_server *ms) {218 void rh_task_iptables_reg(RHMainServer *ms) { 218 219 task_register(ms, &taskiptables); 219 220 } -
src/rh-task-iptables.h
rebf1b31 rcb53713 7 7 #define __RH_TASK_IPTABLES_H 8 8 9 extern void rh_task_iptables_reg(struct main_server *ms); 9 #include "rh-server.h" 10 11 extern void rh_task_iptables_reg(RHMainServer *ms); 10 12 11 13 #endif // __RH_TASK_BANDWIDTH_H -
src/rh-task-memset.c
r9cc499e rcb53713 6 6 7 7 #include <stdlib.h> 8 #include <string.h> 8 9 #include <syslog.h> 9 10 #include <time.h> … … 13 14 #include "rh-ipset.h" 14 15 15 GList *member_get_node_by_id( struct vserver *vs, uint32_t id)16 GList *member_get_node_by_id(RHVServer *vs, uint32_t id) 16 17 { 17 18 GList *runner = g_list_first(vs->v_map->members); … … 30 31 } 31 32 32 gint idcmp(struct rahunas_member *a, struct rahunas_member *b) 33 { 34 if (a != NULL && b != NULL) 35 return (a->id - b->id); 33 static gint 34 idcmp(gconstpointer a, gconstpointer b) 35 { 36 struct rahunas_member *rh_a = (struct rahunas_member *) a; 37 struct rahunas_member *rh_b = (struct rahunas_member *) b; 38 39 if (rh_a != NULL && rh_b != NULL) 40 return (rh_a->id - rh_b->id); 36 41 37 42 return -1; … … 53 58 54 59 /* Initialize */ 55 static void init ( struct vserver *vs)60 static void init (RHVServer *vs) 56 61 { 57 62 int size; … … 79 84 80 85 /* Cleanup */ 81 static void cleanup ( struct vserver *vs)86 static void cleanup (RHVServer *vs) 82 87 { 83 88 GList *runner = NULL; … … 109 114 g_list_free(vs->v_map->members); 110 115 111 rh_free(&(vs->v_map->members)); 112 rh_free(&(vs->v_map)); 113 } 114 115 return 0; 116 rh_free((void **) &vs->v_map->members); 117 rh_free((void **) &vs->v_map); 118 } 116 119 } 117 120 118 121 /* Start session task */ 119 static int startsess ( struct vserver *vs, struct task_req *req)122 static int startsess (RHVServer *vs, struct task_req *req) 120 123 { 121 124 uint32_t id = req->id; … … 157 160 member->username = strdup(req->username); 158 161 if (!member->username) 159 member->username = termstring;162 member->username = strdup(termstring); 160 163 161 164 member->session_id = strdup(req->session_id); 162 165 if (!member->session_id) 163 member->session_id = termstring;166 member->session_id = strdup(termstring); 164 167 165 168 member->serviceclass_name = NULL; … … 196 199 197 200 /* Stop session task */ 198 static int stopsess ( struct vserver *vs, struct task_req *req)201 static int stopsess (RHVServer *vs, struct task_req *req) 199 202 { 200 203 uint32_t id = req->id; … … 227 230 } 228 231 if (!member->username) 229 member->username = termstring;232 member->username = strdup(termstring); 230 233 231 234 if (!member->session_id) 232 member->session_id = termstring;235 member->session_id = strdup(termstring); 233 236 234 237 logmsg(RH_LOG_NORMAL, "[%s] Session Stop (%s), User: %s, IP: %s, " … … 249 252 250 253 /* Commit start session task */ 251 static int commitstartsess ( struct vserver *vs, struct task_req *req)254 static int commitstartsess (RHVServer *vs, struct task_req *req) 252 255 { 253 256 /* Do nothing or need to implement */ … … 255 258 256 259 /* Commit stop session task */ 257 static int commitstopsess ( struct vserver *vs, struct task_req *req)260 static int commitstopsess (RHVServer *vs, struct task_req *req) 258 261 { 259 262 /* Do nothing or need to implement */ … … 261 264 262 265 /* Rollback start session task */ 263 static int rollbackstartsess ( struct vserver *vs, struct task_req *req)266 static int rollbackstartsess (RHVServer *vs, struct task_req *req) 264 267 { 265 268 /* Do nothing or need to implement */ … … 267 270 268 271 /* Rollback stop session task */ 269 static int rollbackstopsess ( struct vserver *vs, struct task_req *req)272 static int rollbackstopsess (RHVServer *vs, struct task_req *req) 270 273 { 271 274 /* Do nothing or need to implement */ … … 287 290 }; 288 291 289 void rh_task_memset_reg( struct main_server *ms) {292 void rh_task_memset_reg(RHMainServer *ms) { 290 293 task_register(ms, &task_memset); 291 294 } -
src/rh-task-memset.h
rd5429ac rcb53713 7 7 #define __RH_TASK_MEMSET_H 8 8 9 extern void rh_task_memset_reg(struct main_server *ms); 9 #include <glib.h> 10 #include "rh-server.h" 10 11 11 GList *member_get_node_by_id(struct vserver *vs, uint32_t id); 12 gint idcmp(struct rahunas_member *a, struct rahunas_member *b); 12 extern void rh_task_memset_reg(RHMainServer *ms); 13 14 GList *member_get_node_by_id(RHVServer *vs, uint32_t id); 13 15 #endif // __RH_TASK_MEMSET_H 14 16 -
src/rh-task-serviceclass.c
r9cc499e rcb53713 1 1 /** 2 * RahuNAS task serviceclass implementation 2 * RahuNAS task serviceclass implementation 3 3 * Author: Neutron Soutmun <neo.neutron@gmail.com> 4 4 * Date: 2010-07-29 … … 18 18 { 19 19 uint32_t slot_id = 0; 20 time_t random_time; 20 time_t random_time; 21 21 int retry = 30; 22 22 char select_cmd[256]; … … 56 56 free_data_list(data_list); 57 57 break; 58 } else { 58 } else { 59 59 // Not available, retry 60 60 free_data_list(data_list); … … 86 86 logmsg(RH_LOG_NORMAL, "Service Class: Flushing set ..."); 87 87 set_flush (SERVICECLASS_SET_NAME); 88 rh_free(&rh_serviceclass_set); 88 rh_free(&rh_serviceclass_set); 89 89 } 90 90 … … 93 93 94 94 /* Initialize */ 95 static void init ( struct vserver *vs)95 static void init (RHVServer *vs) 96 96 { 97 97 } 98 98 99 99 /* Cleanup */ 100 static void cleanup ( struct vserver *vs)100 static void cleanup (RHVServer *vs) 101 101 { 102 102 } 103 103 104 104 /* Start session task */ 105 static int startsess ( struct vserver *vs, struct task_req *req)105 static int startsess (RHVServer *vs, struct task_req *req) 106 106 { 107 107 struct serviceclass *sc = NULL; … … 199 199 200 200 /* Stop session task */ 201 static int stopsess ( struct vserver *vs, struct task_req *req)201 static int stopsess (RHVServer *vs, struct task_req *req) 202 202 { 203 203 struct serviceclass *sc = NULL; … … 270 270 271 271 /* Commit start session task */ 272 static int commitstartsess ( struct vserver *vs, struct task_req *req)272 static int commitstartsess (RHVServer *vs, struct task_req *req) 273 273 { 274 274 /* Do nothing or need to implement */ … … 276 276 277 277 /* Commit stop session task */ 278 static int commitstopsess ( struct vserver *vs, struct task_req *req)278 static int commitstopsess (RHVServer *vs, struct task_req *req) 279 279 { 280 280 /* Do nothing or need to implement */ … … 282 282 283 283 /* Rollback start session task */ 284 static int rollbackstartsess ( struct vserver *vs, struct task_req *req)284 static int rollbackstartsess (RHVServer *vs, struct task_req *req) 285 285 { 286 286 /* Do nothing or need to implement */ … … 288 288 289 289 /* Rollback stop session task */ 290 static int rollbackstopsess ( struct vserver *vs, struct task_req *req)290 static int rollbackstopsess (RHVServer *vs, struct task_req *req) 291 291 { 292 292 /* Do nothing or need to implement */ … … 308 308 }; 309 309 310 void rh_task_serviceclass_reg( struct main_server *ms) {310 void rh_task_serviceclass_reg(RHMainServer *ms) { 311 311 task_register(ms, &task_serviceclass); 312 312 } -
src/rh-task-serviceclass.h
r43154f8 rcb53713 1 1 /** 2 * RahuNAS task serviceclass implementation 2 * RahuNAS task serviceclass implementation 3 3 * Author: Neutron Soutmun <neo.neutron@gmail.com> 4 4 * Date: 2010-07-29 … … 7 7 #define __RH_TASK_SERVICECLASS_H 8 8 9 extern void rh_task_serviceclass_reg(struct main_server *ms); 9 #include "rh-server.h" 10 11 extern void rh_task_serviceclass_reg(RHMainServer *ms); 10 12 11 13 #endif // __RH_TASK_SERVICECLASS_H -
src/rh-task.c
r43154f8 rcb53713 13 13 #include "rh-task-bandwidth.h" 14 14 15 void task_register( struct main_server *ms, struct task *task)15 void task_register(RHMainServer *ms, struct task *task) 16 16 { 17 17 GList *chk = NULL; … … 46 46 } 47 47 48 void rh_task_register( struct main_server *ms)48 void rh_task_register(RHMainServer *ms) 49 49 { 50 50 static int task_registered = 0; … … 67 67 } 68 68 69 void rh_task_unregister( struct main_server *ms) {69 void rh_task_unregister(RHMainServer *ms) { 70 70 g_list_free(ms->task_list); 71 71 } 72 72 73 int rh_task_startservice( struct main_server *ms)73 int rh_task_startservice(RHMainServer *ms) 74 74 { 75 75 GList *runner = g_list_first(ms->task_list); … … 88 88 } 89 89 90 int rh_task_stopservice( struct main_server *ms)90 int rh_task_stopservice(RHMainServer *ms) 91 91 { 92 92 GList *runner = g_list_last(ms->task_list); … … 105 105 } 106 106 107 void rh_task_init ( struct main_server *ms, struct vserver *vs)107 void rh_task_init (RHMainServer *ms, RHVServer *vs) 108 108 { 109 109 GList *runner = g_list_first(ms->task_list); … … 119 119 } 120 120 121 void rh_task_cleanup( struct main_server *ms, struct vserver *vs)121 void rh_task_cleanup(RHMainServer *ms, RHVServer *vs) 122 122 { 123 123 GList *runner = g_list_last(ms->task_list); … … 133 133 } 134 134 135 int rh_task_startsess( struct vserver *vs, struct task_req *req)135 int rh_task_startsess(RHVServer *vs, struct task_req *req) 136 136 { 137 struct main_server *ms = &rh_main_server_instance;137 RHMainServer *ms = &rh_main_server_instance; 138 138 GList *runner = g_list_first(ms->task_list); 139 139 struct task *ltask = NULL; … … 150 150 } 151 151 152 int rh_task_stopsess( struct vserver *vs, struct task_req *req)152 int rh_task_stopsess(RHVServer *vs, struct task_req *req) 153 153 { 154 struct main_server *ms = &rh_main_server_instance;154 RHMainServer *ms = &rh_main_server_instance; 155 155 GList *runner = g_list_last(ms->task_list); 156 156 struct task *ltask = NULL; … … 167 167 } 168 168 169 int rh_task_commitstartsess( struct vserver *vs, struct task_req *req)169 int rh_task_commitstartsess(RHVServer *vs, struct task_req *req) 170 170 { 171 171 } 172 172 173 int rh_task_commitstopsess( struct vserver *vs, struct task_req *req)173 int rh_task_commitstopsess(RHVServer *vs, struct task_req *req) 174 174 { 175 175 } 176 176 177 int rh_task_rollbackstartsess( struct vserver *vs, struct task_req *req)177 int rh_task_rollbackstartsess(RHVServer *vs, struct task_req *req) 178 178 { 179 179 } 180 180 181 int rh_task_rollbackstopsess( struct vserver *vs, struct task_req *req)181 int rh_task_rollbackstopsess(RHVServer *vs, struct task_req *req) 182 182 { 183 183 } -
src/rh-task.h
r43154f8 rcb53713 40 40 41 41 /* Initialize */ 42 void (*init) ( struct vserver*vs);42 void (*init) (RHVServer *vs); 43 43 44 44 /* Cleanup */ 45 void (*cleanup) ( struct vserver*vs);45 void (*cleanup) (RHVServer *vs); 46 46 47 47 /* Start session task */ 48 int (*startsess) ( struct vserver*vs, struct task_req *req);48 int (*startsess) (RHVServer *vs, struct task_req *req); 49 49 50 50 /* Stop session task */ 51 int (*stopsess) ( struct vserver*vs, struct task_req *req);51 int (*stopsess) (RHVServer *vs, struct task_req *req); 52 52 53 53 /* Commit start session task */ 54 int (*commitstartsess) ( struct vserver*vs, struct task_req *req);54 int (*commitstartsess) (RHVServer *vs, struct task_req *req); 55 55 56 56 /* Commit stop session task */ 57 int (*commitstopsess) ( struct vserver*vs, struct task_req *req);57 int (*commitstopsess) (RHVServer *vs, struct task_req *req); 58 58 59 59 /* Rollback start session task */ 60 int (*rollbackstartsess) ( struct vserver*vs, struct task_req *req);60 int (*rollbackstartsess) (RHVServer *vs, struct task_req *req); 61 61 62 62 /* Rollback stop session task */ 63 int (*rollbackstopsess) ( struct vserver*vs, struct task_req *req);63 int (*rollbackstopsess) (RHVServer *vs, struct task_req *req); 64 64 }; 65 65 66 extern void task_register( struct main_server *ms, struct task *task);66 extern void task_register(RHMainServer *ms, struct task *task); 67 67 68 void rh_task_register (struct main_server *ms);69 void rh_task_unregister (struct main_server *ms);70 int rh_task_startservice (struct main_server *ms);71 int rh_task_stopservice (struct main_server *ms);72 void rh_task_init (struct main_server *ms, struct vserver*vs);73 void rh_task_cleanup (struct main_server *ms, struct vserver*vs);74 int rh_task_startsess (struct vserver*vs, struct task_req *req);75 int rh_task_stopsess (struct vserver*vs, struct task_req *req);76 int rh_task_commitstartsess (struct vserver*vs, struct task_req *req);77 int rh_task_commitstopsess (struct vserver*vs, struct task_req *req);78 int rh_task_rollbackstartsess (struct vserver*vs, struct task_req *req);79 int rh_task_rollbackstopsess (struct vserver*vs, struct task_req *req);68 void rh_task_register (RHMainServer *ms); 69 void rh_task_unregister (RHMainServer *ms); 70 int rh_task_startservice (RHMainServer *ms); 71 int rh_task_stopservice (RHMainServer *ms); 72 void rh_task_init (RHMainServer *ms, RHVServer *vs); 73 void rh_task_cleanup (RHMainServer *ms, RHVServer *vs); 74 int rh_task_startsess (RHVServer *vs, struct task_req *req); 75 int rh_task_stopsess (RHVServer *vs, struct task_req *req); 76 int rh_task_commitstartsess (RHVServer *vs, struct task_req *req); 77 int rh_task_commitstopsess (RHVServer *vs, struct task_req *req); 78 int rh_task_rollbackstartsess (RHVServer *vs, struct task_req *req); 79 int rh_task_rollbackstopsess (RHVServer *vs, struct task_req *req); 80 80 81 81 #endif // __RH_TASK_H -
src/rh-utils.c
rc576556 rcb53713 5 5 */ 6 6 7 #include <string.h> 7 8 #include <syslog.h> 8 9 #include <glib.h> … … 41 42 } 42 43 43 const char *rh_string_get_sep(const char *haystack, const char *sep, 44 unsigned short idx)44 gchar *rh_string_get_sep(const char *haystack, const char *sep, 45 unsigned short idx) 45 46 { 46 char*result = NULL;47 gchar *pStart = NULL;48 gchar *pEnd = NULL;49 gchar *pLast = NULL;47 gchar *result = NULL; 48 const gchar *pStart = NULL; 49 const gchar *pEnd = NULL; 50 const gchar *pLast = NULL; 50 51 unsigned short current_idx = 0; 51 52 unsigned short isFound = 0; … … 136 137 fprintf(stderr, "%s : %s\n", timemsg(), p); 137 138 138 rh_free( &p);139 rh_free( &np);139 rh_free((void **) &p); 140 rh_free((void **) &np); 140 141 } 141 142 … … 181 182 } 182 183 183 c har *idtoip(struct rahunas_map *map, uint32_t id) {184 const char *idtoip(struct rahunas_map *map, uint32_t id) { 184 185 struct in_addr sess_addr; 185 186 -
src/rh-utils.h
rd5429ac rcb53713 14 14 void rh_free(void **data); 15 15 16 const char *rh_string_get_sep(const char *haystack, const char *sep, 17 unsigned short idx);16 gchar *rh_string_get_sep(const char *haystack, const char *sep, 17 unsigned short idx); 18 18 int rh_openlog(const char *filename); 19 19 int rh_closelog(int fd); … … 23 23 24 24 uint32_t iptoid(struct rahunas_map *map, const char *ip); 25 c har *idtoip(struct rahunas_map *map, uint32_t id);25 const char *idtoip(struct rahunas_map *map, uint32_t id); 26 26 27 27 #endif // __RH_UTILS_H -
src/rh-xmlrpc-cmd.c
r25f5f8d rcb53713 10 10 #include "rh-task-memset.h" 11 11 12 int send_xmlrpc_stopacct( struct vserver *vs, uint32_t id, int cause) {12 int send_xmlrpc_stopacct(RHVServer *vs, uint32_t id, int cause) { 13 13 GNetXmlRpcClient *client = NULL; 14 14 gchar *reply = NULL; -
src/rh-xmlrpc-cmd.h
rd5429ac rcb53713 8 8 #include "rh-radius.h" 9 9 10 int send_xmlrpc_stopacct( struct vserver *vs, uint32_t id, int cause);10 int send_xmlrpc_stopacct(RHVServer *vs, uint32_t id, int cause); 11 11 12 12 #endif // __RH_XMLRPC_CMD_H -
src/rh-xmlrpc-server.c
r9cc499e rcb53713 8 8 #include <stdio.h> 9 9 #include <stdlib.h> 10 #include <string.h> 11 #include <pthread.h> 10 12 #include "rahunasd.h" 13 #include "rh-server.h" 11 14 #include "rh-xmlrpc-server.h" 12 15 #include "rh-radius.h" … … 24 27 gchar **reply_string) 25 28 { 26 struct main_server *ms = (struct main_server *)user_data;27 struct vserver*vs = NULL;29 RHMainServer *ms = (RHMainServer *)user_data; 30 RHVServer *vs = NULL; 28 31 unsigned char ethernet[ETH_ALEN] = {0,0,0,0,0,0}; 29 32 struct task_req req; … … 41 44 struct rahunas_member *member = NULL; 42 45 46 pthread_mutex_lock (&RHMtxLock); 47 43 48 if (param == NULL) 44 49 goto out; … … 77 82 /* Check if client already registered */ 78 83 member_node = member_get_node_by_id(vs, id); 84 79 85 if (member_node != NULL) 80 86 goto greeting; … … 84 90 req.username = username; 85 91 req.session_id = session_id; 86 parse_mac(mac_address, ðernet);87 memcpy(req.mac_address, ðernet, ETH_ALEN);92 parse_mac(mac_address, ethernet); 93 memcpy(req.mac_address, ethernet, ETH_ALEN); 88 94 req.session_start = 0; 89 95 req.session_timeout = 0; … … 124 130 out: 125 131 *reply_string = g_strdup("Invalid input parameters"); 126 goto cleanup;127 132 128 133 cleanup: 134 pthread_mutex_unlock (&RHMtxLock); 135 129 136 DP("RPC Reply: %s", *reply_string); 130 137 g_free(ip); … … 146 153 gchar **reply_string) 147 154 { 148 struct main_server *ms = (struct main_server *)user_data;149 struct vserver*vs = NULL;155 RHMainServer *ms = (RHMainServer *)user_data; 156 RHVServer *vs = NULL; 150 157 struct task_req req; 151 158 gchar *ip = NULL; … … 160 167 struct rahunas_member *member = NULL; 161 168 169 pthread_mutex_lock (&RHMtxLock); 170 162 171 if (param == NULL) 163 172 goto out; … … 187 196 } 188 197 189 parse_mac(mac_address, ðernet);190 memcpy(req.mac_address, ðernet, ETH_ALEN);198 parse_mac(mac_address, ethernet); 199 memcpy(req.mac_address, ethernet, ETH_ALEN); 191 200 192 201 member_node = member_get_node_by_id(vs, id); … … 227 236 out: 228 237 *reply_string = g_strdup("Invalid input parameters"); 229 goto cleanup;230 238 231 239 cleanup: 240 pthread_mutex_unlock (&RHMtxLock); 241 232 242 DP("RPC Reply: %s", *reply_string); 233 243 g_free(ip); … … 244 254 gchar **reply_string) 245 255 { 246 struct main_server *ms = (struct main_server *)user_data;247 struct vserver*vs = NULL;256 RHMainServer *ms = (RHMainServer *)user_data; 257 RHVServer *vs = NULL; 248 258 gchar *ip = NULL; 249 259 gchar *vserver_id = NULL; … … 251 261 GList *member_node = NULL; 252 262 struct rahunas_member *member = NULL; 263 264 pthread_mutex_lock (&RHMtxLock); 253 265 254 266 if (param == NULL) … … 305 317 out: 306 318 *reply_string = g_strdup("Invalid input parameters"); 307 goto cleanup;308 319 309 320 cleanup: 321 pthread_mutex_unlock (&RHMtxLock); 322 310 323 DP("RPC Reply: %s", *reply_string); 311 324 g_free(ip); -
tools/Makefile.am
r3cbe0c2 rcb53713 15 15 -I$(top_srcdir)/lcfg \ 16 16 -I$(top_srcdir)/xmlrpc \ 17 $(LIBGNET_CFLAGS) 17 $(LIBGNET_CFLAGS) \ 18 -D_GNU_SOURCE 18 19 squid_auth_helper_LDADD = \ 19 20 $(top_builddir)/lcfg/liblcfg.a \
