Changeset cb5371333692435b9818b9043a26980e404202d1

Show
Ignore:
Timestamp:
06/20/11 22:46:42 (11 months ago)
Author:
Neutron Soutmun <neo.neutron@…>
Children:
4b5d05b46785f944e0d4ba506afeb9df499a6aac
Parents:
215b3eba66c465438d9ed78037766d0f7f7b4dea
git-committer:
Neutron Soutmun <neo.neutron@…> (06/20/11 22:46:42)
Message:

Cherry-picks the code from 0.1.x branch

  • The codes have been refactor and fix the compiler warnings.
  • Adjust the codes for new API changes from 0.1.x branch.
Files:
33 modified

Legend:

Unmodified
Added
Removed
  • configure.ac

    r0249086 rcb53713  
    2929AC_SUBST(LIBGNET_LIBS) 
    3030 
    31 dnl Check for LibGDA 3.x 
    32 LIBGDA_REQ=3.0.2 
     31dnl Check for LibGDA 4.x 
     32LIBGDA_REQ=4.0 
    3333PKG_CHECK_MODULES(LIBGDA, [ libgda-4.0 >= $LIBGDA_REQ ], , [ AC_MSG_ERROR([LibGDA is required]) ]) 
    3434 
  • src/Makefile.am

    r43154f8 rcb53713  
    1717  -DRAHUNAS_RUN_DIR=\"$(localstatedir)/run/\" \ 
    1818  -DRAHUNAS_FIREWALL_WRAPPER=\"$(sbindir)/rahunas-firewall\" \ 
    19   -DRAHUNAS_BANDWIDTH_WRAPPER=\"$(sbindir)/rahunas-bandwidth\" 
     19  -DRAHUNAS_BANDWIDTH_WRAPPER=\"$(sbindir)/rahunas-bandwidth\" \ 
     20  -D_GNU_SOURCE 
    2021 
    2122rahunasd_SOURCES = \ 
  • src/rahunasd.c

    r43154f8 rcb53713  
    2727pid_t pid, sid; 
    2828 
    29 struct main_server rh_main_server_instance = { 
     29pthread_mutex_t RHMtxLock        = PTHREAD_MUTEX_INITIALIZER; 
     30pthread_mutex_t RHPollingMtxLock = PTHREAD_MUTEX_INITIALIZER; 
     31pthread_cond_t  RHPollingCond    = PTHREAD_COND_INITIALIZER; 
     32 
     33static void rh_exit               (void); 
     34static void rh_reload             (void); 
     35static int  expired_check         (void *data); 
     36static int  polling_expired_check (RHMainServer *ms, RHVServer *vs); 
     37static int  do_task_init          (RHMainServer *ms, RHVServer *vs); 
     38static int  do_task_cleanup       (RHMainServer *ms, RHVServer *vs); 
     39static int  do_task_stopservice   (RHMainServer *ms, RHVServer *vs); 
     40static int  do_vserver_reload     (RHMainServer *ms, RHVServer *vs); 
     41static int  do_vserver_init_done  (RHMainServer *ms, RHVServer *vs); 
     42static int  do_serviceclass_init  (RHMainServer *ms, RHSvClass *sc); 
     43static int  do_serviceclass_reload(RHMainServer *ms, RHSvClass *sc); 
     44static void *polling_service      (void *data); 
     45 
     46RHMainServer rh_main_server_instance = { 
    3047  .vserver_list = NULL, 
    3148  .serviceclass_list = NULL, 
    3249  .task_list = NULL, 
    3350}; 
    34 struct main_server *rh_main_server = &rh_main_server_instance; 
     51RHMainServer *rh_main_server = &rh_main_server_instance; 
    3552 
    3653void rh_sighandler(int sig) 
     
    6380} 
    6481 
    65 size_t expired_check(void *data) 
     82static int 
     83expired_check(void *data) 
    6684{ 
    6785  struct processing_set *process = (struct processing_set *) data; 
     
    83101 
    84102  while (runner != NULL) { 
     103    time_t time_now = time (NULL); 
     104 
    85105    member = (struct rahunas_member *)runner->data; 
    86106    runner = g_list_next(runner); 
     
    94114    DP("Processing id = %d", id); 
    95115 
    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), 
    98117         process->vs->vserver_config->idle_timeout); 
    99118 
    100     if ((time(NULL) - d->timestamp) > 
     119    if (time_now - d->timestamp > 
    101120         process->vs->vserver_config->idle_timeout) { 
    102121      // Idle Timeout 
     
    105124      memcpy(req.mac_address, &d->ethernet, ETH_ALEN); 
    106125      req.req_opt = RH_RADIUS_TERM_IDLE_TIMEOUT; 
     126 
    107127      send_xmlrpc_stopacct(process->vs, id,  
    108128                           RH_RADIUS_TERM_IDLE_TIMEOUT); 
     129 
     130      pthread_mutex_lock (&RHMtxLock); 
    109131      res = rh_task_stopsess(process->vs, &req); 
     132      pthread_mutex_unlock (&RHMtxLock); 
    110133    } else if (member->session_timeout != 0 &&  
    111                time(NULL) > member->session_timeout) { 
     134               time_now > member->session_timeout) { 
    112135      // Session Timeout (Expired) 
    113136      DP("Found IP: %s session timeout", idtoip(process->vs->v_map, id)); 
     
    115138      memcpy(req.mac_address, &d->ethernet, ETH_ALEN); 
    116139      req.req_opt = RH_RADIUS_TERM_SESSION_TIMEOUT; 
     140 
    117141      send_xmlrpc_stopacct(process->vs, id,  
    118142                           RH_RADIUS_TERM_SESSION_TIMEOUT); 
     143 
     144      pthread_mutex_lock (&RHMtxLock); 
    119145      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 
     151static int 
     152polling_expired_check (RHMainServer *ms, RHVServer *vs) { 
     153  walk_through_set(expired_check, vs); 
    126154  return 0; 
    127155} 
    128156 
    129157gboolean 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    } 
    140164  return TRUE; 
    141165} 
    142166 
    143 void rh_exit() 
    144 { 
    145   walk_through_vserver(&rh_task_cleanup, rh_main_server); 
     167static void 
     168rh_exit (void) 
     169{ 
     170  walk_through_vserver(do_task_cleanup, rh_main_server); 
    146171  rh_task_stopservice(rh_main_server); 
    147172  rh_task_unregister(rh_main_server); 
    148173  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 
     177static void 
     178rh_reload (void) 
    153179{ 
    154180  logmsg(RH_LOG_NORMAL, "Reloading config files"); 
     
    187213  } 
    188214 
    189   walk_through_serviceclass(&serviceclass_reload, rh_main_server); 
     215  walk_through_serviceclass(do_serviceclass_reload, rh_main_server); 
    190216  serviceclass_unused_cleanup(rh_main_server); 
    191217 
    192   walk_through_vserver(&vserver_reload, rh_main_server); 
     218  walk_through_vserver(do_vserver_reload, rh_main_server); 
    193219  vserver_unused_cleanup(rh_main_server); 
    194220   
     
    306332 
    307333 
    308 int main(int argc, char **argv)  
     334int main(int argc, char *argv[]) 
    309335{ 
    310336  gchar* addr = "localhost"; 
     
    328354  GNetXmlRpcServer *server = NULL; 
    329355  GMainLoop* main_loop     = NULL; 
     356  pthread_t  polling_tid; 
    330357 
    331358  signal(SIGTERM, &rh_sighandler); 
     
    384411 
    385412  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); 
    389416 
    390417  gnet_init(); 
     
    396423  if (!server) { 
    397424    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); 
    399426    exit (EXIT_FAILURE); 
    400427  } 
     
    418445 
    419446  g_timeout_add_seconds (rh_main_server->main_config->polling_interval,  
    420                          polling, rh_main_server); 
    421  
     447                         polling, NULL); 
    422448  
    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 
    424461  logmsg(RH_LOG_NORMAL, "Ready to serve..."); 
    425462  g_main_loop_run(main_loop); 
     
    427464  exit(EXIT_SUCCESS); 
    428465} 
     466 
     467static int 
     468do_task_init (RHMainServer *ms, RHVServer *vs) 
     469{ 
     470  rh_task_init (ms, vs); 
     471  return 0; 
     472} 
     473 
     474static int 
     475do_task_cleanup (RHMainServer *ms, RHVServer *vs) 
     476{ 
     477  rh_task_cleanup (ms, vs); 
     478  return 0; 
     479} 
     480 
     481static int 
     482do_task_stopservice (RHMainServer *ms, RHVServer *vs) 
     483{ 
     484  rh_task_stopservice (ms); 
     485  return 0; 
     486} 
     487 
     488static int 
     489do_vserver_reload (RHMainServer *ms, RHVServer *vs) 
     490{ 
     491  vserver_reload (ms, vs); 
     492  return 0; 
     493} 
     494 
     495static int 
     496do_vserver_init_done (RHMainServer *ms, RHVServer *vs) 
     497{ 
     498  vserver_init_done (ms, vs); 
     499  return 0; 
     500} 
     501 
     502static int 
     503do_serviceclass_init  (RHMainServer *ms, RHSvClass *sc) 
     504{ 
     505  serviceclass_init (ms, sc); 
     506  return 0; 
     507} 
     508 
     509static int 
     510do_serviceclass_reload(RHMainServer *ms, RHSvClass *sc) 
     511{ 
     512  serviceclass_reload (ms, sc); 
     513  return 0; 
     514} 
     515 
     516static void * 
     517polling_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  
    1212#include <netinet/in.h> 
    1313#include <arpa/inet.h> 
     14#include <pthread.h> 
    1415#include <time.h> 
    1516#include <linux/if_ether.h> 
     
    2425 
    2526extern const char *termstring;  
    26 extern struct main_server rh_main_server_instance; 
     27extern RHMainServer rh_main_server_instance; 
     28extern pthread_mutex_t RHMtxLock; 
    2729 
    2830enum RH_LOG { 
  • src/rh-config.c

    r6e30b68 rcb53713  
    44 * Date:   2008-11-26 
    55 */ 
     6 
     7#include <string.h> 
     8#include <stdlib.h> 
    69#include <ctype.h> 
    7 #include <stdlib.h> 
    8 #include <string.h> 
    910#include <syslog.h> 
    1011#include <dirent.h> 
     
    298299 
    299300   
    300   rh_free(&clone_key); 
     301  rh_free((void **) &clone_key); 
    301302 
    302303  return lcfg_status_ok; 
     
    349350} 
    350351 
    351 int get_vservers_config(const char *conf_dir, struct main_server *server) 
     352int get_vservers_config(const char *conf_dir, RHMainServer *server) 
    352353{ 
    353354  DIR *dp; 
     
    411412int cleanup_vserver_config(struct rahunas_vserver_config *config) 
    412413{ 
    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); 
    446447 
    447448  return 0; 
    448449} 
    449450 
    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)); 
     451int 
     452cleanup_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); 
    457459 
    458460  return 0; 
     
    461463int cleanup_mainserver_config(struct rahunas_main_config *config) 
    462464{ 
    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); 
    467469 
    468470  return 0; 
  • src/rh-config.h

    r43154f8 rcb53713  
    130130int get_config(const char *cfg_file, union rahunas_config *config); 
    131131int 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); 
     132int get_vservers_config(const char *conf_dir, RHMainServer *server); 
     133int get_serviceclass_config(const char *conf_dir, RHMainServer *server); 
    134134int cleanup_vserver_config(struct rahunas_vserver_config *config); 
    135135int cleanup_serviceclass_config(struct rahunas_serviceclass_config *config); 
  • src/rh-ipset.c

    r43154f8 rcb53713  
    77#include <stdio.h> 
    88#include <stdlib.h> 
     9#include <string.h> 
    910#include <errno.h> 
    1011#include <unistd.h> 
     
    107108} 
    108109 
    109 int kernel_getfrom_handleerrno(void *data, size_t * size) 
     110int kernel_getfrom_handleerrno(void *data, socklen_t * size) 
    110111{ 
    111112  int res = wrapped_getsockopt(data, size); 
     
    234235  unsigned char mac[ETH_ALEN] = {0,0,0,0,0,0}; 
    235236  parse_ip(adtip, &ip);   
    236   parse_mac(adtmac, &mac); 
     237  parse_mac(adtmac, mac); 
    237238 
    238239  return set_adtip_nb(rahunas_set, &ip, mac, op); 
     
    381382} 
    382383 
    383 size_t load_set_list(struct vserver *vs, const char name[IP_SET_MAXNAMELEN], 
     384size_t load_set_list(RHVServer *vs, const char name[IP_SET_MAXNAMELEN], 
    384385          ip_set_id_t *idx, 
    385386          unsigned op, unsigned cmd) 
     
    448449} 
    449450 
    450 int get_header_from_set (struct vserver *vs) 
     451int get_header_from_set (RHVServer *vs) 
    451452{ 
    452453  struct ip_set_req_rahunas_create *header = NULL; 
     
    510511} 
    511512 
    512 int walk_through_set (int (*callback)(void *), struct vserver *vs) 
     513int walk_through_set (int (*callback)(void *), RHVServer *vs) 
    513514{ 
    514515  struct processing_set process; 
     
    517518  socklen_t size, req_size; 
    518519  int res = 0; 
    519     
    520   check_protocolversion (); 
     520 
     521  check_protocolversion (); 
     522 
     523  pthread_mutex_lock (&RHMtxLock); 
    521524 
    522525  size = req_size = load_set_list(vs, vs->vserver_config->vserver_name, &idx,  
     
    534537    if (res != 0 || size != req_size) { 
    535538      rh_free(&data); 
     539      pthread_mutex_unlock (&RHMtxLock); 
    536540      return -EAGAIN; 
    537541    } 
     
    542546    process.vs = vs; 
    543547    process.list = data; 
     548 
     549    pthread_mutex_unlock (&RHMtxLock); 
    544550    (*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; 
    549557} 
    550558 
  • src/rh-ipset.h

    r43154f8 rcb53713  
    2929 
    3030struct processing_set { 
    31   struct vserver *vs; 
     31  RHVServer *vs; 
    3232  void *list; 
    3333}; 
     
    7777int kernel_sendto_handleerrno(unsigned op, void *data, socklen_t size); 
    7878void kernel_sendto(void *data, size_t size); 
    79 int kernel_getfrom_handleerrno(void *data, size_t * size); 
     79int kernel_getfrom_handleerrno(void *data, socklen_t * size); 
    8080struct set *set_adt_get(const char *name); 
    8181int set_adtip(struct set *rahunas_set, const char *adtip, const char *adtmac,  
     
    9292void set_flush(const char *name); 
    9393 
    94 size_t load_set_list(struct vserver *vs, const char name[IP_SET_MAXNAMELEN], 
     94size_t load_set_list(RHVServer *vs, const char name[IP_SET_MAXNAMELEN], 
    9595          ip_set_id_t *idx, 
    9696          unsigned op, unsigned cmd); 
    9797 
    98 int get_header_from_set (struct vserver *vs); 
     98int get_header_from_set (RHVServer *vs); 
    9999 
    100 int walk_through_set (int (*callback)(void *), struct vserver *vs); 
     100int walk_through_set (int (*callback)(void *), RHVServer *vs); 
    101101 
    102102void parse_ip(const char *str, ip_set_ip_t *ip); 
  • src/rh-server.c

    r43154f8 rcb53713  
    55 */ 
    66#include <stdio.h> 
     7#include <string.h> 
    78#include "rahunasd.h" 
    89#include "rh-server.h" 
    910#include "rh-utils.h" 
    1011 
    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; 
     12RHVServer * 
     13vserver_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; 
    1920    
    2021    if (lvserver->vserver_config->vserver_id == vserver_id) 
     
    2930} 
    3031 
    31 struct vserver *vserver_get_by_id(struct main_server *ms, int search_id) 
     32RHVServer *vserver_get_by_id(RHMainServer *ms, int search_id) 
    3233{ 
    3334  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; 
    3839    
    3940    if (lvserver->vserver_config->vserver_id == search_id) { 
     
    4647} 
    4748 
    48 int vserver_cleanup(struct vserver *vs) 
     49int vserver_cleanup(RHVServer *vs) 
    4950{ 
    5051  if (vs == NULL) 
     
    5758} 
    5859 
    59 int mainserver_cleanup(struct main_server *ms) 
     60int mainserver_cleanup(RHMainServer *ms) 
    6061{ 
    6162  if (ms == NULL) 
     
    6869} 
    6970 
    70 int register_vserver(struct main_server *ms, const char *vserver_cfg_file) 
     71int register_vserver(RHMainServer *ms, const char *vserver_cfg_file) 
    7172{ 
    7273  GList *vserver_list = ms->vserver_list; 
     
    7778  union rahunas_config *cfg_get = NULL; 
    7879  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; 
    8182 
    8283  union rahunas_config config = { 
     
    130131      if (old_vserver->dummy_config != NULL) { 
    131132        DP("Cleanup old dummy config"); 
    132         rh_free(&old_vserver->dummy_config); 
     133        rh_free((void **) &old_vserver->dummy_config); 
    133134      } 
    134135 
     
    167168  memcpy(vserver_config, &config, sizeof(struct rahunas_vserver_config)); 
    168169 
    169   new_vserver = (struct vserver *) rh_malloc(sizeof(struct vserver)); 
     170  new_vserver = (RHVServer *) rh_malloc(sizeof(RHVServer)); 
    170171 
    171172  if (new_vserver == NULL) 
    172173    return -1; 
    173174 
    174   memset(new_vserver, 0, sizeof(struct vserver)); 
     175  memset(new_vserver, 0, sizeof(RHVServer)); 
    175176 
    176177  new_vserver->vserver_config = vserver_config; 
     
    182183} 
    183184 
    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; 
     185int 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; 
    192193    if (lvserver->vserver_config->vserver_id == vserver_id) { 
    193194      vserver_cleanup(lvserver); 
     
    202203} 
    203204 
    204 int unregister_vserver_all(struct main_server *ms) 
     205int unregister_vserver_all(RHMainServer *ms) 
    205206{ 
    206207  GList *vserver_list = ms->vserver_list; 
    207208  GList *runner = g_list_first(vserver_list); 
    208209  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; 
    213214    vserver_cleanup(lvserver); 
    214215    deleting = runner; 
     
    222223} 
    223224 
    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; 
     225int 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; 
    232234 
    233235    (*callback)(ms, vs); 
     
    239241} 
    240242 
    241 void vserver_init_done(struct main_server *ms, struct vserver *vs) 
     243void vserver_init_done(RHMainServer *ms, RHVServer *vs) 
    242244{ 
    243245  if (vs != NULL) { 
     
    247249} 
    248250 
    249 void vserver_reload(struct main_server *ms, struct vserver *vs) 
     251void vserver_reload(RHMainServer *ms, RHVServer *vs) 
    250252{ 
    251253  if (vs->vserver_config->init_flag == VS_DONE) { 
     
    287289        memcpy(vs->vserver_config, vs->dummy_config,  
    288290          sizeof(struct rahunas_vserver_config)); 
    289         rh_free(&vs->dummy_config); 
     291        rh_free((void **) &vs->dummy_config); 
    290292      } 
    291293 
     
    299301 
    300302 
    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; 
     303void 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; 
    309311    if (lvserver->vserver_config->init_flag == VS_NONE) { 
    310312      logmsg(RH_LOG_NORMAL, "[%s] - Config removed", 
     
    319321    } 
    320322  } 
    321    
    322   return 0; 
    323 } 
     323} 
  • src/rh-server.h

    r43154f8 rcb53713  
    99#include <glib.h> 
    1010#include "rh-config.h" 
     11 
     12typedef struct vserver     RHVServer; 
     13typedef struct main_server RHMainServer; 
    1114 
    1215struct main_server { 
     
    2427  struct rahunas_map *v_map; 
    2528  struct set *v_set; 
    26   struct main_server *main_server; 
     29  RHMainServer *main_server; 
    2730}; 
    2831 
    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); 
     32RHVServer *vserver_exists    (GList *vserver_list, int vserver_id, 
     33                                   const char *vserver_name); 
     34RHVServer *vserver_get_by_id (RHMainServer *ms, int search_id); 
     35 
     36int vserver_cleanup    (RHVServer *vs); 
     37int mainserver_cleanup (RHMainServer *ms); 
     38 
     39int walk_through_vserver    (int (*callback)(RHMainServer *, RHVServer *), 
     40                             RHMainServer  *ms); 
     41int register_vserver        (RHMainServer  *ms, const char *vserver_cfg_file); 
     42int unregister_vserver      (RHMainServer  *ms, int vserver_id); 
     43int unregister_vserver_all  (RHMainServer  *ms); 
     44void vserver_init_done      (RHMainServer  *ms, RHVServer *vs); 
     45void vserver_reload         (RHMainServer  *ms, RHVServer *vs); 
     46void vserver_unused_cleanup (RHMainServer  *ms); 
    4147 
    4248#endif // __RH_SERVER_H 
  • src/rh-serviceclass.h

    r43154f8 rcb53713  
    1111 
    1212#define SERVICECLASS_SET_NAME   "rahunas_serviceclass" 
     13 
     14typedef struct serviceclass RHSvClass; 
    1315 
    1416struct serviceclass { 
  • src/rh-task-bandwidth.c

    rd676a99 rcb53713  
    66 
    77#include <stdlib.h> 
     8#include <string.h> 
    89#include <syslog.h> 
    910#include <sys/types.h> 
     
    6768} 
    6869 
    69 int bandwidth_exec(struct vserver *vs, char *const args[]) 
     70int bandwidth_exec(RHVServer *vs, char *const args[]) 
    7071{ 
    7172  pid_t ws; 
     
    135136} 
    136137 
    137 int bandwidth_start(struct vserver *vs) 
     138int bandwidth_start(RHVServer *vs) 
    138139{ 
    139140  char *args[5]; 
     
    153154} 
    154155 
    155 int bandwidth_stop(struct vserver *vs) 
     156int bandwidth_stop(RHVServer *vs) 
    156157{ 
    157158  char *args[5]; 
     
    171172} 
    172173 
    173 int bandwidth_add(struct vserver *vs, struct bandwidth_req *bw_req) 
     174int bandwidth_add(RHVServer *vs, struct bandwidth_req *bw_req) 
    174175{ 
    175176  char *args[9]; 
     
    192193} 
    193194 
    194 int bandwidth_del(struct vserver *vs, struct bandwidth_req *bw_req) 
     195int bandwidth_del(RHVServer *vs, struct bandwidth_req *bw_req) 
    195196{ 
    196197  char *args[6]; 
     
    222223 
    223224/* Initialize */ 
    224 static void init (struct vserver *vs) 
     225static void init (RHVServer *vs) 
    225226{ 
    226227  struct interfaces *iface = NULL; 
     
    244245 
    245246/* Cleanup */ 
    246 static int cleanup (struct vserver *vs) 
     247static void cleanup (RHVServer *vs) 
    247248{ 
    248249  struct interfaces *iface = NULL; 
     
    264265 
    265266/* Start session task */ 
    266 static int startsess (struct vserver *vs, struct task_req *req) 
     267static int startsess (RHVServer *vs, struct task_req *req) 
    267268{ 
    268269  struct bandwidth_req bw_req; 
     
    283284  if (member->bandwidth_slot_id > 0) 
    284285    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)); 
    285290   
    286291  // Formating the bandwidth request 
     
    316321 
    317322/* Stop session task */ 
    318 static int stopsess  (struct vserver *vs, struct task_req *req) 
     323static int stopsess  (RHVServer *vs, struct task_req *req) 
    319324{ 
    320325  struct bandwidth_req bw_req; 
     
    348353 
    349354/* Commit start session task */ 
    350 static int commitstartsess (struct vserver *vs, struct task_req *req) 
     355static int commitstartsess (RHVServer *vs, struct task_req *req) 
    351356{ 
    352357  /* Do nothing or need to implement */ 
     
    354359 
    355360/* Commit stop session task */ 
    356 static int commitstopsess  (struct vserver *vs, struct task_req *req) 
     361static int commitstopsess  (RHVServer *vs, struct task_req *req) 
    357362{ 
    358363  /* Do nothing or need to implement */ 
     
    360365 
    361366/* Rollback start session task */ 
    362 static int rollbackstartsess (struct vserver *vs, struct task_req *req) 
     367static int rollbackstartsess (RHVServer *vs, struct task_req *req) 
    363368{ 
    364369  /* Do nothing or need to implement */ 
     
    366371 
    367372/* Rollback stop session task */ 
    368 static int rollbackstopsess  (struct vserver *vs, struct task_req *req) 
     373static int rollbackstopsess  (RHVServer *vs, struct task_req *req) 
    369374{ 
    370375  /* Do nothing or need to implement */ 
     
    386391}; 
    387392 
    388 void rh_task_bandwidth_reg(struct main_server *ms) { 
     393void rh_task_bandwidth_reg(RHMainServer *ms) { 
    389394  task_register(ms, &taskbandwidth); 
    390395} 
  • src/rh-task-bandwidth.h

    rd5429ac rcb53713  
    66#ifndef __RH_TASK_BANDWIDTH_H 
    77#define __RH_TASK_BANDWIDTH_H 
     8 
     9#include "rh-server.h" 
    810 
    911/* MAX_SLOT_PAGE is calculated from the formula of 
     
    1820#define MAX_SLOT_PAGE  619 
    1921 
    20 extern void rh_task_bandwidth_reg(struct main_server *ms); 
     22extern void rh_task_bandwidth_reg(RHMainServer *ms); 
    2123 
    2224struct bandwidth_req { 
     
    2729}; 
    2830 
    29 int bandwidth_add(struct vserver *vs, struct bandwidth_req *bw_req); 
    30 int bandwidth_exec(struct vserver *vs, char *const args[]); 
     31int bandwidth_add(RHVServer *vs, struct bandwidth_req *bw_req); 
     32int bandwidth_exec(RHVServer *vs, char *const args[]); 
    3133void mark_reserved_slot_id(unsigned int slot_id); 
    3234#endif // __RH_TASK_BANDWIDTH_H 
  • src/rh-task-dbset.c

    r0fe3338 rcb53713  
    1414#include "rh-ipset.h" 
    1515#include "rh-utils.h" 
     16#include "rh-task-memset.h" 
    1617 
    1718struct dbset_row { 
     
    5152} 
    5253 
    53 gboolean *parse_dm_to_struct(GList **data_list, GdaDataModel *dm) { 
     54gboolean 
     55parse_dm_to_struct(GList **data_list, GdaDataModel *dm) { 
    5456  gint  row_id; 
    5557  gint  column_id; 
    56   GValue *value; 
     58  const GValue *value; 
    5759  gchar  *str; 
    58   gchar  *title; 
     60  const gchar  *title; 
    5961  GdaNumeric *num; 
    6062  struct dbset_row *row; 
     
    201203} 
    202204 
    203 gboolean restore_set(GList **data_list, struct vserver *vs) 
     205gboolean restore_set(GList **data_list, RHVServer *vs) 
    204206{ 
    205207  GList *node = NULL; 
     
    234236    req.username = row->username; 
    235237    req.session_id = row->session_id; 
    236     parse_mac(row->mac, &ethernet); 
    237     memcpy(req.mac_address, &ethernet, ETH_ALEN); 
     238    parse_mac(row->mac, ethernet); 
     239    memcpy(req.mac_address, ethernet, ETH_ALEN); 
    238240 
    239241    req.session_start = row->session_start; 
     
    252254} 
    253255 
    254  
    255 GdaConnection *openconn (GdaConnectionOptions options) 
     256GdaConnection * 
     257openconn (GdaConnectionOptions options) 
    256258{ 
    257259  GdaConnection *connection = NULL; 
     
    302304 
    303305/* Initialize */ 
    304 static void init (struct vserver *vs) 
     306static void init (RHVServer *vs) 
    305307{ 
    306308  GdaConnection *connection; 
     
    335337 
    336338/* Cleanup */ 
    337 static void cleanup (struct vserver *vs) 
     339static void cleanup (RHVServer *vs) 
    338340{ 
    339341  /* Do nothing */ 
     
    341343 
    342344/* Start session task */ 
    343 static int startsess (struct vserver *vs, struct task_req *req) 
     345static int startsess (RHVServer *vs, struct task_req *req) 
    344346{ 
    345347  GdaConnection *connection; 
     
    353355  connection = openconn (GDA_CONNECTION_OPTIONS_NONE); 
    354356 
    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", 
    357359    localtime(&req->session_timeout)); 
    358360 
     
    392394 
    393395/* Stop session task */ 
    394 static int stopsess (struct vserver *vs, struct task_req *req) 
     396static int stopsess (RHVServer *vs, struct task_req *req) 
    395397{ 
    396398  GdaConnection *connection; 
     
    428430 
    429431/* Commit start session task */ 
    430 static int commitstartsess (struct vserver *vs, struct task_req *req) 
     432static int commitstartsess (RHVServer *vs, struct task_req *req) 
    431433{ 
    432434  /* Do nothing or need to implement */ 
     
    434436 
    435437/* Commit stop session task */ 
    436 static int commitstopsess  (struct vserver *vs, struct task_req *req) 
     438static int commitstopsess  (RHVServer *vs, struct task_req *req) 
    437439{ 
    438440  /* Do nothing or need to implement */ 
     
    440442 
    441443/* Rollback start session task */ 
    442 static int rollbackstartsess (struct vserver *vs, struct task_req *req) 
     444static int rollbackstartsess (RHVServer *vs, struct task_req *req) 
    443445{ 
    444446  /* Do nothing or need to implement */ 
     
    446448 
    447449/* Rollback stop session task */ 
    448 static int rollbackstopsess  (struct vserver *vs, struct task_req *req) 
     450static int rollbackstopsess  (RHVServer *vs, struct task_req *req) 
    449451{ 
    450452  /* Do nothing or need to implement */ 
     
    466468}; 
    467469 
    468 void rh_task_dbset_reg(struct main_server *ms) { 
     470void rh_task_dbset_reg(RHMainServer *ms) { 
    469471  task_register(ms, &task_dbset); 
    470472} 
  • src/rh-task-dbset.h

    rd5429ac rcb53713  
    77#define __RH_TASK_DBSET_H 
    88 
    9 extern void rh_task_dbset_reg(struct main_server *ms); 
     9#include "rh-server.h" 
     10 
     11extern void rh_task_dbset_reg(RHMainServer *ms); 
    1012 
    1113#endif // __RH_TASK_MEMSET_H 
  • src/rh-task-ipset.c

    r91cc1f0 rcb53713  
    66 */ 
    77 
     8#include <string.h> 
    89#include <syslog.h> 
    910 
     
    1314#include "rh-xmlrpc-cmd.h" 
    1415 
    15 size_t set_cleanup(void *data) 
     16static int 
     17set_cleanup(void *data) 
    1618{ 
    1719  struct processing_set *process = (struct processing_set *) data; 
     
    4042    DP("Found IP: %s in set, try logout", idtoip(process->vs->v_map, id)); 
    4143    req.id = id; 
    42     memcpy(req.mac_address, &table[id].ethernet, ETH_ALEN); 
     44    memcpy(req.mac_address, table[id].ethernet, ETH_ALEN); 
    4345    req.req_opt = RH_RADIUS_TERM_NAS_REBOOT; 
    4446    send_xmlrpc_stopacct(process->vs, id, RH_RADIUS_TERM_NAS_REBOOT); 
     
    6062 
    6163/* Initialize */ 
    62 static void init (struct vserver *vs) 
     64static void init (RHVServer *vs) 
    6365{ 
    6466  if (vs->vserver_config->init_flag == VS_RELOAD) 
     
    7981 
    8082/* Cleanup */ 
    81 static void cleanup (struct vserver *vs) 
     83static void cleanup (RHVServer *vs) 
    8284{ 
    8385  if (vs->vserver_config->init_flag == VS_RELOAD) 
     
    9092 
    9193  set_flush(vs->vserver_config->vserver_name); 
    92  
    93   rh_free(&(vs->v_set)); 
     94  rh_free((void **) &vs->v_set); 
    9495} 
    9596 
    9697/* Start session task */ 
    97 static int startsess (struct vserver *vs, struct task_req *req) 
     98static int startsess (RHVServer *vs, struct task_req *req) 
    9899{ 
    99100  int res = 0; 
     
    107108 
    108109/* Stop session task */ 
    109 static int stopsess  (struct vserver *vs, struct task_req *req) 
     110static int stopsess  (RHVServer *vs, struct task_req *req) 
    110111{ 
    111112  int res = 0; 
     
    119120 
    120121/* Commit start session task */ 
    121 static int commitstartsess (struct vserver *vs, struct task_req *req) 
     122static int commitstartsess (RHVServer *vs, struct task_req *req) 
    122123{ 
    123124  /* Do nothing or need to implement */ 
     
    125126 
    126127/* Commit stop session task */ 
    127 static int commitstopsess  (struct vserver *vs, struct task_req *req) 
     128static int commitstopsess  (RHVServer *vs, struct task_req *req) 
    128129{ 
    129130  /* Do nothing or need to implement */ 
     
    131132 
    132133/* Rollback start session task */ 
    133 static int rollbackstartsess (struct vserver *vs, struct task_req *req) 
     134static int rollbackstartsess (RHVServer *vs, struct task_req *req) 
    134135{ 
    135136  /* Do nothing or need to implement */ 
     
    137138 
    138139/* Rollback stop session task */ 
    139 static int rollbackstopsess  (struct vserver *vs, struct task_req *req) 
     140static int rollbackstopsess  (RHVServer *vs, struct task_req *req) 
    140141{ 
    141142  /* Do nothing or need to implement */ 
     
    157158}; 
    158159 
    159 void rh_task_ipset_reg(struct main_server *ms) { 
     160void rh_task_ipset_reg(RHMainServer *ms) { 
    160161  task_register(ms, &task_ipset); 
    161162} 
  • src/rh-task-ipset.h

    rd5429ac rcb53713  
    77#define __RH_TASK_MEMSET_H 
    88 
    9 extern void rh_task_ipset_reg(struct main_server *ms); 
     9#include "rh-server.h" 
     10 
     11extern void rh_task_ipset_reg(RHMainServer *ms); 
    1012 
    1113#endif // __RH_TASK_MEMSET_H 
  • src/rh-task-iptables.c

    r0fe3338 rcb53713  
    66 
    77#include <stdlib.h> 
     8#include <string.h> 
    89#include <syslog.h> 
    910#include <sys/types.h> 
     
    1718#include "rh-utils.h" 
    1819 
    19 int iptables_exec(struct vserver *vs, char *const args[]) 
     20int iptables_exec(RHVServer *vs, char *const args[]) 
    2021{ 
    2122  pid_t ws; 
     
    106107} 
    107108 
    108 int iptables_start(struct vserver *vs) 
     109int iptables_start(RHVServer *vs) 
    109110{ 
    110111  char *args[3]; 
     
    119120} 
    120121 
    121 int iptables_stop(struct vserver *vs) 
     122int iptables_stop(RHVServer *vs) 
    122123{ 
    123124  char *args[3]; 
     
    145146 
    146147/* Initialize */ 
    147 static void init (struct vserver *vs) 
     148static void init (RHVServer *vs) 
    148149{ 
    149150  logmsg(RH_LOG_NORMAL, "[%s] Task IPTABLES initialize..",  
     
    154155 
    155156/* Cleanup */ 
    156 static int cleanup (struct vserver *vs) 
     157static void cleanup (RHVServer *vs) 
    157158{ 
    158159  logmsg(RH_LOG_NORMAL, "[%s] Task IPTABLES cleanup..", 
     
    163164 
    164165/* Start session task */ 
    165 static int startsess (struct vserver *vs, struct task_req *req) 
     166static int startsess (RHVServer *vs, struct task_req *req) 
    166167{ 
    167168  /* Do nothing */ 
     
    170171 
    171172/* Stop session task */ 
    172 static int stopsess  (struct vserver *vs, struct task_req *req) 
     173static int stopsess  (RHVServer *vs, struct task_req *req) 
    173174{ 
    174175  /* Do nothing */ 
     
    177178 
    178179/* Commit start session task */ 
    179 static int commitstartsess (struct vserver *vs, struct task_req *req) 
     180static int commitstartsess (RHVServer *vs, struct task_req *req) 
    180181{ 
    181182  /* Do nothing or need to implement */ 
     
    183184 
    184185/* Commit stop session task */ 
    185 static int commitstopsess  (struct vserver *vs, struct task_req *req) 
     186static int commitstopsess  (RHVServer *vs, struct task_req *req) 
    186187{ 
    187188  /* Do nothing or need to implement */ 
     
    189190 
    190191/* Rollback start session task */ 
    191 static int rollbackstartsess (struct vserver *vs, struct task_req *req) 
     192static int rollbackstartsess (RHVServer *vs, struct task_req *req) 
    192193{ 
    193194  /* Do nothing or need to implement */ 
     
    195196 
    196197/* Rollback stop session task */ 
    197 static int rollbackstopsess  (struct vserver *vs, struct task_req *req) 
     198static int rollbackstopsess  (RHVServer *vs, struct task_req *req) 
    198199{ 
    199200  /* Do nothing or need to implement */ 
     
    215216}; 
    216217 
    217 void rh_task_iptables_reg(struct main_server *ms) { 
     218void rh_task_iptables_reg(RHMainServer *ms) { 
    218219  task_register(ms, &taskiptables); 
    219220} 
  • src/rh-task-iptables.h

    rebf1b31 rcb53713  
    77#define __RH_TASK_IPTABLES_H 
    88 
    9 extern void rh_task_iptables_reg(struct main_server *ms); 
     9#include "rh-server.h" 
     10 
     11extern void rh_task_iptables_reg(RHMainServer *ms); 
    1012 
    1113#endif // __RH_TASK_BANDWIDTH_H 
  • src/rh-task-memset.c

    r9cc499e rcb53713  
    66 
    77#include <stdlib.h> 
     8#include <string.h> 
    89#include <syslog.h> 
    910#include <time.h> 
     
    1314#include "rh-ipset.h" 
    1415 
    15 GList *member_get_node_by_id(struct vserver *vs, uint32_t id)  
     16GList *member_get_node_by_id(RHVServer *vs, uint32_t id) 
    1617{ 
    1718  GList *runner = g_list_first(vs->v_map->members); 
     
    3031} 
    3132 
    32 gint idcmp(struct rahunas_member *a, struct rahunas_member *b) 
    33 { 
    34   if (a != NULL && b != NULL) 
    35     return (a->id - b->id); 
     33static gint 
     34idcmp(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); 
    3641 
    3742  return -1; 
     
    5358 
    5459/* Initialize */ 
    55 static void init (struct vserver *vs) 
     60static void init (RHVServer *vs) 
    5661{ 
    5762  int size; 
     
    7984 
    8085/* Cleanup */ 
    81 static void cleanup (struct vserver *vs) 
     86static void cleanup (RHVServer *vs) 
    8287{ 
    8388  GList *runner = NULL; 
     
    109114    g_list_free(vs->v_map->members); 
    110115 
    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  } 
    116119} 
    117120 
    118121/* Start session task */ 
    119 static int startsess (struct vserver *vs, struct task_req *req) 
     122static int startsess (RHVServer *vs, struct task_req *req) 
    120123{ 
    121124  uint32_t id = req->id; 
     
    157160  member->username   = strdup(req->username); 
    158161  if (!member->username) 
    159     member->username = termstring; 
     162    member->username = strdup(termstring); 
    160163 
    161164  member->session_id = strdup(req->session_id); 
    162165  if (!member->session_id) 
    163     member->session_id = termstring; 
     166    member->session_id = strdup(termstring); 
    164167 
    165168  member->serviceclass_name    = NULL; 
     
    196199 
    197200/* Stop session task */ 
    198 static int stopsess  (struct vserver *vs, struct task_req *req) 
     201static int stopsess  (RHVServer *vs, struct task_req *req) 
    199202{ 
    200203  uint32_t id = req->id; 
     
    227230  } 
    228231  if (!member->username) 
    229     member->username = termstring; 
     232    member->username = strdup(termstring); 
    230233 
    231234  if (!member->session_id) 
    232     member->session_id = termstring; 
     235    member->session_id = strdup(termstring); 
    233236 
    234237  logmsg(RH_LOG_NORMAL, "[%s] Session Stop (%s), User: %s, IP: %s, " 
     
    249252 
    250253/* Commit start session task */ 
    251 static int commitstartsess (struct vserver *vs, struct task_req *req) 
     254static int commitstartsess (RHVServer *vs, struct task_req *req) 
    252255{ 
    253256  /* Do nothing or need to implement */ 
     
    255258 
    256259/* Commit stop session task */ 
    257 static int commitstopsess  (struct vserver *vs, struct task_req *req) 
     260static int commitstopsess  (RHVServer *vs, struct task_req *req) 
    258261{ 
    259262  /* Do nothing or need to implement */ 
     
    261264 
    262265/* Rollback start session task */ 
    263 static int rollbackstartsess (struct vserver *vs, struct task_req *req) 
     266static int rollbackstartsess (RHVServer *vs, struct task_req *req) 
    264267{ 
    265268  /* Do nothing or need to implement */ 
     
    267270 
    268271/* Rollback stop session task */ 
    269 static int rollbackstopsess  (struct vserver *vs, struct task_req *req) 
     272static int rollbackstopsess  (RHVServer *vs, struct task_req *req) 
    270273{ 
    271274  /* Do nothing or need to implement */ 
     
    287290}; 
    288291 
    289 void rh_task_memset_reg(struct main_server *ms) { 
     292void rh_task_memset_reg(RHMainServer *ms) { 
    290293  task_register(ms, &task_memset); 
    291294} 
  • src/rh-task-memset.h

    rd5429ac rcb53713  
    77#define __RH_TASK_MEMSET_H 
    88 
    9 extern void rh_task_memset_reg(struct main_server *ms); 
     9#include <glib.h> 
     10#include "rh-server.h" 
    1011 
    11 GList *member_get_node_by_id(struct vserver *vs, uint32_t id); 
    12 gint idcmp(struct rahunas_member *a, struct rahunas_member *b); 
     12extern void rh_task_memset_reg(RHMainServer *ms); 
     13 
     14GList *member_get_node_by_id(RHVServer *vs, uint32_t id); 
    1315#endif // __RH_TASK_MEMSET_H 
    1416 
  • src/rh-task-serviceclass.c

    r9cc499e rcb53713  
    11/** 
    2  * RahuNAS task serviceclass implementation  
     2 * RahuNAS task serviceclass implementation 
    33 * Author: Neutron Soutmun <neo.neutron@gmail.com> 
    44 * Date:   2010-07-29 
     
    1818{ 
    1919  uint32_t slot_id = 0; 
    20   time_t random_time;  
     20  time_t random_time; 
    2121  int  retry = 30; 
    2222  char select_cmd[256]; 
     
    5656        free_data_list(data_list); 
    5757        break; 
    58       } else {  
     58      } else { 
    5959        // Not available, retry 
    6060        free_data_list(data_list); 
     
    8686    logmsg(RH_LOG_NORMAL, "Service Class: Flushing set ..."); 
    8787    set_flush (SERVICECLASS_SET_NAME); 
    88     rh_free(&rh_serviceclass_set);  
     88    rh_free(&rh_serviceclass_set); 
    8989  } 
    9090 
     
    9393 
    9494/* Initialize */ 
    95 static void init (struct vserver *vs) 
     95static void init (RHVServer *vs) 
    9696{ 
    9797} 
    9898 
    9999/* Cleanup */ 
    100 static void cleanup (struct vserver *vs) 
     100static void cleanup (RHVServer *vs) 
    101101{ 
    102102} 
    103103 
    104104/* Start session task */ 
    105 static int startsess (struct vserver *vs, struct task_req *req) 
     105static int startsess (RHVServer *vs, struct task_req *req) 
    106106{ 
    107107  struct serviceclass *sc = NULL; 
     
    199199 
    200200/* Stop session task */ 
    201 static int stopsess  (struct vserver *vs, struct task_req *req) 
     201static int stopsess  (RHVServer *vs, struct task_req *req) 
    202202{ 
    203203  struct serviceclass *sc = NULL; 
     
    270270 
    271271/* Commit start session task */ 
    272 static int commitstartsess (struct vserver *vs, struct task_req *req) 
     272static int commitstartsess (RHVServer *vs, struct task_req *req) 
    273273{ 
    274274  /* Do nothing or need to implement */ 
     
    276276 
    277277/* Commit stop session task */ 
    278 static int commitstopsess  (struct vserver *vs, struct task_req *req) 
     278static int commitstopsess  (RHVServer *vs, struct task_req *req) 
    279279{ 
    280280  /* Do nothing or need to implement */ 
     
    282282 
    283283/* Rollback start session task */ 
    284 static int rollbackstartsess (struct vserver *vs, struct task_req *req) 
     284static int rollbackstartsess (RHVServer *vs, struct task_req *req) 
    285285{ 
    286286  /* Do nothing or need to implement */ 
     
    288288 
    289289/* Rollback stop session task */ 
    290 static int rollbackstopsess  (struct vserver *vs, struct task_req *req) 
     290static int rollbackstopsess  (RHVServer *vs, struct task_req *req) 
    291291{ 
    292292  /* Do nothing or need to implement */ 
     
    308308}; 
    309309 
    310 void rh_task_serviceclass_reg(struct main_server *ms) { 
     310void rh_task_serviceclass_reg(RHMainServer *ms) { 
    311311  task_register(ms, &task_serviceclass); 
    312312} 
  • src/rh-task-serviceclass.h

    r43154f8 rcb53713  
    11/** 
    2  * RahuNAS task serviceclass implementation  
     2 * RahuNAS task serviceclass implementation 
    33 * Author: Neutron Soutmun <neo.neutron@gmail.com> 
    44 * Date:   2010-07-29 
     
    77#define __RH_TASK_SERVICECLASS_H 
    88 
    9 extern void rh_task_serviceclass_reg(struct main_server *ms); 
     9#include "rh-server.h" 
     10 
     11extern void rh_task_serviceclass_reg(RHMainServer *ms); 
    1012 
    1113#endif // __RH_TASK_SERVICECLASS_H 
  • src/rh-task.c

    r43154f8 rcb53713  
    1313#include "rh-task-bandwidth.h" 
    1414 
    15 void task_register(struct main_server *ms, struct task *task) 
     15void task_register(RHMainServer *ms, struct task *task) 
    1616{ 
    1717  GList *chk  = NULL; 
     
    4646} 
    4747 
    48 void rh_task_register(struct main_server *ms) 
     48void rh_task_register(RHMainServer *ms) 
    4949{ 
    5050  static int task_registered = 0; 
     
    6767} 
    6868 
    69 void rh_task_unregister(struct main_server *ms) { 
     69void rh_task_unregister(RHMainServer *ms) { 
    7070  g_list_free(ms->task_list); 
    7171} 
    7272 
    73 int  rh_task_startservice(struct main_server *ms) 
     73int  rh_task_startservice(RHMainServer *ms) 
    7474{ 
    7575  GList *runner = g_list_first(ms->task_list); 
     
    8888} 
    8989 
    90 int rh_task_stopservice(struct main_server *ms) 
     90int rh_task_stopservice(RHMainServer *ms) 
    9191 
    9292  GList *runner = g_list_last(ms->task_list); 
     
    105105} 
    106106 
    107 void rh_task_init (struct main_server *ms, struct vserver *vs) 
     107void rh_task_init (RHMainServer *ms, RHVServer *vs) 
    108108{ 
    109109  GList *runner = g_list_first(ms->task_list); 
     
    119119} 
    120120 
    121 void rh_task_cleanup(struct main_server *ms, struct vserver *vs) 
     121void rh_task_cleanup(RHMainServer *ms, RHVServer *vs) 
    122122{ 
    123123  GList *runner = g_list_last(ms->task_list); 
     
    133133} 
    134134 
    135 int  rh_task_startsess(struct vserver *vs, struct task_req *req) 
     135int  rh_task_startsess(RHVServer *vs, struct task_req *req) 
    136136{ 
    137   struct main_server *ms = &rh_main_server_instance; 
     137  RHMainServer *ms = &rh_main_server_instance; 
    138138  GList *runner = g_list_first(ms->task_list); 
    139139  struct task *ltask = NULL; 
     
    150150} 
    151151 
    152 int  rh_task_stopsess(struct vserver *vs, struct task_req *req) 
     152int  rh_task_stopsess(RHVServer *vs, struct task_req *req) 
    153153{ 
    154   struct main_server *ms = &rh_main_server_instance; 
     154  RHMainServer *ms = &rh_main_server_instance; 
    155155  GList *runner = g_list_last(ms->task_list); 
    156156  struct task *ltask = NULL; 
     
    167167} 
    168168 
    169 int  rh_task_commitstartsess(struct vserver *vs, struct task_req *req) 
     169int  rh_task_commitstartsess(RHVServer *vs, struct task_req *req) 
    170170{ 
    171171} 
    172172 
    173 int  rh_task_commitstopsess(struct vserver *vs, struct task_req *req) 
     173int  rh_task_commitstopsess(RHVServer *vs, struct task_req *req) 
    174174{ 
    175175} 
    176176 
    177 int  rh_task_rollbackstartsess(struct vserver *vs, struct task_req *req) 
     177int  rh_task_rollbackstartsess(RHVServer *vs, struct task_req *req) 
    178178{ 
    179179} 
    180180 
    181 int  rh_task_rollbackstopsess(struct vserver *vs, struct task_req *req) 
     181int  rh_task_rollbackstopsess(RHVServer *vs, struct task_req *req) 
    182182{ 
    183183} 
  • src/rh-task.h

    r43154f8 rcb53713  
    4040 
    4141  /* Initialize */ 
    42   void (*init) (struct vserver *vs); 
     42  void (*init) (RHVServer *vs); 
    4343 
    4444  /* Cleanup */ 
    45   void (*cleanup) (struct vserver *vs); 
     45  void (*cleanup) (RHVServer *vs); 
    4646 
    4747  /* Start session task */ 
    48   int (*startsess) (struct vserver *vs, struct task_req *req); 
     48  int (*startsess) (RHVServer *vs, struct task_req *req); 
    4949 
    5050  /* Stop session task */ 
    51   int (*stopsess) (struct vserver *vs, struct task_req *req); 
     51  int (*stopsess) (RHVServer *vs, struct task_req *req); 
    5252 
    5353  /* Commit start session task */ 
    54   int (*commitstartsess) (struct vserver *vs, struct task_req *req); 
     54  int (*commitstartsess) (RHVServer *vs, struct task_req *req); 
    5555 
    5656  /* Commit stop session task */ 
    57   int (*commitstopsess) (struct vserver *vs, struct task_req *req); 
     57  int (*commitstopsess) (RHVServer *vs, struct task_req *req); 
    5858 
    5959  /* Rollback start session task */ 
    60   int (*rollbackstartsess) (struct vserver *vs, struct task_req *req); 
     60  int (*rollbackstartsess) (RHVServer *vs, struct task_req *req); 
    6161 
    6262  /* Rollback stop session task */ 
    63   int (*rollbackstopsess) (struct vserver *vs, struct task_req *req); 
     63  int (*rollbackstopsess) (RHVServer *vs, struct task_req *req); 
    6464}; 
    6565 
    66 extern void task_register(struct main_server *ms, struct task *task); 
     66extern void task_register(RHMainServer *ms, struct task *task); 
    6767 
    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); 
     68void rh_task_register          (RHMainServer *ms); 
     69void rh_task_unregister        (RHMainServer *ms); 
     70int  rh_task_startservice      (RHMainServer *ms); 
     71int  rh_task_stopservice       (RHMainServer *ms); 
     72void rh_task_init              (RHMainServer *ms, RHVServer *vs); 
     73void rh_task_cleanup           (RHMainServer *ms, RHVServer *vs); 
     74int  rh_task_startsess         (RHVServer *vs, struct task_req *req); 
     75int  rh_task_stopsess          (RHVServer *vs, struct task_req *req); 
     76int  rh_task_commitstartsess   (RHVServer *vs, struct task_req *req); 
     77int  rh_task_commitstopsess    (RHVServer *vs, struct task_req *req); 
     78int  rh_task_rollbackstartsess (RHVServer *vs, struct task_req *req); 
     79int  rh_task_rollbackstopsess  (RHVServer *vs, struct task_req *req); 
    8080 
    8181#endif // __RH_TASK_H 
  • src/rh-utils.c

    rc576556 rcb53713  
    55 */ 
    66 
     7#include <string.h> 
    78#include <syslog.h> 
    89#include <glib.h> 
     
    4142} 
    4243 
    43 const char *rh_string_get_sep(const char *haystack, const char *sep,  
    44                               unsigned short idx) 
     44gchar *rh_string_get_sep(const char *haystack, const char *sep, 
     45                         unsigned short idx) 
    4546{ 
    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; 
    5051  unsigned short current_idx = 0; 
    5152  unsigned short isFound = 0; 
     
    136137  fprintf(stderr, "%s : %s\n", timemsg(), p); 
    137138 
    138   rh_free(&p); 
    139   rh_free(&np); 
     139  rh_free((void **) &p); 
     140  rh_free((void **) &np); 
    140141} 
    141142 
     
    181182} 
    182183 
    183 char *idtoip(struct rahunas_map *map, uint32_t id) { 
     184const char *idtoip(struct rahunas_map *map, uint32_t id) { 
    184185  struct in_addr sess_addr; 
    185186 
  • src/rh-utils.h

    rd5429ac rcb53713  
    1414void rh_free(void **data); 
    1515 
    16 const char *rh_string_get_sep(const char *haystack, const char *sep,  
    17                               unsigned short idx); 
     16gchar *rh_string_get_sep(const char *haystack, const char *sep, 
     17                         unsigned short idx); 
    1818int rh_openlog(const char *filename); 
    1919int rh_closelog(int fd); 
     
    2323 
    2424uint32_t iptoid(struct rahunas_map *map, const char *ip); 
    25 char *idtoip(struct rahunas_map *map, uint32_t id); 
     25const char *idtoip(struct rahunas_map *map, uint32_t id); 
    2626 
    2727#endif // __RH_UTILS_H 
  • src/rh-xmlrpc-cmd.c

    r25f5f8d rcb53713  
    1010#include "rh-task-memset.h" 
    1111 
    12 int send_xmlrpc_stopacct(struct vserver *vs, uint32_t id, int cause) { 
     12int send_xmlrpc_stopacct(RHVServer *vs, uint32_t id, int cause) { 
    1313  GNetXmlRpcClient *client = NULL; 
    1414  gchar *reply  = NULL; 
  • src/rh-xmlrpc-cmd.h

    rd5429ac rcb53713  
    88#include "rh-radius.h" 
    99 
    10 int send_xmlrpc_stopacct(struct vserver *vs, uint32_t id, int cause); 
     10int send_xmlrpc_stopacct(RHVServer *vs, uint32_t id, int cause); 
    1111 
    1212#endif // __RH_XMLRPC_CMD_H 
  • src/rh-xmlrpc-server.c

    r9cc499e rcb53713  
    88#include <stdio.h> 
    99#include <stdlib.h> 
     10#include <string.h> 
     11#include <pthread.h> 
    1012#include "rahunasd.h" 
     13#include "rh-server.h" 
    1114#include "rh-xmlrpc-server.h" 
    1215#include "rh-radius.h" 
     
    2427                    gchar **reply_string)  
    2528{ 
    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; 
    2831  unsigned char ethernet[ETH_ALEN] = {0,0,0,0,0,0}; 
    2932  struct task_req req; 
     
    4144  struct rahunas_member *member = NULL; 
    4245 
     46  pthread_mutex_lock (&RHMtxLock); 
     47 
    4348  if (param == NULL) 
    4449    goto out; 
     
    7782  /* Check if client already registered */ 
    7883  member_node = member_get_node_by_id(vs, id); 
     84 
    7985  if (member_node != NULL) 
    8086    goto greeting; 
     
    8490  req.username = username; 
    8591  req.session_id = session_id; 
    86   parse_mac(mac_address, &ethernet); 
    87   memcpy(req.mac_address, &ethernet, ETH_ALEN); 
     92  parse_mac(mac_address, ethernet); 
     93  memcpy(req.mac_address, ethernet, ETH_ALEN); 
    8894  req.session_start = 0; 
    8995  req.session_timeout = 0; 
     
    124130out: 
    125131  *reply_string = g_strdup("Invalid input parameters"); 
    126   goto cleanup; 
    127132 
    128133cleanup: 
     134  pthread_mutex_unlock (&RHMtxLock); 
     135 
    129136  DP("RPC Reply: %s", *reply_string); 
    130137  g_free(ip); 
     
    146153                   gchar **reply_string) 
    147154{ 
    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; 
    150157  struct task_req req; 
    151158  gchar *ip = NULL; 
     
    160167  struct rahunas_member *member = NULL; 
    161168 
     169  pthread_mutex_lock (&RHMtxLock); 
     170 
    162171  if (param == NULL) 
    163172    goto out; 
     
    187196  } 
    188197 
    189   parse_mac(mac_address, &ethernet); 
    190   memcpy(req.mac_address, &ethernet, ETH_ALEN); 
     198  parse_mac(mac_address, ethernet); 
     199  memcpy(req.mac_address, ethernet, ETH_ALEN); 
    191200 
    192201  member_node = member_get_node_by_id(vs, id); 
     
    227236out: 
    228237  *reply_string = g_strdup("Invalid input parameters"); 
    229   goto cleanup; 
    230238 
    231239cleanup: 
     240  pthread_mutex_unlock (&RHMtxLock); 
     241 
    232242  DP("RPC Reply: %s", *reply_string); 
    233243  g_free(ip); 
     
    244254                      gchar **reply_string) 
    245255{ 
    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; 
    248258  gchar *ip = NULL; 
    249259  gchar *vserver_id = NULL; 
     
    251261  GList *member_node = NULL; 
    252262  struct rahunas_member *member = NULL; 
     263 
     264  pthread_mutex_lock (&RHMtxLock); 
    253265 
    254266  if (param == NULL) 
     
    305317out: 
    306318  *reply_string = g_strdup("Invalid input parameters"); 
    307    goto cleanup; 
    308319 
    309320cleanup: 
     321  pthread_mutex_unlock (&RHMtxLock); 
     322 
    310323  DP("RPC Reply: %s", *reply_string); 
    311324  g_free(ip); 
  • tools/Makefile.am

    r3cbe0c2 rcb53713  
    1515        -I$(top_srcdir)/lcfg \ 
    1616        -I$(top_srcdir)/xmlrpc \ 
    17         $(LIBGNET_CFLAGS) 
     17        $(LIBGNET_CFLAGS) \ 
     18        -D_GNU_SOURCE 
    1819squid_auth_helper_LDADD = \ 
    1920        $(top_builddir)/lcfg/liblcfg.a \