mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2025-01-30 21:32:46 +00:00
Included patch #5920: Create define to override C-library memcpy. 2 Defines are created: MEMCPY() for normal memcpy, SMEMCPY() for situations where some compilers might inline the copy and save a function call. Also replaced all calls to memcpy() with calls to (S)MEMCPY().
This commit is contained in:
parent
b41520f9e2
commit
255d5a748f
@ -22,6 +22,11 @@ HISTORY
|
|||||||
* [Enter new changes just after this line - do not remove this line]
|
* [Enter new changes just after this line - do not remove this line]
|
||||||
|
|
||||||
++ New features:
|
++ New features:
|
||||||
|
2007-05-08 Simon Goldschmidt
|
||||||
|
* opt.h, *.c/*.h: Included patch #5920: Create define to override C-library
|
||||||
|
memcpy. 2 Defines are created: MEMCPY() for normal memcpy, SMEMCPY() for
|
||||||
|
situations where some compilers might inline the copy and save a function
|
||||||
|
call. Also replaced all calls to memcpy() with calls to (S)MEMCPY().
|
||||||
|
|
||||||
2007-05-08 Simon Goldschmidt
|
2007-05-08 Simon Goldschmidt
|
||||||
* mem.h: If MEM_LIBC_MALLOC==1, allow the defines (e.g. mem_malloc() -> malloc())
|
* mem.h: If MEM_LIBC_MALLOC==1, allow the defines (e.g. mem_malloc() -> malloc())
|
||||||
|
@ -171,7 +171,7 @@ netbuf_copy_partial(struct netbuf *buf, void *dataptr, u16_t len, u16_t offset)
|
|||||||
if (buf_copy_len > len)
|
if (buf_copy_len > len)
|
||||||
buf_copy_len = len;
|
buf_copy_len = len;
|
||||||
/* copy the necessary parts of the buffer */
|
/* copy the necessary parts of the buffer */
|
||||||
memcpy(&((char*)dataptr)[left], &((char*)p->payload)[offset], buf_copy_len);
|
MEMCPY(&((char*)dataptr)[left], &((char*)p->payload)[offset], buf_copy_len);
|
||||||
left += buf_copy_len;
|
left += buf_copy_len;
|
||||||
len -= buf_copy_len;
|
len -= buf_copy_len;
|
||||||
offset = 0;
|
offset = 0;
|
||||||
|
@ -191,7 +191,7 @@ lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen)
|
|||||||
if (*addrlen > sizeof(sin))
|
if (*addrlen > sizeof(sin))
|
||||||
*addrlen = sizeof(sin);
|
*addrlen = sizeof(sin);
|
||||||
|
|
||||||
memcpy(addr, &sin, *addrlen);
|
SMEMCPY(addr, &sin, *addrlen);
|
||||||
|
|
||||||
newsock = alloc_socket(newconn);
|
newsock = alloc_socket(newconn);
|
||||||
if (newsock == -1) {
|
if (newsock == -1) {
|
||||||
@ -412,7 +412,7 @@ lwip_recvfrom(int s, void *mem, int len, unsigned int flags,
|
|||||||
if (*fromlen > sizeof(sin))
|
if (*fromlen > sizeof(sin))
|
||||||
*fromlen = sizeof(sin);
|
*fromlen = sizeof(sin);
|
||||||
|
|
||||||
memcpy(from, &sin, *fromlen);
|
SMEMCPY(from, &sin, *fromlen);
|
||||||
|
|
||||||
LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_recvfrom(%d): addr=", s));
|
LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_recvfrom(%d): addr=", s));
|
||||||
ip_addr_debug_print(SOCKETS_DEBUG, addr);
|
ip_addr_debug_print(SOCKETS_DEBUG, addr);
|
||||||
@ -890,7 +890,7 @@ int lwip_getpeername (int s, struct sockaddr *name, socklen_t *namelen)
|
|||||||
if (*namelen > sizeof(sin))
|
if (*namelen > sizeof(sin))
|
||||||
*namelen = sizeof(sin);
|
*namelen = sizeof(sin);
|
||||||
|
|
||||||
memcpy(name, &sin, *namelen);
|
SMEMCPY(name, &sin, *namelen);
|
||||||
sock_set_errno(sock, 0);
|
sock_set_errno(sock, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -922,7 +922,7 @@ int lwip_getsockname (int s, struct sockaddr *name, socklen_t *namelen)
|
|||||||
if (*namelen > sizeof(sin))
|
if (*namelen > sizeof(sin))
|
||||||
*namelen = sizeof(sin);
|
*namelen = sizeof(sin);
|
||||||
|
|
||||||
memcpy(name, &sin, *namelen);
|
SMEMCPY(name, &sin, *namelen);
|
||||||
sock_set_errno(sock, 0);
|
sock_set_errno(sock, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -141,7 +141,7 @@ icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t)
|
|||||||
ICMPH_TYPE_SET(idur, ICMP_DUR);
|
ICMPH_TYPE_SET(idur, ICMP_DUR);
|
||||||
ICMPH_CODE_SET(idur, t);
|
ICMPH_CODE_SET(idur, t);
|
||||||
|
|
||||||
memcpy((u8_t *)q->payload + 8, p->payload, IP_HLEN + 8);
|
SMEMCPY((u8_t *)q->payload + 8, p->payload, IP_HLEN + 8);
|
||||||
|
|
||||||
/* calculate checksum */
|
/* calculate checksum */
|
||||||
idur->chksum = 0;
|
idur->chksum = 0;
|
||||||
@ -179,7 +179,7 @@ icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t)
|
|||||||
ICMPH_CODE_SET(tehdr, t);
|
ICMPH_CODE_SET(tehdr, t);
|
||||||
|
|
||||||
/* copy fields from original packet */
|
/* copy fields from original packet */
|
||||||
memcpy((u8_t *)q->payload + 8, (u8_t *)p->payload, IP_HLEN + 8);
|
SMEMCPY((u8_t *)q->payload + 8, (u8_t *)p->payload, IP_HLEN + 8);
|
||||||
|
|
||||||
/* calculate checksum */
|
/* calculate checksum */
|
||||||
tehdr->chksum = 0;
|
tehdr->chksum = 0;
|
||||||
|
@ -74,7 +74,7 @@ copy_from_pbuf(struct pbuf *p, u16_t * offset,
|
|||||||
p->len -= *offset;
|
p->len -= *offset;
|
||||||
while (len) {
|
while (len) {
|
||||||
l = len < p->len ? len : p->len;
|
l = len < p->len ? len : p->len;
|
||||||
memcpy(buffer, p->payload, l);
|
MEMCPY(buffer, p->payload, l);
|
||||||
buffer += l;
|
buffer += l;
|
||||||
len -= l;
|
len -= l;
|
||||||
if (len)
|
if (len)
|
||||||
@ -141,7 +141,7 @@ ip_reass(struct pbuf *p)
|
|||||||
buffer. The timer is updated with the maximum age. */
|
buffer. The timer is updated with the maximum age. */
|
||||||
if (ip_reasstmr == 0) {
|
if (ip_reasstmr == 0) {
|
||||||
LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass: new packet\n"));
|
LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass: new packet\n"));
|
||||||
memcpy(iphdr, fraghdr, IP_HLEN);
|
SMEMCPY(iphdr, fraghdr, IP_HLEN);
|
||||||
ip_reasstmr = IP_REASS_MAXAGE;
|
ip_reasstmr = IP_REASS_MAXAGE;
|
||||||
ip_reassflags = 0;
|
ip_reassflags = 0;
|
||||||
/* Clear the bitmap. */
|
/* Clear the bitmap. */
|
||||||
@ -277,7 +277,7 @@ ip_reass(struct pbuf *p)
|
|||||||
("ip_reass: memcpy from %p (%"S16_F") to %p, %"S16_F" bytes\n",
|
("ip_reass: memcpy from %p (%"S16_F") to %p, %"S16_F" bytes\n",
|
||||||
(void *)&ip_reassbuf[i], i, q->payload,
|
(void *)&ip_reassbuf[i], i, q->payload,
|
||||||
q->len > ip_reasslen - i ? ip_reasslen - i : q->len));
|
q->len > ip_reasslen - i ? ip_reasslen - i : q->len));
|
||||||
memcpy(q->payload, &ip_reassbuf[i],
|
MEMCPY(q->payload, &ip_reassbuf[i],
|
||||||
q->len > ip_reasslen - i ? ip_reasslen - i : q->len);
|
q->len > ip_reasslen - i ? ip_reasslen - i : q->len);
|
||||||
i += q->len;
|
i += q->len;
|
||||||
}
|
}
|
||||||
@ -333,7 +333,7 @@ ip_frag(struct pbuf *p, struct netif *netif, struct ip_addr *dest)
|
|||||||
|
|
||||||
/* Copy the IP header in it */
|
/* Copy the IP header in it */
|
||||||
iphdr = rambuf->payload;
|
iphdr = rambuf->payload;
|
||||||
memcpy(iphdr, p->payload, IP_HLEN);
|
SMEMCPY(iphdr, p->payload, IP_HLEN);
|
||||||
|
|
||||||
/* Save original offset */
|
/* Save original offset */
|
||||||
tmp = ntohs(IPH_OFFSET(iphdr));
|
tmp = ntohs(IPH_OFFSET(iphdr));
|
||||||
|
@ -130,7 +130,7 @@ icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t)
|
|||||||
idur->type = (u8_t)ICMP6_DUR;
|
idur->type = (u8_t)ICMP6_DUR;
|
||||||
idur->icode = (u8_t)t;
|
idur->icode = (u8_t)t;
|
||||||
|
|
||||||
memcpy((u8_t *)q->payload + 8, p->payload, IP_HLEN + 8);
|
SMEMCPY((u8_t *)q->payload + 8, p->payload, IP_HLEN + 8);
|
||||||
|
|
||||||
/* calculate checksum */
|
/* calculate checksum */
|
||||||
idur->chksum = 0;
|
idur->chksum = 0;
|
||||||
@ -162,7 +162,7 @@ icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t)
|
|||||||
tehdr->icode = (u8_t)t;
|
tehdr->icode = (u8_t)t;
|
||||||
|
|
||||||
/* copy fields from original packet */
|
/* copy fields from original packet */
|
||||||
memcpy((u8_t *)q->payload + 8, (u8_t *)p->payload, IP_HLEN + 8);
|
SMEMCPY((u8_t *)q->payload + 8, (u8_t *)p->payload, IP_HLEN + 8);
|
||||||
|
|
||||||
/* calculate checksum */
|
/* calculate checksum */
|
||||||
tehdr->chksum = 0;
|
tehdr->chksum = 0;
|
||||||
|
@ -58,7 +58,7 @@ ip_addr_cmp(struct ip_addr *addr1, struct ip_addr *addr2)
|
|||||||
void
|
void
|
||||||
ip_addr_set(struct ip_addr *dest, struct ip_addr *src)
|
ip_addr_set(struct ip_addr *dest, struct ip_addr *src)
|
||||||
{
|
{
|
||||||
memcpy(dest, src, sizeof(struct ip_addr));
|
SMEMCPY(dest, src, sizeof(struct ip_addr));
|
||||||
/* dest->addr[0] = src->addr[0];
|
/* dest->addr[0] = src->addr[0];
|
||||||
dest->addr[1] = src->addr[1];
|
dest->addr[1] = src->addr[1];
|
||||||
dest->addr[2] = src->addr[2];
|
dest->addr[2] = src->addr[2];
|
||||||
|
@ -808,7 +808,7 @@ pbuf_copy(struct pbuf *p_to, struct pbuf *p_from)
|
|||||||
/* current p_from does not fit into current p_to */
|
/* current p_from does not fit into current p_to */
|
||||||
len = p_to->len - offset_to;
|
len = p_to->len - offset_to;
|
||||||
}
|
}
|
||||||
memcpy((u8_t*)p_to->payload + offset_to, (u8_t*)p_from->payload + offset_from, len);
|
MEMCPY((u8_t*)p_to->payload + offset_to, (u8_t*)p_from->payload + offset_from, len);
|
||||||
#ifdef LWIP_DEBUG
|
#ifdef LWIP_DEBUG
|
||||||
copied += len;
|
copied += len;
|
||||||
#endif
|
#endif
|
||||||
|
@ -747,7 +747,7 @@ tcp_seg_copy(struct tcp_seg *seg)
|
|||||||
if (cseg == NULL) {
|
if (cseg == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
memcpy((u8_t *)cseg, (const u8_t *)seg, sizeof(struct tcp_seg));
|
SMEMCPY((u8_t *)cseg, (const u8_t *)seg, sizeof(struct tcp_seg));
|
||||||
pbuf_ref(cseg->p);
|
pbuf_ref(cseg->p);
|
||||||
return cseg;
|
return cseg;
|
||||||
}
|
}
|
||||||
|
@ -213,7 +213,7 @@ tcp_enqueue(struct tcp_pcb *pcb, void *arg, u16_t len,
|
|||||||
}
|
}
|
||||||
++queuelen;
|
++queuelen;
|
||||||
if (arg != NULL) {
|
if (arg != NULL) {
|
||||||
memcpy(seg->p->payload, ptr, seglen);
|
MEMCPY(seg->p->payload, ptr, seglen);
|
||||||
}
|
}
|
||||||
seg->dataptr = seg->p->payload;
|
seg->dataptr = seg->p->payload;
|
||||||
}
|
}
|
||||||
@ -280,7 +280,7 @@ tcp_enqueue(struct tcp_pcb *pcb, void *arg, u16_t len,
|
|||||||
/* Copy options into data portion of segment.
|
/* Copy options into data portion of segment.
|
||||||
Options can thus only be sent in non data carrying
|
Options can thus only be sent in non data carrying
|
||||||
segments such as SYN|ACK. */
|
segments such as SYN|ACK. */
|
||||||
memcpy(seg->dataptr, optdata, optlen);
|
SMEMCPY(seg->dataptr, optdata, optlen);
|
||||||
}
|
}
|
||||||
LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_TRACE, ("tcp_enqueue: queueing %"U32_F":%"U32_F" (0x%"X16_F")\n",
|
LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_TRACE, ("tcp_enqueue: queueing %"U32_F":%"U32_F" (0x%"X16_F")\n",
|
||||||
ntohl(seg->tcphdr->seqno),
|
ntohl(seg->tcphdr->seqno),
|
||||||
|
@ -53,6 +53,18 @@
|
|||||||
#define NO_SYS 0
|
#define NO_SYS 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* override this if you have a faster implementation at hand than the one
|
||||||
|
included in your C library */
|
||||||
|
#ifndef MEMCPY
|
||||||
|
#define MEMCPY(dst,src,len) memcpy(dst,src,len)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* override this with care: some compilers (e.g. gcc) can inline a call to
|
||||||
|
memcpy() if the length is known at compile time and is small */
|
||||||
|
#ifndef SMEMCPY
|
||||||
|
#define SMEMCPY(dst,src,len) memcpy(dst,src,len)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* ---------- Memory options ---------- */
|
/* ---------- Memory options ---------- */
|
||||||
#ifndef MEM_LIBC_MALLOC
|
#ifndef MEM_LIBC_MALLOC
|
||||||
#define MEM_LIBC_MALLOC 0
|
#define MEM_LIBC_MALLOC 0
|
||||||
|
@ -576,8 +576,8 @@ etharp_arp_input(struct netif *netif, struct eth_addr *ethaddr, struct pbuf *p)
|
|||||||
|
|
||||||
/* Copy struct ip_addr2 to aligned ip_addr, to support compilers without
|
/* Copy struct ip_addr2 to aligned ip_addr, to support compilers without
|
||||||
* structure packing (not using structure copy which breaks strict-aliasing rules). */
|
* structure packing (not using structure copy which breaks strict-aliasing rules). */
|
||||||
memcpy(&sipaddr, &hdr->sipaddr, sizeof(sipaddr));
|
SMEMCPY(&sipaddr, &hdr->sipaddr, sizeof(sipaddr));
|
||||||
memcpy(&dipaddr, &hdr->dipaddr, sizeof(dipaddr));
|
SMEMCPY(&dipaddr, &hdr->dipaddr, sizeof(dipaddr));
|
||||||
|
|
||||||
/* this interface is not configured? */
|
/* this interface is not configured? */
|
||||||
if (netif->ip_addr.addr == 0) {
|
if (netif->ip_addr.addr == 0) {
|
||||||
|
@ -114,7 +114,7 @@ loopif_output(struct netif *netif, struct pbuf *p,
|
|||||||
*/
|
*/
|
||||||
ptr = r->payload;
|
ptr = r->payload;
|
||||||
for(q = p; q != NULL; q = q->next) {
|
for(q = p; q != NULL; q = q->next) {
|
||||||
memcpy(ptr, q->payload, q->len);
|
MEMCPY(ptr, q->payload, q->len);
|
||||||
ptr += q->len;
|
ptr += q->len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -199,7 +199,7 @@ void MD5Final (unsigned char hash[], MD5_CTX *mdContext)
|
|||||||
mdContext->digest[ii+3] =
|
mdContext->digest[ii+3] =
|
||||||
(unsigned char)((mdContext->buf[i] >> 24) & 0xFF);
|
(unsigned char)((mdContext->buf[i] >> 24) & 0xFF);
|
||||||
}
|
}
|
||||||
memcpy(hash, mdContext->digest, 16);
|
SMEMCPY(hash, mdContext->digest, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Basic MD5 step. Transforms buf based on in.
|
/* Basic MD5 step. Transforms buf based on in.
|
||||||
|
@ -840,7 +840,7 @@ void ppp_send_config(
|
|||||||
*/
|
*/
|
||||||
void ppp_set_xaccm(int unit, ext_accm *accm)
|
void ppp_set_xaccm(int unit, ext_accm *accm)
|
||||||
{
|
{
|
||||||
memcpy(pppControl[unit].outACCM, accm, sizeof(ext_accm));
|
SMEMCPY(pppControl[unit].outACCM, accm, sizeof(ext_accm));
|
||||||
PPPDEBUG((LOG_INFO, "ppp_set_xaccm[%d]: outACCM=%X %X %X %X\n",
|
PPPDEBUG((LOG_INFO, "ppp_set_xaccm[%d]: outACCM=%X %X %X %X\n",
|
||||||
unit,
|
unit,
|
||||||
pppControl[unit].outACCM[0],
|
pppControl[unit].outACCM[0],
|
||||||
@ -1075,11 +1075,11 @@ int sifaddr(
|
|||||||
st = 0;
|
st = 0;
|
||||||
PPPDEBUG((LOG_WARNING, "sifup[%d]: bad parms\n", pd));
|
PPPDEBUG((LOG_WARNING, "sifup[%d]: bad parms\n", pd));
|
||||||
} else {
|
} else {
|
||||||
memcpy(&pc->addrs.our_ipaddr, &o, sizeof(o));
|
SMEMCPY(&pc->addrs.our_ipaddr, &o, sizeof(o));
|
||||||
memcpy(&pc->addrs.his_ipaddr, &h, sizeof(h));
|
SMEMCPY(&pc->addrs.his_ipaddr, &h, sizeof(h));
|
||||||
memcpy(&pc->addrs.netmask, &m, sizeof(m));
|
SMEMCPY(&pc->addrs.netmask, &m, sizeof(m));
|
||||||
memcpy(&pc->addrs.dns1, &ns1, sizeof(ns1));
|
SMEMCPY(&pc->addrs.dns1, &ns1, sizeof(ns1));
|
||||||
memcpy(&pc->addrs.dns2, &ns2, sizeof(ns2));
|
SMEMCPY(&pc->addrs.dns2, &ns2, sizeof(ns2));
|
||||||
}
|
}
|
||||||
return st;
|
return st;
|
||||||
}
|
}
|
||||||
@ -1269,7 +1269,7 @@ static struct pbuf *pppSingleBuf(struct pbuf *p)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for(b = p, pl = q->payload; b != NULL; b = b->next) {
|
for(b = p, pl = q->payload; b != NULL; b = b->next) {
|
||||||
memcpy(pl, b->payload, b->len);
|
MEMCPY(pl, b->payload, b->len);
|
||||||
pl += b->len;
|
pl += b->len;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1394,7 +1394,7 @@ static void pppInput(void *arg)
|
|||||||
}
|
}
|
||||||
#if BYTE_ORDER == LITTLE_ENDIAN
|
#if BYTE_ORDER == LITTLE_ENDIAN
|
||||||
protocol = htons(protocol);
|
protocol = htons(protocol);
|
||||||
memcpy(nb->payload, &protocol, sizeof(protocol));
|
SMEMCPY(nb->payload, &protocol, sizeof(protocol));
|
||||||
#endif
|
#endif
|
||||||
lcp_sprotrej(pd, nb->payload, nb->len);
|
lcp_sprotrej(pd, nb->payload, nb->len);
|
||||||
}
|
}
|
||||||
|
@ -206,7 +206,7 @@ enum NPmode {
|
|||||||
#define DECPTR(n, cp) ((cp) -= (n))
|
#define DECPTR(n, cp) ((cp) -= (n))
|
||||||
|
|
||||||
#define BCMP(s0, s1, l) memcmp((u_char *)(s0), (u_char *)(s1), (l))
|
#define BCMP(s0, s1, l) memcmp((u_char *)(s0), (u_char *)(s1), (l))
|
||||||
#define BCOPY(s, d, l) memcpy((d), (s), (l))
|
#define BCOPY(s, d, l) MEMCPY((d), (s), (l))
|
||||||
#define BZERO(s, n) memset(s, 0, n)
|
#define BZERO(s, n) memset(s, 0, n)
|
||||||
#if PPP_DEBUG
|
#if PPP_DEBUG
|
||||||
#define PRINTMSG(m, l) { m[l] = '\0'; ppp_trace(LOG_INFO, "Remote message: %s\n", m); }
|
#define PRINTMSG(m, l) { m[l] = '\0'; ppp_trace(LOG_INFO, "Remote message: %s\n", m); }
|
||||||
|
@ -127,7 +127,7 @@ void avGenRand(char *buf, u32_t bufLen)
|
|||||||
MD5Update(&md5, (u_char *)&randCount, sizeof(randCount));
|
MD5Update(&md5, (u_char *)&randCount, sizeof(randCount));
|
||||||
MD5Final(tmp, &md5);
|
MD5Final(tmp, &md5);
|
||||||
randCount++;
|
randCount++;
|
||||||
memcpy(buf, tmp, n);
|
MEMCPY(buf, tmp, n);
|
||||||
buf += n;
|
buf += n;
|
||||||
bufLen -= n;
|
bufLen -= n;
|
||||||
}
|
}
|
||||||
|
@ -605,7 +605,7 @@ int vj_uncompress_tcp(
|
|||||||
|
|
||||||
bufptr = n0->payload;
|
bufptr = n0->payload;
|
||||||
for(q = np; q != NULL; q = q->next) {
|
for(q = np; q != NULL; q = q->next) {
|
||||||
memcpy(q->payload, bufptr, q->len);
|
MEMCPY(q->payload, bufptr, q->len);
|
||||||
bufptr += q->len;
|
bufptr += q->len;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -631,7 +631,7 @@ int vj_uncompress_tcp(
|
|||||||
n0 = np;
|
n0 = np;
|
||||||
}
|
}
|
||||||
LWIP_ASSERT("n0->len >= cs->cs_hlen", n0->len >= cs->cs_hlen);
|
LWIP_ASSERT("n0->len >= cs->cs_hlen", n0->len >= cs->cs_hlen);
|
||||||
memcpy(n0->payload, &cs->cs_ip, cs->cs_hlen);
|
MEMCPY(n0->payload, &cs->cs_ip, cs->cs_hlen);
|
||||||
|
|
||||||
*nb = n0;
|
*nb = n0;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user