diff options
Diffstat (limited to 'accel-pptpd/ipdb.c')
-rw-r--r-- | accel-pptpd/ipdb.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/accel-pptpd/ipdb.c b/accel-pptpd/ipdb.c index 7b679dc..62a99e9 100644 --- a/accel-pptpd/ipdb.c +++ b/accel-pptpd/ipdb.c @@ -3,23 +3,24 @@ static LIST_HEAD(ipdb_handlers); -int __export ipdb_get(struct ppp_t *ppp, in_addr_t *addr, in_addr_t *peer_addr) +__export struct ipdb_item_t *ipdb_get(struct ppp_t *ppp) { struct ipdb_t *ipdb; + struct ipdb_item_t *it; - list_for_each_entry(ipdb, &ipdb_handlers, entry) - if (!ipdb->get(ppp, addr, peer_addr)) - return 0; + list_for_each_entry(ipdb, &ipdb_handlers, entry) { + it = ipdb->get(ppp); + if (it) + return it; + } - return -1; + return NULL; } -void __export ipdb_put(struct ppp_t *ppp, in_addr_t addr, in_addr_t peer_addr) -{ - struct ipdb_t *ipdb; - list_for_each_entry(ipdb, &ipdb_handlers, entry) - if (ipdb->put) - ipdb->put(ppp, addr, peer_addr); +void __export ipdb_put(struct ppp_t *ppp, struct ipdb_item_t *it) +{ + if (it->owner->put) + it->owner->put(ppp, it); } void __export ipdb_register(struct ipdb_t *ipdb) |