37#ifndef LWIP_HDR_PROT_IP4_H
38#define LWIP_HDR_PROT_IP4_H
49#ifdef PACK_STRUCT_USE_INCLUDES
54 PACK_STRUCT_FIELD(u32_t addr);
57#ifdef PACK_STRUCT_USE_INCLUDES
68#ifdef PACK_STRUCT_USE_INCLUDES
75 PACK_STRUCT_FLD_8(u8_t _v_hl);
77 PACK_STRUCT_FLD_8(u8_t _tos);
79 PACK_STRUCT_FIELD(u16_t _len);
81 PACK_STRUCT_FIELD(u16_t _id);
83 PACK_STRUCT_FIELD(u16_t _offset);
87#define IP_OFFMASK 0x1fffU
89 PACK_STRUCT_FLD_8(u8_t _ttl);
91 PACK_STRUCT_FLD_8(u8_t _proto);
93 PACK_STRUCT_FIELD(u16_t _chksum);
95 PACK_STRUCT_FLD_S(ip4_addr_p_t src);
96 PACK_STRUCT_FLD_S(ip4_addr_p_t dest);
99#ifdef PACK_STRUCT_USE_INCLUDES
104#define IPH_V(hdr) ((hdr)->_v_hl >> 4)
105#define IPH_HL(hdr) ((hdr)->_v_hl & 0x0f)
106#define IPH_HL_BYTES(hdr) ((u8_t)(IPH_HL(hdr) * 4))
107#define IPH_TOS(hdr) ((hdr)->_tos)
108#define IPH_LEN(hdr) ((hdr)->_len)
109#define IPH_ID(hdr) ((hdr)->_id)
110#define IPH_OFFSET(hdr) ((hdr)->_offset)
111#define IPH_OFFSET_BYTES(hdr) ((u16_t)((lwip_ntohs(IPH_OFFSET(hdr)) & IP_OFFMASK) * 8U))
112#define IPH_TTL(hdr) ((hdr)->_ttl)
113#define IPH_PROTO(hdr) ((hdr)->_proto)
114#define IPH_CHKSUM(hdr) ((hdr)->_chksum)
117#define IPH_VHL_SET(hdr, v, hl) (hdr)->_v_hl = (u8_t)((((v) << 4) | (hl)))
118#define IPH_TOS_SET(hdr, tos) (hdr)->_tos = (tos)
119#define IPH_LEN_SET(hdr, len) (hdr)->_len = (len)
120#define IPH_ID_SET(hdr, id) (hdr)->_id = (id)
121#define IPH_OFFSET_SET(hdr, off) (hdr)->_offset = (off)
122#define IPH_TTL_SET(hdr, ttl) (hdr)->_ttl = (u8_t)(ttl)
123#define IPH_PROTO_SET(hdr, proto) (hdr)->_proto = (u8_t)(proto)
124#define IPH_CHKSUM_SET(hdr, chksum) (hdr)->_chksum = (chksum)
#define PACK_STRUCT_END
Definition: arch.h:318
#define PACK_STRUCT_BEGIN
Definition: arch.h:309
#define PACK_STRUCT_STRUCT
Definition: arch.h:330