From 4aa9244b92a4280ca5b1853c0e2e81f7e21dcc38 Mon Sep 17 00:00:00 2001 From: Sylvain Rochet Date: Sun, 15 Feb 2015 22:56:28 +0100 Subject: [PATCH] PPP, PPPoS moved fd from ppp_pcb to pppos_pcb Moved fd from ppp_pcb to pppos_pcb. However PPP ioctl PPPCTLG_FD is temporarily disabled until I found a better solution. --- src/include/netif/ppp/ppp.h | 3 --- src/include/netif/ppp/pppos.h | 3 ++- src/netif/ppp/ppp.c | 2 +- src/netif/ppp/pppos.c | 25 +++++++++++++------------ 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/include/netif/ppp/ppp.h b/src/include/netif/ppp/ppp.h index 9dc3c6c3..9fd88e68 100644 --- a/src/include/netif/ppp/ppp.h +++ b/src/include/netif/ppp/ppp.h @@ -352,9 +352,6 @@ struct ppp_pcb_s { u8_t num; /* Interface number - only useful for debugging */ #endif /* PPP_DEBUG */ ppp_settings settings; -#if PPPOS_SUPPORT - sio_fd_t fd; /* File device ID of port. */ -#endif /* PPPOS_SUPPORT */ link_command_cb_fn link_command_cb; link_write_cb_fn link_write_cb; link_netif_output_cb_fn link_netif_output_cb; diff --git a/src/include/netif/ppp/pppos.h b/src/include/netif/ppp/pppos.h index 93a72062..cdef3c2f 100644 --- a/src/include/netif/ppp/pppos.h +++ b/src/include/netif/ppp/pppos.h @@ -44,7 +44,8 @@ */ typedef struct pppos_pcb_s pppos_pcb; struct pppos_pcb_s { - ppp_pcb *ppp; /* PPP PCB */ + ppp_pcb *ppp; /* PPP PCB */ + sio_fd_t fd; /* File device ID of port. */ }; /* Create a new PPPoS session. */ diff --git a/src/netif/ppp/ppp.c b/src/netif/ppp/ppp.c index 7b67a88a..f808f4fa 100644 --- a/src/netif/ppp/ppp.c +++ b/src/netif/ppp/ppp.c @@ -783,7 +783,7 @@ ppp_ioctl(ppp_pcb *pcb, int cmd, void *arg) return PPPERR_PARAM; break; -#if PPPOS_SUPPORT +#if 0/*PPPOS_SUPPORT*/ case PPPCTLG_FD: /* Get the fd associated with the ppp */ if (arg) { *(sio_fd_t *)arg = pcb->fd; diff --git a/src/netif/ppp/pppos.c b/src/netif/ppp/pppos.c index 04481046..78f339de 100644 --- a/src/netif/ppp/pppos.c +++ b/src/netif/ppp/pppos.c @@ -61,7 +61,7 @@ static err_t pppos_destroy(pppos_pcb *sc); #if PPP_INPROC_MULTITHREADED static void pppos_input_callback(void *arg); #endif /* PPP_INPROC_MULTITHREADED */ -static void pppos_xmit(ppp_pcb *pcb, struct pbuf *nb); +static void pppos_xmit(pppos_pcb *sc, struct pbuf *nb); static void pppos_free_current_input_packet(ppp_pcb_rx *pcrx); static struct pbuf *pppos_append(u_char c, struct pbuf *nb, ext_accm *out_accm); static void pppos_drop(ppp_pcb_rx *pcrx); @@ -112,7 +112,7 @@ ppp_over_serial_create(struct netif *pppif, sio_fd_t fd, } sc->ppp = ppp; - ppp->fd = fd; + sc->fd = fd; ppp_link_set_callbacks(ppp, pppos_link_command_callback, pppos_link_write_callback, pppos_link_netif_output_callback, sc); return ppp; } @@ -205,7 +205,7 @@ pppos_link_write_callback(void *pcb, struct pbuf *p) PPPDEBUG(LOG_INFO, ("ppp_write[%d]: len=%d\n", ppp->num, head->len)); /* "ppp_write[%d]: %d:%.*H", pd, head->len, LWIP_MIN(head->len * 2, 40), head->payload)); */ - pppos_xmit(ppp, head); + pppos_xmit(sc, head); pbuf_free(p); return PPPERR_NONE; } @@ -321,7 +321,7 @@ pppos_link_netif_output_callback(void *pcb, struct pbuf *pb, u_short protocol) /* Send it. */ PPPDEBUG(LOG_INFO, ("ppp_netif_output[%d]: proto=0x%"X16_F"\n", ppp->num, protocol)); - pppos_xmit(ppp, head); + pppos_xmit(sc, head); return ERR_OK; } @@ -336,7 +336,7 @@ pppos_connect(pppos_pcb *pcb) ppp_clear(ppp); ppp->rx.pcb = ppp; - ppp->rx.fd = ppp->fd; + ppp->rx.fd = pcb->fd; #if VJ_SUPPORT vj_compress_init(&ppp->vj_comp); @@ -650,26 +650,27 @@ drop: #endif /* PPP_INPROC_MULTITHREADED */ static void -pppos_xmit(ppp_pcb *pcb, struct pbuf *nb) +pppos_xmit(pppos_pcb *sc, struct pbuf *nb) { + ppp_pcb *ppp = sc->ppp; struct pbuf *b; int c; for(b = nb; b != NULL; b = b->next) { - c = sio_write(pcb->fd, (u8_t*)b->payload, b->len); + c = sio_write(sc->fd, (u8_t*)b->payload, b->len); if(c != b->len) { PPPDEBUG(LOG_WARNING, - ("PPP pppos_xmit: incomplete sio_write(fd:%"SZT_F", len:%d, c: 0x%"X8_F") c = %d\n", (size_t)pcb->fd, b->len, c, c)); + ("PPP pppos_xmit: incomplete sio_write(fd:%"SZT_F", len:%d, c: 0x%"X8_F") c = %d\n", (size_t)sc->fd, b->len, c, c)); LINK_STATS_INC(link.err); - pcb->last_xmit = 0; /* prepend PPP_FLAG to next packet */ - snmp_inc_ifoutdiscards(pcb->netif); + ppp->last_xmit = 0; /* prepend PPP_FLAG to next packet */ + snmp_inc_ifoutdiscards(ppp->netif); pbuf_free(nb); return; } } - snmp_add_ifoutoctets(pcb->netif, nb->tot_len); - snmp_inc_ifoutucastpkts(pcb->netif); + snmp_add_ifoutoctets(ppp->netif, nb->tot_len); + snmp_inc_ifoutucastpkts(ppp->netif); pbuf_free(nb); LINK_STATS_INC(link.xmit); }