mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-12-26 03:16:18 +00:00
Introduce LWIP_PACKED_CAST to fix error issue with ARMCC
ARMCC when using __packed structures will not implicitly convert a pointer to a member of a packed structure to something which does not have __packed. This results in a compiler error and was found with calls to icmp6_param_problem While there is a #pragma pack mode in ARMCC that disables this error, it does require existing ports to switch over their packing mode and perform integration
This commit is contained in:
parent
d39e8cd827
commit
472f7985b5
@ -976,7 +976,7 @@ netif_found:
|
|||||||
/* check payload length is multiple of 8 octets when mbit is set */
|
/* check payload length is multiple of 8 octets when mbit is set */
|
||||||
if (IP6_FRAG_MBIT(frag_hdr) && (IP6H_PLEN(ip6hdr) & 0x7)) {
|
if (IP6_FRAG_MBIT(frag_hdr) && (IP6H_PLEN(ip6hdr) & 0x7)) {
|
||||||
/* ipv6 payload length is not multiple of 8 octets */
|
/* ipv6 payload length is not multiple of 8 octets */
|
||||||
icmp6_param_problem(p, ICMP6_PP_FIELD, &ip6hdr->_plen);
|
icmp6_param_problem(p, ICMP6_PP_FIELD, LWIP_PACKED_CAST(const void *, &ip6hdr->_plen));
|
||||||
LWIP_DEBUGF(IP6_DEBUG, ("ip6_input: packet with invalid payload length dropped\n"));
|
LWIP_DEBUGF(IP6_DEBUG, ("ip6_input: packet with invalid payload length dropped\n"));
|
||||||
pbuf_free(p);
|
pbuf_free(p);
|
||||||
IP6_STATS_INC(ip6.drop);
|
IP6_STATS_INC(ip6.drop);
|
||||||
|
@ -220,6 +220,11 @@ typedef int ssize_t;
|
|||||||
#define LWIP_PTR_NUMERIC_CAST(target_type, val) LWIP_CONST_CAST(target_type, val)
|
#define LWIP_PTR_NUMERIC_CAST(target_type, val) LWIP_CONST_CAST(target_type, val)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/** Avoid warnings/errors related to implicitly casting away packed attributes by doing a explicit cast */
|
||||||
|
#ifndef LWIP_PACKED_CAST
|
||||||
|
#define LWIP_PACKED_CAST(target_type, val) LWIP_CONST_CAST(target_type, val)
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Allocates a memory buffer of specified size that is of sufficient size to align
|
/** Allocates a memory buffer of specified size that is of sufficient size to align
|
||||||
* its start address using LWIP_MEM_ALIGN.
|
* its start address using LWIP_MEM_ALIGN.
|
||||||
* You can declare your own version here e.g. to enforce alignment without adding
|
* You can declare your own version here e.g. to enforce alignment without adding
|
||||||
|
Loading…
Reference in New Issue
Block a user