mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-10-05 22:29:49 +00:00
Removed 2 mem_mallocs: error string can be a global variable, include memory for sc_ac_cookie in struct pppoe_softc; commented out unused code (sc_service_name/sc_concentrator_name)
This commit is contained in:
parent
ccb53d9e7d
commit
c0e7d54e37
@ -188,6 +188,15 @@ struct { \
|
|||||||
#define IFF_PASSIVE IFF_LINK0 /* wait passively for connection */
|
#define IFF_PASSIVE IFF_LINK0 /* wait passively for connection */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef PPPOE_ERRORSTRING_LEN
|
||||||
|
#define PPPOE_ERRORSTRING_LEN 64
|
||||||
|
#endif
|
||||||
|
static char pppoe_error_tmp[PPPOE_ERRORSTRING_LEN];
|
||||||
|
|
||||||
|
#ifndef PPPOE_MAX_AC_COOKIE_LEN
|
||||||
|
#define PPPOE_MAX_AC_COOKIE_LEN 64
|
||||||
|
#endif
|
||||||
|
|
||||||
struct pppoe_softc {
|
struct pppoe_softc {
|
||||||
LIST_ENTRY(pppoe_softc) sc_list;
|
LIST_ENTRY(pppoe_softc) sc_list;
|
||||||
struct netif *sc_ethif; /* ethernet interface we are using */
|
struct netif *sc_ethif; /* ethernet interface we are using */
|
||||||
@ -198,9 +207,11 @@ struct pppoe_softc {
|
|||||||
struct eth_addr sc_dest; /* hardware address of concentrator */
|
struct eth_addr sc_dest; /* hardware address of concentrator */
|
||||||
u16_t sc_session; /* PPPoE session id */
|
u16_t sc_session; /* PPPoE session id */
|
||||||
|
|
||||||
|
#ifdef PPPOE_TODO
|
||||||
char *sc_service_name; /* if != NULL: requested name of service */
|
char *sc_service_name; /* if != NULL: requested name of service */
|
||||||
char *sc_concentrator_name; /* if != NULL: requested concentrator id */
|
char *sc_concentrator_name; /* if != NULL: requested concentrator id */
|
||||||
u8_t *sc_ac_cookie; /* content of AC cookie we must echo back */
|
#endif /* PPPOE_TODO */
|
||||||
|
u8_t sc_ac_cookie[PPPOE_MAX_AC_COOKIE_LEN]; /* content of AC cookie we must echo back */
|
||||||
size_t sc_ac_cookie_len; /* length of cookie data */
|
size_t sc_ac_cookie_len; /* length of cookie data */
|
||||||
#ifdef PPPOE_SERVER
|
#ifdef PPPOE_SERVER
|
||||||
u8_t *sc_hunique; /* content of host unique we must echo back */
|
u8_t *sc_hunique; /* content of host unique we must echo back */
|
||||||
@ -286,15 +297,14 @@ pppoe_destroy(struct netif *ifp)
|
|||||||
sys_untimeout(pppoe_timeout, sc);
|
sys_untimeout(pppoe_timeout, sc);
|
||||||
LIST_REMOVE(sc, sc_list);
|
LIST_REMOVE(sc, sc_list);
|
||||||
|
|
||||||
|
#ifdef PPPOE_TODO
|
||||||
if (sc->sc_concentrator_name) {
|
if (sc->sc_concentrator_name) {
|
||||||
mem_free(sc->sc_concentrator_name);
|
mem_free(sc->sc_concentrator_name);
|
||||||
}
|
}
|
||||||
if (sc->sc_service_name) {
|
if (sc->sc_service_name) {
|
||||||
mem_free(sc->sc_service_name);
|
mem_free(sc->sc_service_name);
|
||||||
}
|
}
|
||||||
if (sc->sc_ac_cookie) {
|
#endif /* PPPOE_TODO */
|
||||||
mem_free(sc->sc_ac_cookie);
|
|
||||||
}
|
|
||||||
mem_free(sc);
|
mem_free(sc);
|
||||||
|
|
||||||
return ERR_OK;
|
return ERR_OK;
|
||||||
@ -384,7 +394,6 @@ pppoe_dispatch_disc_pkt(struct netif *netif, struct pbuf *pb)
|
|||||||
struct pppoe_softc *sc;
|
struct pppoe_softc *sc;
|
||||||
const char *err_msg;
|
const char *err_msg;
|
||||||
char devname[6];
|
char devname[6];
|
||||||
char *error;
|
|
||||||
u8_t *ac_cookie;
|
u8_t *ac_cookie;
|
||||||
u16_t ac_cookie_len;
|
u16_t ac_cookie_len;
|
||||||
#ifdef PPPOE_SERVER
|
#ifdef PPPOE_SERVER
|
||||||
@ -487,17 +496,11 @@ pppoe_dispatch_disc_pkt(struct netif *netif, struct pbuf *pb)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (err_msg) {
|
if (err_msg) {
|
||||||
error = NULL;
|
|
||||||
if (errortag && len) {
|
if (errortag && len) {
|
||||||
error = mem_malloc(len+1);
|
u16_t error_len = LWIP_MIN(len, sizeof(pppoe_error_tmp)-1);
|
||||||
if (error) {
|
strncpy(pppoe_error_tmp, (char*)pb->payload + off + sizeof(pt), error_len);
|
||||||
strncpy(error, (char*)pb->payload + off + sizeof(pt), len);
|
pppoe_error_tmp[error_len-1] = '\0';
|
||||||
error[len-1] = '\0';
|
printf("%s: %s: %s\n", devname, err_msg, pppoe_error_tmp);
|
||||||
}
|
|
||||||
}
|
|
||||||
if (error) {
|
|
||||||
printf("%s: %s: %s\n", devname, err_msg, error);
|
|
||||||
mem_free(error);
|
|
||||||
} else {
|
} else {
|
||||||
printf("%s: %s\n", devname, err_msg);
|
printf("%s: %s\n", devname, err_msg);
|
||||||
}
|
}
|
||||||
@ -604,13 +607,6 @@ breakbreak:;
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (ac_cookie) {
|
if (ac_cookie) {
|
||||||
if (sc->sc_ac_cookie) {
|
|
||||||
mem_free(sc->sc_ac_cookie);
|
|
||||||
}
|
|
||||||
sc->sc_ac_cookie = mem_malloc(ac_cookie_len);
|
|
||||||
if (sc->sc_ac_cookie == NULL) {
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
sc->sc_ac_cookie_len = ac_cookie_len;
|
sc->sc_ac_cookie_len = ac_cookie_len;
|
||||||
MEMCPY(sc->sc_ac_cookie, ac_cookie, ac_cookie_len);
|
MEMCPY(sc->sc_ac_cookie, ac_cookie, ac_cookie_len);
|
||||||
}
|
}
|
||||||
@ -778,7 +774,10 @@ pppoe_send_padi(struct pppoe_softc *sc)
|
|||||||
{
|
{
|
||||||
struct pbuf *pb;
|
struct pbuf *pb;
|
||||||
u8_t *p;
|
u8_t *p;
|
||||||
int len, l1 = 0, l2 = 0; /* XXX: gcc */
|
int len;
|
||||||
|
#ifdef PPPOE_TODO
|
||||||
|
int l1 = 0, l2 = 0; /* XXX: gcc */
|
||||||
|
#endif /* PPPOE_TODO */
|
||||||
|
|
||||||
if (sc->sc_state >PPPOE_STATE_PADI_SENT) {
|
if (sc->sc_state >PPPOE_STATE_PADI_SENT) {
|
||||||
PPPDEBUG(LOG_ERR, ("ERROR: pppoe_send_padi in state %d", sc->sc_state));
|
PPPDEBUG(LOG_ERR, ("ERROR: pppoe_send_padi in state %d", sc->sc_state));
|
||||||
@ -786,6 +785,7 @@ pppoe_send_padi(struct pppoe_softc *sc)
|
|||||||
|
|
||||||
/* calculate length of frame (excluding ethernet header + pppoe header) */
|
/* calculate length of frame (excluding ethernet header + pppoe header) */
|
||||||
len = 2 + 2 + 2 + 2 + sizeof sc; /* service name tag is required, host unique is send too */
|
len = 2 + 2 + 2 + 2 + sizeof sc; /* service name tag is required, host unique is send too */
|
||||||
|
#ifdef PPPOE_TODO
|
||||||
if (sc->sc_service_name != NULL) {
|
if (sc->sc_service_name != NULL) {
|
||||||
l1 = (int)strlen(sc->sc_service_name);
|
l1 = (int)strlen(sc->sc_service_name);
|
||||||
len += l1;
|
len += l1;
|
||||||
@ -794,6 +794,7 @@ pppoe_send_padi(struct pppoe_softc *sc)
|
|||||||
l2 = (int)strlen(sc->sc_concentrator_name);
|
l2 = (int)strlen(sc->sc_concentrator_name);
|
||||||
len += 2 + 2 + l2;
|
len += 2 + 2 + l2;
|
||||||
}
|
}
|
||||||
|
#endif /* PPPOE_TODO */
|
||||||
LWIP_ASSERT("sizeof(struct eth_hdr) + PPPOE_HEADERLEN + len <= 0xffff",
|
LWIP_ASSERT("sizeof(struct eth_hdr) + PPPOE_HEADERLEN + len <= 0xffff",
|
||||||
sizeof(struct eth_hdr) + PPPOE_HEADERLEN + len <= 0xffff);
|
sizeof(struct eth_hdr) + PPPOE_HEADERLEN + len <= 0xffff);
|
||||||
|
|
||||||
@ -808,19 +809,24 @@ pppoe_send_padi(struct pppoe_softc *sc)
|
|||||||
/* fill in pkt */
|
/* fill in pkt */
|
||||||
PPPOE_ADD_HEADER(p, PPPOE_CODE_PADI, 0, (u16_t)len);
|
PPPOE_ADD_HEADER(p, PPPOE_CODE_PADI, 0, (u16_t)len);
|
||||||
PPPOE_ADD_16(p, PPPOE_TAG_SNAME);
|
PPPOE_ADD_16(p, PPPOE_TAG_SNAME);
|
||||||
|
#ifdef PPPOE_TODO
|
||||||
if (sc->sc_service_name != NULL) {
|
if (sc->sc_service_name != NULL) {
|
||||||
PPPOE_ADD_16(p, l1);
|
PPPOE_ADD_16(p, l1);
|
||||||
MEMCPY(p, sc->sc_service_name, l1);
|
MEMCPY(p, sc->sc_service_name, l1);
|
||||||
p += l1;
|
p += l1;
|
||||||
} else {
|
} else
|
||||||
|
#endif /* PPPOE_TODO */
|
||||||
|
{
|
||||||
PPPOE_ADD_16(p, 0);
|
PPPOE_ADD_16(p, 0);
|
||||||
}
|
}
|
||||||
|
#ifdef PPPOE_TODO
|
||||||
if (sc->sc_concentrator_name != NULL) {
|
if (sc->sc_concentrator_name != NULL) {
|
||||||
PPPOE_ADD_16(p, PPPOE_TAG_ACNAME);
|
PPPOE_ADD_16(p, PPPOE_TAG_ACNAME);
|
||||||
PPPOE_ADD_16(p, l2);
|
PPPOE_ADD_16(p, l2);
|
||||||
MEMCPY(p, sc->sc_concentrator_name, l2);
|
MEMCPY(p, sc->sc_concentrator_name, l2);
|
||||||
p += l2;
|
p += l2;
|
||||||
}
|
}
|
||||||
|
#endif /* PPPOE_TODO */
|
||||||
PPPOE_ADD_16(p, PPPOE_TAG_HUNIQUE);
|
PPPOE_ADD_16(p, PPPOE_TAG_HUNIQUE);
|
||||||
PPPOE_ADD_16(p, sizeof(sc));
|
PPPOE_ADD_16(p, sizeof(sc));
|
||||||
MEMCPY(p, &sc, sizeof sc);
|
MEMCPY(p, &sc, sizeof sc);
|
||||||
@ -954,10 +960,6 @@ pppoe_do_disconnect(struct pppoe_softc *sc)
|
|||||||
/* cleanup softc */
|
/* cleanup softc */
|
||||||
sc->sc_state = PPPOE_STATE_INITIAL;
|
sc->sc_state = PPPOE_STATE_INITIAL;
|
||||||
MEMCPY(&sc->sc_dest, ethbroadcast.addr, sizeof(sc->sc_dest));
|
MEMCPY(&sc->sc_dest, ethbroadcast.addr, sizeof(sc->sc_dest));
|
||||||
if (sc->sc_ac_cookie) {
|
|
||||||
mem_free(sc->sc_ac_cookie);
|
|
||||||
sc->sc_ac_cookie = NULL;
|
|
||||||
}
|
|
||||||
sc->sc_ac_cookie_len = 0;
|
sc->sc_ac_cookie_len = 0;
|
||||||
#ifdef PPPOE_SERVER
|
#ifdef PPPOE_SERVER
|
||||||
if (sc->sc_hunique) {
|
if (sc->sc_hunique) {
|
||||||
@ -993,17 +995,22 @@ pppoe_send_padr(struct pppoe_softc *sc)
|
|||||||
{
|
{
|
||||||
struct pbuf *pb;
|
struct pbuf *pb;
|
||||||
u8_t *p;
|
u8_t *p;
|
||||||
size_t len, l1 = 0; /* XXX: gcc */
|
size_t len;
|
||||||
|
#ifdef PPPOE_TODO
|
||||||
|
size_t l1 = 0; /* XXX: gcc */
|
||||||
|
#endif /* PPPOE_TODO */
|
||||||
|
|
||||||
if (sc->sc_state != PPPOE_STATE_PADR_SENT) {
|
if (sc->sc_state != PPPOE_STATE_PADR_SENT) {
|
||||||
return ERR_CONN;
|
return ERR_CONN;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = 2 + 2 + 2 + 2 + sizeof(sc); /* service name, host unique */
|
len = 2 + 2 + 2 + 2 + sizeof(sc); /* service name, host unique */
|
||||||
|
#ifdef PPPOE_TODO
|
||||||
if (sc->sc_service_name != NULL) { /* service name tag maybe empty */
|
if (sc->sc_service_name != NULL) { /* service name tag maybe empty */
|
||||||
l1 = strlen(sc->sc_service_name);
|
l1 = strlen(sc->sc_service_name);
|
||||||
len += l1;
|
len += l1;
|
||||||
}
|
}
|
||||||
|
#endif /* PPPOE_TODO */
|
||||||
if (sc->sc_ac_cookie_len > 0) {
|
if (sc->sc_ac_cookie_len > 0) {
|
||||||
len += 2 + 2 + sc->sc_ac_cookie_len; /* AC cookie */
|
len += 2 + 2 + sc->sc_ac_cookie_len; /* AC cookie */
|
||||||
}
|
}
|
||||||
@ -1017,11 +1024,14 @@ pppoe_send_padr(struct pppoe_softc *sc)
|
|||||||
p = (u8_t*)pb->payload + sizeof (struct eth_hdr);
|
p = (u8_t*)pb->payload + sizeof (struct eth_hdr);
|
||||||
PPPOE_ADD_HEADER(p, PPPOE_CODE_PADR, 0, len);
|
PPPOE_ADD_HEADER(p, PPPOE_CODE_PADR, 0, len);
|
||||||
PPPOE_ADD_16(p, PPPOE_TAG_SNAME);
|
PPPOE_ADD_16(p, PPPOE_TAG_SNAME);
|
||||||
|
#ifdef PPPOE_TODO
|
||||||
if (sc->sc_service_name != NULL) {
|
if (sc->sc_service_name != NULL) {
|
||||||
PPPOE_ADD_16(p, l1);
|
PPPOE_ADD_16(p, l1);
|
||||||
MEMCPY(p, sc->sc_service_name, l1);
|
MEMCPY(p, sc->sc_service_name, l1);
|
||||||
p += l1;
|
p += l1;
|
||||||
} else {
|
} else
|
||||||
|
#endif /* PPPOE_TODO */
|
||||||
|
{
|
||||||
PPPOE_ADD_16(p, 0);
|
PPPOE_ADD_16(p, 0);
|
||||||
}
|
}
|
||||||
if (sc->sc_ac_cookie_len > 0) {
|
if (sc->sc_ac_cookie_len > 0) {
|
||||||
@ -1219,10 +1229,6 @@ pppoe_clear_softc(struct pppoe_softc *sc, const char *message)
|
|||||||
|
|
||||||
/* clean up softc */
|
/* clean up softc */
|
||||||
MEMCPY(&sc->sc_dest, ethbroadcast.addr, sizeof(sc->sc_dest));
|
MEMCPY(&sc->sc_dest, ethbroadcast.addr, sizeof(sc->sc_dest));
|
||||||
if (sc->sc_ac_cookie) {
|
|
||||||
mem_free(sc->sc_ac_cookie);
|
|
||||||
sc->sc_ac_cookie = NULL;
|
|
||||||
}
|
|
||||||
sc->sc_ac_cookie_len = 0;
|
sc->sc_ac_cookie_len = 0;
|
||||||
sc->sc_session = 0;
|
sc->sc_session = 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user