lwip-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]