l2tpd
#define l2tpd_is_stopped(l2tpd) \
(((l2tpd)->state != L2TPD_STATE_SHUTTING_DOWN && \
(l2tpd)->state != L2TPD_STATE_RUNNING)? 1 : 0)
#define l2tpd_is_shutting_down(l2tpd) \
(((l2tpd)->state == L2TPD_STATE_SHUTTING_DOWN)? 1 : 0)
((l2tpd_listener *)slist_get(&(ctrl)->l2tpd->listener, \
((l2tpd_listener *)slist_get(&(ctrl)->l2tpd->listener, \
l2tpd *l2tpd;
void l2tp_ctrl_input (l2tpd *, int, struct sockaddr *, struct sockaddr *, void *, u_char *, int);
int l2tpd_init (l2tpd *);
void l2tpd_uninit (l2tpd *);
int l2tpd_assign_call (l2tpd *, l2tp_call *);
void l2tpd_release_call (l2tpd *, l2tp_call *);
int l2tpd_start (l2tpd *);
void l2tpd_stop (l2tpd *);
void l2tpd_stop_immediatly (l2tpd *);
l2tp_ctrl *l2tpd_get_ctrl (l2tpd *, u_int);
void l2tpd_add_ctrl (l2tpd *, l2tp_ctrl *);
void l2tpd_ctrl_finished_notify(l2tpd *);
void l2tpd_remove_ctrl (l2tpd *, u_int);
int l2tpd_add_listener (l2tpd *, int, struct l2tp_conf *, struct sockaddr *);
void l2tpd_log (l2tpd *, int, const char *, ...) __attribute__((__format__ (__printf__, 3, 4)));
int l2tpd_reload(l2tpd *, struct l2tp_confs *);
void l2tpd_log_access_deny(l2tpd *, const char *, struct sockaddr *);
l2tpd_release_call(_this->ctrl->l2tpd, _this);
l2tpd_log(_this->ctrl->l2tpd, LOG_DEBUG,
_this->ctrl->l2tpd->id, _this->ctrl->id, _this->id, fmt);
if (l2tpd_assign_call(ctrl->l2tpd, _this) != 0)
l2tpd_log(_this->l2tpd, LOG_DEBUG,
l2tp_ctrl_recv_SCCRQ(l2tp_ctrl *_this, u_char *pkt, int pktlen, l2tpd *_l2tpd,
l2tp_ctrl_init(l2tp_ctrl *_this, l2tpd *_l2tpd, struct sockaddr *peer,
_this->l2tpd = _l2tpd;
_this->l2tpd->id, _this->id, fmt);
l2tpd *_l2tpd;
l2tpd_remove_ctrl(_this->l2tpd, _this->tunnel_id);
_l2tpd = _this->l2tpd;
l2tp_ctrl_input(l2tpd *_this, int listener_index, struct sockaddr *peer,
static int l2tp_ctrl_init(l2tp_ctrl *, l2tpd *, struct sockaddr *, struct sockaddr *, void *);
static int l2tp_ctrl_recv_SCCRQ(l2tp_ctrl *, u_char *, int, l2tpd *, struct sockaddr *);
((l2tpd_listener *)slist_get(&(ctrl)->l2tpd->listener, \
l2tpd_add_listener(l2tpd *_this, int idx, struct l2tp_conf *conf,
l2tpd_uninit(l2tpd *_this)
l2tpd_assign_call(l2tpd *_this, l2tp_call *call)
l2tpd_release_call(l2tpd *_this, l2tp_call *call)
l2tpd *_l2tpd;
l2tpd_start(l2tpd *_this)
l2tpd_stop_immediatly(l2tpd *_this)
l2tpd_ctrl_finished_notify(l2tpd *_this)
l2tpd *_this;
l2tpd_stop(l2tpd *_this)
l2tpd_reload(l2tpd *_this, struct l2tp_confs *l2tp_conf)
l2tpd_log_access_deny(l2tpd *_this, const char *reason, struct sockaddr *peer)
l2tpd *_l2tpd;
l2tpd_get_ctrl(l2tpd *_this, unsigned tunid)
l2tpd_add_ctrl(l2tpd *_this, l2tp_ctrl *ctrl)
l2tpd_remove_ctrl(l2tpd *_this, unsigned tunid)
l2tpd_log(l2tpd *_this, int prio, const char *fmt, ...)
l2tpd_init(l2tpd *_this)
memset(_this, 0, sizeof(l2tpd));
if (l2tpd_init(&_this->l2tpd) != 0)
l2tpd_stop(&_this->l2tpd);
if (!l2tpd_is_stopped(&_this->l2tpd))
l2tpd_uninit(&_this->l2tpd);
rval |= l2tpd_reload(&_this->l2tpd, &_this->conf.l2tp_confs);
l2tpd l2tpd;