diff options
author | Kozlov Dmitry <dima@server> | 2010-09-10 12:49:35 +0400 |
---|---|---|
committer | Kozlov Dmitry <dima@server> | 2010-09-10 12:49:35 +0400 |
commit | d0c060a39d3bf6f675666a1400b533511e24a26c (patch) | |
tree | 32d9bcd1c5cc094b868c037dcca55ce97373b1b7 /accel-pptpd | |
parent | c471cd62571f654b92bad0bd9f431927758f4d45 (diff) | |
download | accel-ppp-d0c060a39d3bf6f675666a1400b533511e24a26c.tar.gz accel-ppp-d0c060a39d3bf6f675666a1400b533511e24a26c.zip |
switching to use triton events instead of ppp_notify
Diffstat (limited to 'accel-pptpd')
-rw-r--r-- | accel-pptpd/CMakeLists.txt | 1 | ||||
-rw-r--r-- | accel-pptpd/include/events.h | 13 | ||||
-rw-r--r-- | accel-pptpd/ppp/ppp.c | 9 | ||||
-rw-r--r-- | accel-pptpd/ppp/ppp.h | 17 | ||||
-rw-r--r-- | accel-pptpd/ppp/ppp_auth.c | 2 | ||||
-rw-r--r-- | accel-pptpd/radius/radius.c | 28 | ||||
-rw-r--r-- | accel-pptpd/triton/event.c | 4 | ||||
-rw-r--r-- | accel-pptpd/triton/triton.c | 3 |
8 files changed, 38 insertions, 39 deletions
diff --git a/accel-pptpd/CMakeLists.txt b/accel-pptpd/CMakeLists.txt index a462358f..9753e11b 100644 --- a/accel-pptpd/CMakeLists.txt +++ b/accel-pptpd/CMakeLists.txt @@ -23,7 +23,6 @@ ADD_EXECUTABLE(pptpd ppp/ipcp_opt_ipaddr.c ppp/ipcp_opt_dns.c ppp/ppp_ccp.c - ppp/ppp_notify.c log.c pwdb.c diff --git a/accel-pptpd/include/events.h b/accel-pptpd/include/events.h new file mode 100644 index 00000000..85e1bc73 --- /dev/null +++ b/accel-pptpd/include/events.h @@ -0,0 +1,13 @@ +#ifndef __EVENTS_H +#define __EVENTS_H + +#define EV_PPP_STARTING 1 +#define EV_PPP_STARTED 2 +#define EV_PPP_FINISHING 3 +#define EV_PPP_FINISHED 4 +#define EV_PPP_AUTHORIZED 5 +#define EV_IP_CHANGED 100 +#define EV_SHAPE_CHANGED 101 + +#endif + diff --git a/accel-pptpd/ppp/ppp.c b/accel-pptpd/ppp/ppp.c index 1e2ed86f..8f385e71 100644 --- a/accel-pptpd/ppp/ppp.c +++ b/accel-pptpd/ppp/ppp.c @@ -14,6 +14,7 @@ #include "triton.h" +#include "events.h" #include "ppp.h" #include "ppp_fsm.h" #include "log.h" @@ -157,7 +158,7 @@ int __export establish_ppp(struct ppp_t *ppp) log_debug("ppp established\n"); - ppp_notify_starting(ppp); + triton_event_fire(EV_PPP_STARTING, ppp); start_first_layer(ppp); return 0; @@ -190,7 +191,7 @@ static void destablish_ppp(struct ppp_t *ppp) log_debug("ppp destablished\n"); - ppp_notify_finished(ppp); + triton_event_fire(EV_PPP_FINISHED, ppp); ppp->ctrl->finished(ppp); } @@ -324,7 +325,7 @@ void __export ppp_layer_started(struct ppp_t *ppp, struct ppp_layer_data_t *d) if (n->entry.next==&ppp->layers) { ppp->ctrl->started(ppp); - ppp_notify_started(ppp); + triton_event_fire(EV_PPP_STARTED, ppp); }else { n=list_entry(n->entry.next,typeof(*n),entry); @@ -366,7 +367,7 @@ void __export ppp_terminate(struct ppp_t *ppp, int hard) log_debug("ppp_terminate\n"); - ppp_notify_finishing(ppp); + triton_event_fire(EV_PPP_FINISHING, ppp); if (hard) { destablish_ppp(ppp); diff --git a/accel-pptpd/ppp/ppp.h b/accel-pptpd/ppp/ppp.h index a82e975b..ce6854a3 100644 --- a/accel-pptpd/ppp/ppp.h +++ b/accel-pptpd/ppp/ppp.h @@ -53,16 +53,6 @@ struct ppp_ctrl_t void (*finished)(struct ppp_t*); }; -struct ppp_notified_t -{ - struct list_head entry; - void (*starting)(struct ppp_notified_t *, struct ppp_t *); - void (*started)(struct ppp_notified_t *, struct ppp_t *); - void (*finishing)(struct ppp_notified_t *, struct ppp_t *); - void (*finished)(struct ppp_notified_t *, struct ppp_t *); - void (*authenticated)(struct ppp_notified_t *, struct ppp_t *); -}; - struct ppp_pd_t { struct list_head entry; @@ -149,13 +139,6 @@ int ppp_register_layer(const char *name, struct ppp_layer_t *); void ppp_unregister_layer(struct ppp_layer_t *); struct ppp_layer_data_t *ppp_find_layer_data(struct ppp_t *, struct ppp_layer_t *); -void ppp_register_notified(struct ppp_notified_t *); -void ppp_unregister_notified(struct ppp_notified_t *); -void ppp_notify_starting(struct ppp_t *ppp); -void ppp_notify_started(struct ppp_t *ppp); -void ppp_notify_finishing(struct ppp_t *ppp); -void ppp_notify_finished(struct ppp_t *ppp); - extern int conf_ppp_verbose; extern int sock_fd; // internet socket for ioctls diff --git a/accel-pptpd/ppp/ppp_auth.c b/accel-pptpd/ppp/ppp_auth.c index 0a362e66..0a6630be 100644 --- a/accel-pptpd/ppp/ppp_auth.c +++ b/accel-pptpd/ppp/ppp_auth.c @@ -3,6 +3,7 @@ #include <arpa/inet.h> #include "ppp.h" +#include "events.h" #include "ppp_lcp.h" #include "log.h" @@ -301,6 +302,7 @@ void __export auth_successed(struct ppp_t *ppp, char *username) struct auth_layer_data_t *ad=container_of(ppp_find_layer_data(ppp,&auth_layer),typeof(*ad),ld); log_debug("auth_layer_started\n"); ppp->username = username; + triton_event_fire(EV_PPP_AUTHORIZED, ppp); ppp_layer_started(ppp,&ad->ld); } diff --git a/accel-pptpd/radius/radius.c b/accel-pptpd/radius/radius.c index 3fc1171c..47a9aeaa 100644 --- a/accel-pptpd/radius/radius.c +++ b/accel-pptpd/radius/radius.c @@ -5,6 +5,7 @@ #include <unistd.h> #include <arpa/inet.h> +#include "events.h" #include "log.h" #include "ppp.h" #include "pwdb.h" @@ -35,7 +36,7 @@ char *conf_dm_coa_secret; static LIST_HEAD(sessions); static pthread_rwlock_t sessions_lock = PTHREAD_RWLOCK_INITIALIZER; -static struct ppp_notified_t notified; +static void *pd_key; static struct ipdb_t ipdb; void rad_proc_attrs(struct rad_req_t *req) @@ -99,12 +100,12 @@ static struct ipdb_item_t *get_ip(struct ppp_t *ppp) return NULL; } -static void ppp_starting(struct ppp_notified_t *n, struct ppp_t *ppp) +static void ppp_starting(struct ppp_t *ppp) { struct radius_pd_t *pd = malloc(sizeof(*pd)); memset(pd, 0, sizeof(*pd)); - pd->pd.key = n; + pd->pd.key = pd_key; pd->ppp = ppp; pthread_mutex_init(&pd->lock, NULL); list_add_tail(&pd->pd.entry, &ppp->pd_list); @@ -114,20 +115,20 @@ static void ppp_starting(struct ppp_notified_t *n, struct ppp_t *ppp) pthread_rwlock_unlock(&sessions_lock); } -static void ppp_started(struct ppp_notified_t *n, struct ppp_t *ppp) +static void ppp_started(struct ppp_t *ppp) { struct radius_pd_t *rpd = find_pd(ppp); if (rad_acct_start(rpd)) ppp_terminate(rpd->ppp, 0); } -static void ppp_finishing(struct ppp_notified_t *n, struct ppp_t *ppp) +static void ppp_finishing(struct ppp_t *ppp) { struct radius_pd_t *rpd = find_pd(ppp); rad_acct_stop(rpd); } -static void ppp_finished(struct ppp_notified_t *n, struct ppp_t *ppp) +static void ppp_finished(struct ppp_t *ppp) { struct radius_pd_t *rpd = find_pd(ppp); @@ -150,7 +151,7 @@ struct radius_pd_t *find_pd(struct ppp_t *ppp) struct radius_pd_t *rpd; list_for_each_entry(pd, &ppp->pd_list, entry) { - if (pd->key == ¬ified) { + if (pd->key == pd_key) { rpd = container_of(pd, typeof(*rpd), pd); return rpd; } @@ -239,13 +240,6 @@ static struct pwdb_t pwdb = { .check = check, }; -static struct ppp_notified_t notified = { - .starting = ppp_starting, - .started = ppp_started, - .finishing = ppp_finishing, - .finished = ppp_finished, -}; - static int parse_server(const char *opt, char **name, int *port, char **secret) { char *str = strdup(opt); @@ -325,6 +319,10 @@ static void __init radius_init(void) pwdb_register(&pwdb); ipdb_register(&ipdb); - ppp_register_notified(¬ified); + + triton_event_register_handler(EV_PPP_STARTING, (triton_event_func)ppp_starting); + triton_event_register_handler(EV_PPP_STARTED, (triton_event_func)ppp_started); + triton_event_register_handler(EV_PPP_FINISHING, (triton_event_func)ppp_finishing); + triton_event_register_handler(EV_PPP_FINISHED, (triton_event_func)ppp_finished); } diff --git a/accel-pptpd/triton/event.c b/accel-pptpd/triton/event.c index 17483ec7..442543f2 100644 --- a/accel-pptpd/triton/event.c +++ b/accel-pptpd/triton/event.c @@ -26,7 +26,7 @@ int event_init(void) return 0; } -int triton_event_register_handler(int ev_id, triton_event_func func) +int __export triton_event_register_handler(int ev_id, triton_event_func func) { struct _triton_event_t *ev; struct event_handler_t *h; @@ -85,7 +85,7 @@ int triton_event_register_handler(int ev_id, triton_event_func func) return -1; }*/ -void triton_event_fire(int ev_id, void *arg) +void __export triton_event_fire(int ev_id, void *arg) { struct _triton_event_t *ev; struct event_handler_t *h; diff --git a/accel-pptpd/triton/triton.c b/accel-pptpd/triton/triton.c index 742d4936..8b25f039 100644 --- a/accel-pptpd/triton/triton.c +++ b/accel-pptpd/triton/triton.c @@ -313,6 +313,9 @@ int __export triton_init(const char *conf_file, const char *mod_sect) if (timer_init()) return -1; + if (event_init()) + return -1; + if (load_modules(mod_sect)) return -1; |