PPP, merged ppp_link_set_callbacks() into ppp_new()

This commit is contained in:
Sylvain Rochet 2015-09-13 18:28:06 +02:00
parent 46204a9f86
commit c15b357889
5 changed files with 8 additions and 16 deletions

View File

@ -387,10 +387,8 @@ int ppp_init(void);
*/ */
/* Create a new PPP control block */ /* Create a new PPP control block */
ppp_pcb *ppp_new(struct netif *pppif, ppp_link_status_cb_fn link_status_cb, void *ctx_cb); ppp_pcb *ppp_new(struct netif *pppif, const struct link_callbacks *callbacks, void *link_ctx_cb,
ppp_link_status_cb_fn link_status_cb, void *ctx_cb);
/* Set link callback functions */
void ppp_link_set_callbacks(ppp_pcb *pcb, const struct link_callbacks *callbacks, void *ctx);
/* Set a PPP PCB to its initial state */ /* Set a PPP PCB to its initial state */
void ppp_clear(ppp_pcb *pcb); void ppp_clear(ppp_pcb *pcb);

View File

@ -567,7 +567,7 @@ int ppp_init(void) {
* Return a new PPP connection control block pointer * Return a new PPP connection control block pointer
* on success or a null pointer on failure. * on success or a null pointer on failure.
*/ */
ppp_pcb *ppp_new(struct netif *pppif, ppp_link_status_cb_fn link_status_cb, void *ctx_cb) { ppp_pcb *ppp_new(struct netif *pppif, const struct link_callbacks *callbacks, void *link_ctx_cb, ppp_link_status_cb_fn link_status_cb, void *ctx_cb) {
ppp_pcb *pcb; ppp_pcb *pcb;
/* PPP is single-threaded: without a callback, /* PPP is single-threaded: without a callback,
@ -637,17 +637,14 @@ ppp_pcb *ppp_new(struct netif *pppif, ppp_link_status_cb_fn link_status_cb, void
return NULL; return NULL;
} }
pcb->link_cb = callbacks;
pcb->link_ctx_cb = link_ctx_cb;
pcb->link_status_cb = link_status_cb; pcb->link_status_cb = link_status_cb;
pcb->ctx_cb = ctx_cb; pcb->ctx_cb = ctx_cb;
new_phase(pcb, PPP_PHASE_DEAD); new_phase(pcb, PPP_PHASE_DEAD);
return pcb; return pcb;
} }
void ppp_link_set_callbacks(ppp_pcb *pcb, const struct link_callbacks *callbacks, void *ctx) {
pcb->link_cb = callbacks;
pcb->link_ctx_cb = ctx;
}
/* Set a PPP PCB to its initial state */ /* Set a PPP PCB to its initial state */
void ppp_clear(ppp_pcb *pcb) { void ppp_clear(ppp_pcb *pcb) {
const struct protent *protp; const struct protent *protp;

View File

@ -179,12 +179,11 @@ ppp_pcb *pppoe_create(struct netif *pppif,
return NULL; return NULL;
} }
ppp = ppp_new(pppif, link_status_cb, ctx_cb); ppp = ppp_new(pppif, &pppoe_callbacks, sc, link_status_cb, ctx_cb);
if (ppp == NULL) { if (ppp == NULL) {
memp_free(MEMP_PPPOE_IF, sc); memp_free(MEMP_PPPOE_IF, sc);
return NULL; return NULL;
} }
ppp_link_set_callbacks(ppp, &pppoe_callbacks, sc);
memset(sc, 0, sizeof(struct pppoe_softc)); memset(sc, 0, sizeof(struct pppoe_softc));
/* changed to real address later */ /* changed to real address later */

View File

@ -129,11 +129,10 @@ ppp_pcb *pppol2tp_create(struct netif *pppif,
goto memp_malloc_l2tp_failed; goto memp_malloc_l2tp_failed;
} }
ppp = ppp_new(pppif, link_status_cb, ctx_cb); ppp = ppp_new(pppif, &pppol2tp_callbacks, l2tp, link_status_cb, ctx_cb);
if (ppp == NULL) { if (ppp == NULL) {
goto ppp_new_failed; goto ppp_new_failed;
} }
ppp_link_set_callbacks(ppp, &pppol2tp_callbacks, l2tp);
#if LWIP_IPV6 #if LWIP_IPV6
if (IP_IS_V6_VAL(*ipaddr)) { if (IP_IS_V6_VAL(*ipaddr)) {

View File

@ -178,12 +178,11 @@ ppp_pcb *pppos_create(struct netif *pppif, pppos_output_cb_fn output_cb,
return NULL; return NULL;
} }
ppp = ppp_new(pppif, link_status_cb, ctx_cb); ppp = ppp_new(pppif, &pppos_callbacks, pppos, link_status_cb, ctx_cb);
if (ppp == NULL) { if (ppp == NULL) {
memp_free(MEMP_PPPOS_PCB, pppos); memp_free(MEMP_PPPOS_PCB, pppos);
return NULL; return NULL;
} }
ppp_link_set_callbacks(ppp, &pppos_callbacks, pppos);
pppos->ppp = ppp; pppos->ppp = ppp;
pppos->output_cb = output_cb; pppos->output_cb = output_cb;