[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lwip-devel] [PATCH v2] PPP, PPPoE: Use service name and concentrator na
From: |
Jacob Kroon |
Subject: |
[lwip-devel] [PATCH v2] PPP, PPPoE: Use service name and concentrator name |
Date: |
Thu, 20 Dec 2018 03:01:34 +0100 |
* Make pppoe_create() actually store the passed service name and
concentrator name, so that they are passed in the PADI/PADR/PADS packets
* Assume that the user application won't be freeing the strings and
just copy the string pointers, therefore remove the mem_free() in
pppoe_destroy()
* Since only the pointers are copied now, make them 'const' in pppoe_softc
---
src/include/netif/ppp/pppoe.h | 4 ++--
src/netif/ppp/pppoe.c | 15 ++++++---------
2 files changed, 8 insertions(+), 11 deletions(-)
V2:
Only copy the string pointers, not the contents, so remove freeing in
pppoe_destroy() and make the pointers const
diff --git a/src/include/netif/ppp/pppoe.h b/src/include/netif/ppp/pppoe.h
index e2d20a2b..8994d38c 100644
--- a/src/include/netif/ppp/pppoe.h
+++ b/src/include/netif/ppp/pppoe.h
@@ -150,8 +150,8 @@ struct pppoe_softc {
u8_t sc_state; /* discovery phase or session connected */
#if PPPOE_SCNAME_SUPPORT
- char *sc_service_name; /* if != NULL: requested name of service */
- char *sc_concentrator_name; /* if != NULL: requested concentrator id */
+ const char *sc_service_name; /* if != NULL: requested name of service */
+ const char *sc_concentrator_name; /* if != NULL: requested concentrator id */
#endif /* PPPOE_SCNAME_SUPPORT */
u8_t sc_ac_cookie[PPPOE_MAX_AC_COOKIE_LEN]; /* content of AC cookie we must
echo back */
u8_t sc_ac_cookie_len; /* length of cookie data */
diff --git a/src/netif/ppp/pppoe.c b/src/netif/ppp/pppoe.c
index 47ec95b1..971b36b3 100644
--- a/src/netif/ppp/pppoe.c
+++ b/src/netif/ppp/pppoe.c
@@ -175,8 +175,10 @@ ppp_pcb *pppoe_create(struct netif *pppif,
{
ppp_pcb *ppp;
struct pppoe_softc *sc;
+#if !PPPOE_SCNAME_SUPPORT
LWIP_UNUSED_ARG(service_name);
LWIP_UNUSED_ARG(concentrator_name);
+#endif /* !PPPOE_SCNAME_SUPPORT */
LWIP_ASSERT_CORE_LOCKED();
sc = (struct pppoe_softc *)LWIP_MEMPOOL_ALLOC(PPPOE_IF);
@@ -193,6 +195,10 @@ ppp_pcb *pppoe_create(struct netif *pppif,
memset(sc, 0, sizeof(struct pppoe_softc));
sc->pcb = ppp;
sc->sc_ethif = ethif;
+#if PPPOE_SCNAME_SUPPORT
+ sc->sc_service_name = service_name;
+ sc->sc_concentrator_name = concentrator_name;
+#endif /* PPPOE_SCNAME_SUPPORT */
/* put the new interface at the head of the list */
sc->next = pppoe_softc_list;
pppoe_softc_list = sc;
@@ -300,15 +306,6 @@ pppoe_destroy(ppp_pcb *ppp, void *ctx)
break;
}
}
-
-#if PPPOE_SCNAME_SUPPORT
- if (sc->sc_concentrator_name) {
- mem_free(sc->sc_concentrator_name);
- }
- if (sc->sc_service_name) {
- mem_free(sc->sc_service_name);
- }
-#endif /* PPPOE_SCNAME_SUPPORT */
LWIP_MEMPOOL_FREE(PPPOE_IF, sc);
return ERR_OK;
--
2.11.0
- [lwip-devel] [PATCH v2] PPP, PPPoE: Use service name and concentrator name,
Jacob Kroon <=