PPP: remove unused and confusing return values other than ERR_OK for ppp_connect and ppp_listen

User should not use ppp_connect or ppp_listen return value to retry
later, it must wait for the callback to be called. This is primarily
done this way to have a consistent behavior with and without the
holdoff feature.

Remove returned error value from PPP link level API connect and listen
callbacks because we are not using them anymore, then make ppp_connect
or ppp_listen to always return ERR_OK, thus we are not breaking the PPP
user API.

We don't need the return code here, all PPP link level drivers can't
fail at all (e.g. PPPoS) or retry if necessary (PPPoE and PPPoL2TP).

(cherry picked from commit e16d10ade6)
This commit is contained in:
Sylvain Rochet 2017-03-08 22:17:40 +01:00 committed by goldsimon
parent c71c9882c2
commit 2848b17e80
5 changed files with 14 additions and 17 deletions

View File

@ -138,10 +138,10 @@
*/ */
struct link_callbacks { struct link_callbacks {
/* Start a connection (e.g. Initiate discovery phase) */ /* Start a connection (e.g. Initiate discovery phase) */
err_t (*connect) (ppp_pcb *pcb, void *ctx); void (*connect) (ppp_pcb *pcb, void *ctx);
#if PPP_SERVER #if PPP_SERVER
/* Listen for an incoming connection (Passive mode) */ /* Listen for an incoming connection (Passive mode) */
err_t (*listen) (ppp_pcb *pcb, void *ctx); void (*listen) (ppp_pcb *pcb, void *ctx);
#endif /* PPP_SERVER */ #endif /* PPP_SERVER */
/* End a connection (i.e. initiate disconnect phase) */ /* End a connection (i.e. initiate disconnect phase) */
void (*disconnect) (ppp_pcb *pcb, void *ctx); void (*disconnect) (ppp_pcb *pcb, void *ctx);

View File

@ -275,8 +275,8 @@ err_t ppp_connect(ppp_pcb *pcb, u16_t holdoff) {
PPPDEBUG(LOG_DEBUG, ("ppp_connect[%d]: holdoff=%d\n", pcb->netif->num, holdoff)); PPPDEBUG(LOG_DEBUG, ("ppp_connect[%d]: holdoff=%d\n", pcb->netif->num, holdoff));
if (holdoff == 0) { if (holdoff == 0) {
new_phase(pcb, PPP_PHASE_INITIALIZE); ppp_do_connect(pcb);
return pcb->link_cb->connect(pcb, pcb->link_ctx_cb); return ERR_OK;
} }
new_phase(pcb, PPP_PHASE_HOLDOFF); new_phase(pcb, PPP_PHASE_HOLDOFF);
@ -302,7 +302,8 @@ err_t ppp_listen(ppp_pcb *pcb) {
if (pcb->link_cb->listen) { if (pcb->link_cb->listen) {
new_phase(pcb, PPP_PHASE_INITIALIZE); new_phase(pcb, PPP_PHASE_INITIALIZE);
return pcb->link_cb->listen(pcb, pcb->link_ctx_cb); pcb->link_cb->listen(pcb, pcb->link_ctx_cb);
return ERR_OK;
} }
return ERR_IF; return ERR_IF;
} }

View File

@ -119,7 +119,7 @@ LWIP_MEMPOOL_DECLARE(PPPOE_IF, MEMP_NUM_PPPOE_INTERFACES, sizeof(struct pppoe_so
/* callbacks called from PPP core */ /* callbacks called from PPP core */
static err_t pppoe_write(ppp_pcb *ppp, void *ctx, struct pbuf *p); static err_t pppoe_write(ppp_pcb *ppp, void *ctx, struct pbuf *p);
static err_t pppoe_netif_output(ppp_pcb *ppp, void *ctx, struct pbuf *p, u_short protocol); static err_t pppoe_netif_output(ppp_pcb *ppp, void *ctx, struct pbuf *p, u_short protocol);
static err_t pppoe_connect(ppp_pcb *ppp, void *ctx); static void pppoe_connect(ppp_pcb *ppp, void *ctx);
static void pppoe_disconnect(ppp_pcb *ppp, void *ctx); static void pppoe_disconnect(ppp_pcb *ppp, void *ctx);
static err_t pppoe_destroy(ppp_pcb *ppp, void *ctx); static err_t pppoe_destroy(ppp_pcb *ppp, void *ctx);
@ -879,7 +879,7 @@ pppoe_timeout(void *arg)
} }
/* Start a connection (i.e. initiate discovery phase) */ /* Start a connection (i.e. initiate discovery phase) */
static err_t static void
pppoe_connect(ppp_pcb *ppp, void *ctx) pppoe_connect(ppp_pcb *ppp, void *ctx)
{ {
err_t err; err_t err;
@ -934,7 +934,6 @@ pppoe_connect(ppp_pcb *ppp, void *ctx)
PPPDEBUG(LOG_DEBUG, ("pppoe: %c%c%"U16_F": failed to send PADI, error=%d\n", sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num, err)); PPPDEBUG(LOG_DEBUG, ("pppoe: %c%c%"U16_F": failed to send PADI, error=%d\n", sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num, err));
} }
sys_timeout(PPPOE_DISC_TIMEOUT, pppoe_timeout, sc); sys_timeout(PPPOE_DISC_TIMEOUT, pppoe_timeout, sc);
return err;
} }
/* disconnect */ /* disconnect */

View File

@ -73,7 +73,7 @@ LWIP_MEMPOOL_DECLARE(PPPOL2TP_PCB, MEMP_NUM_PPPOL2TP_INTERFACES, sizeof(pppol2tp
static err_t pppol2tp_write(ppp_pcb *ppp, void *ctx, struct pbuf *p); static err_t pppol2tp_write(ppp_pcb *ppp, void *ctx, struct pbuf *p);
static err_t pppol2tp_netif_output(ppp_pcb *ppp, void *ctx, struct pbuf *p, u_short protocol); static err_t pppol2tp_netif_output(ppp_pcb *ppp, void *ctx, struct pbuf *p, u_short protocol);
static err_t pppol2tp_destroy(ppp_pcb *ppp, void *ctx); /* Destroy a L2TP control block */ static err_t pppol2tp_destroy(ppp_pcb *ppp, void *ctx); /* Destroy a L2TP control block */
static err_t pppol2tp_connect(ppp_pcb *ppp, void *ctx); /* Be a LAC, connect to a LNS. */ static void pppol2tp_connect(ppp_pcb *ppp, void *ctx); /* Be a LAC, connect to a LNS. */
static void pppol2tp_disconnect(ppp_pcb *ppp, void *ctx); /* Disconnect */ static void pppol2tp_disconnect(ppp_pcb *ppp, void *ctx); /* Disconnect */
/* Prototypes for procedures local to this file. */ /* Prototypes for procedures local to this file. */
@ -255,7 +255,7 @@ static err_t pppol2tp_destroy(ppp_pcb *ppp, void *ctx) {
} }
/* Be a LAC, connect to a LNS. */ /* Be a LAC, connect to a LNS. */
static err_t pppol2tp_connect(ppp_pcb *ppp, void *ctx) { static void pppol2tp_connect(ppp_pcb *ppp, void *ctx) {
err_t err; err_t err;
pppol2tp_pcb *l2tp = (pppol2tp_pcb *)ctx; pppol2tp_pcb *l2tp = (pppol2tp_pcb *)ctx;
lcp_options *lcp_wo; lcp_options *lcp_wo;
@ -326,7 +326,6 @@ static err_t pppol2tp_connect(ppp_pcb *ppp, void *ctx) {
PPPDEBUG(LOG_DEBUG, ("pppol2tp: failed to send SCCRQ, error=%d\n", err)); PPPDEBUG(LOG_DEBUG, ("pppol2tp: failed to send SCCRQ, error=%d\n", err));
} }
sys_timeout(PPPOL2TP_CONTROL_TIMEOUT, pppol2tp_timeout, l2tp); sys_timeout(PPPOL2TP_CONTROL_TIMEOUT, pppol2tp_timeout, l2tp);
return err;
} }
/* Disconnect */ /* Disconnect */

View File

@ -57,9 +57,9 @@ LWIP_MEMPOOL_DECLARE(PPPOS_PCB, MEMP_NUM_PPPOS_INTERFACES, sizeof(pppos_pcb), "P
/* callbacks called from PPP core */ /* callbacks called from PPP core */
static err_t pppos_write(ppp_pcb *ppp, void *ctx, struct pbuf *p); static err_t pppos_write(ppp_pcb *ppp, void *ctx, struct pbuf *p);
static err_t pppos_netif_output(ppp_pcb *ppp, void *ctx, struct pbuf *pb, u16_t protocol); static err_t pppos_netif_output(ppp_pcb *ppp, void *ctx, struct pbuf *pb, u16_t protocol);
static err_t pppos_connect(ppp_pcb *ppp, void *ctx); static void pppos_connect(ppp_pcb *ppp, void *ctx);
#if PPP_SERVER #if PPP_SERVER
static err_t pppos_listen(ppp_pcb *ppp, void *ctx); static void pppos_listen(ppp_pcb *ppp, void *ctx);
#endif /* PPP_SERVER */ #endif /* PPP_SERVER */
static void pppos_disconnect(ppp_pcb *ppp, void *ctx); static void pppos_disconnect(ppp_pcb *ppp, void *ctx);
static err_t pppos_destroy(ppp_pcb *ppp, void *ctx); static err_t pppos_destroy(ppp_pcb *ppp, void *ctx);
@ -298,7 +298,7 @@ pppos_netif_output(ppp_pcb *ppp, void *ctx, struct pbuf *pb, u16_t protocol)
return err; return err;
} }
static err_t static void
pppos_connect(ppp_pcb *ppp, void *ctx) pppos_connect(ppp_pcb *ppp, void *ctx)
{ {
pppos_pcb *pppos = (pppos_pcb *)ctx; pppos_pcb *pppos = (pppos_pcb *)ctx;
@ -327,11 +327,10 @@ pppos_connect(ppp_pcb *ppp, void *ctx)
*/ */
PPPDEBUG(LOG_INFO, ("pppos_connect: unit %d: connecting\n", ppp->netif->num)); PPPDEBUG(LOG_INFO, ("pppos_connect: unit %d: connecting\n", ppp->netif->num));
ppp_start(ppp); /* notify upper layers */ ppp_start(ppp); /* notify upper layers */
return ERR_OK;
} }
#if PPP_SERVER #if PPP_SERVER
static err_t static void
pppos_listen(ppp_pcb *ppp, void *ctx) pppos_listen(ppp_pcb *ppp, void *ctx)
{ {
pppos_pcb *pppos = (pppos_pcb *)ctx; pppos_pcb *pppos = (pppos_pcb *)ctx;
@ -360,7 +359,6 @@ pppos_listen(ppp_pcb *ppp, void *ctx)
*/ */
PPPDEBUG(LOG_INFO, ("pppos_listen: unit %d: listening\n", ppp->netif->num)); PPPDEBUG(LOG_INFO, ("pppos_listen: unit %d: listening\n", ppp->netif->num));
ppp_start(ppp); /* notify upper layers */ ppp_start(ppp); /* notify upper layers */
return ERR_OK;
} }
#endif /* PPP_SERVER */ #endif /* PPP_SERVER */