diff --git a/src/api/api_msg.c b/src/api/api_msg.c index c6be8653..df4d9d7d 100644 --- a/src/api/api_msg.c +++ b/src/api/api_msg.c @@ -154,14 +154,7 @@ recv_raw(void *arg, struct raw_pcb *pcb, struct pbuf *p, } #endif /* LWIP_SO_RCVBUF */ /* copy the whole packet into new pbufs */ - q = pbuf_alloc(PBUF_RAW, p->tot_len, PBUF_RAM); - if (q != NULL) { - if (pbuf_copy(q, p) != ERR_OK) { - pbuf_free(q); - q = NULL; - } - } - + q = pbuf_clone(PBUF_RAW, PBUF_RAM, p); if (q != NULL) { u16_t len; buf = (struct netbuf *)memp_malloc(MEMP_NETBUF); diff --git a/src/core/ipv4/etharp.c b/src/core/ipv4/etharp.c index 9bb1df52..57ce6a87 100644 --- a/src/core/ipv4/etharp.c +++ b/src/core/ipv4/etharp.c @@ -1012,13 +1012,7 @@ etharp_query(struct netif *netif, const ip4_addr_t *ipaddr, struct pbuf *q) } if (copy_needed) { /* copy the whole packet into new pbufs */ - p = pbuf_alloc(PBUF_LINK, q->tot_len, PBUF_RAM); - if (p != NULL) { - if (pbuf_copy(p, q) != ERR_OK) { - pbuf_free(p); - p = NULL; - } - } + p = pbuf_clone(PBUF_LINK, PBUF_RAM, q); } else { /* referencing the old pbuf is enough */ p = q; diff --git a/src/core/ipv6/nd6.c b/src/core/ipv6/nd6.c index 31a1f694..90990279 100644 --- a/src/core/ipv6/nd6.c +++ b/src/core/ipv6/nd6.c @@ -2046,7 +2046,7 @@ nd6_queue_packet(s8_t neighbor_index, struct pbuf *q) } if (copy_needed) { /* copy the whole packet into new pbufs */ - p = pbuf_alloc(PBUF_LINK, q->tot_len, PBUF_RAM); + p = pbuf_clone(PBUF_LINK, PBUF_RAM, q); while ((p == NULL) && (neighbor_cache[neighbor_index].q != NULL)) { /* Free oldest packet (as per RFC recommendation) */ #if LWIP_ND6_QUEUEING @@ -2058,13 +2058,7 @@ nd6_queue_packet(s8_t neighbor_index, struct pbuf *q) pbuf_free(neighbor_cache[neighbor_index].q); neighbor_cache[neighbor_index].q = NULL; #endif /* LWIP_ND6_QUEUEING */ - p = pbuf_alloc(PBUF_LINK, q->tot_len, PBUF_RAM); - } - if (p != NULL) { - if (pbuf_copy(p, q) != ERR_OK) { - pbuf_free(p); - p = NULL; - } + p = pbuf_clone(PBUF_LINK, PBUF_RAM, q); } } else { /* referencing the old pbuf is enough */