Macros | |
#define | FOLD_U32T(u) (((u) >> 16) + ((u) & 0x0000ffffUL)) |
Split an u32_t in two u16_ts and add them up. More... | |
#define | ipX_chksum_pseudo(isipv6, p, proto, proto_len, src, dest) |
#define | ipX_chksum_pseudo_partial(isipv6, p, proto, proto_len, chksum_len, src, dest) |
#define | LWIP_CHKSUM_COPY_ALGORITHM 0 |
#define | SWAP_BYTES_IN_WORD(w) (((w) & 0xff) << 8) | (((w) & 0xff00) >> 8) |
Swap the bytes in an u16_t: much like htons() for little-endian. More... | |
Functions | |
u16_t | inet_chksum (void *dataptr, u16_t len) |
u16_t | inet_chksum_pbuf (struct pbuf *p) |
Calculate a checksum over a chain of pbufs (without pseudo-header, much like inet_chksum only pbufs are used). More... | |
u16_t | inet_chksum_pseudo (struct pbuf *p, u8_t proto, u16_t proto_len, ip_addr_t *src, ip_addr_t *dest) |
u16_t | inet_chksum_pseudo_partial (struct pbuf *p, u8_t proto, u16_t proto_len, u16_t chksum_len, ip_addr_t *src, ip_addr_t *dest) |
u16_t | ip6_chksum_pseudo (struct pbuf *p, u8_t proto, u16_t proto_len, ip6_addr_t *src, ip6_addr_t *dest) |
Calculates the checksum with IPv6 pseudo header used by TCP and UDP for a pbuf chain. More... | |
u16_t | ip6_chksum_pseudo_partial (struct pbuf *p, u8_t proto, u16_t proto_len, u16_t chksum_len, ip6_addr_t *src, ip6_addr_t *dest) |
Calculates the checksum with IPv6 pseudo header used by TCP and UDP for a pbuf chain. More... | |
#define FOLD_U32T | ( | u | ) | (((u) >> 16) + ((u) & 0x0000ffffUL)) |
Split an u32_t in two u16_ts and add them up.
Referenced by inet_chksum_pbuf(), inet_chksum_pseudo(), inet_chksum_pseudo_partial(), inet_cksum_pseudo_base(), inet_cksum_pseudo_partial_base(), ip6_chksum_pseudo(), ip6_chksum_pseudo_partial(), lwip_standard_chksum(), and tcp_output_segment().
#define ipX_chksum_pseudo | ( | isipv6, | |
p, | |||
proto, | |||
proto_len, | |||
src, | |||
dest | |||
) |
Referenced by tcp_input(), tcp_keepalive(), tcp_output_segment(), tcp_rst_impl(), tcp_send_empty_ack(), tcp_zero_window_probe(), and udp_input().
#define ipX_chksum_pseudo_partial | ( | isipv6, | |
p, | |||
proto, | |||
proto_len, | |||
chksum_len, | |||
src, | |||
dest | |||
) |
Referenced by tcp_output_segment(), and udp_input().
#define LWIP_CHKSUM_COPY_ALGORITHM 0 |
#define SWAP_BYTES_IN_WORD | ( | w | ) | (((w) & 0xff) << 8) | (((w) & 0xff00) >> 8) |
Swap the bytes in an u16_t: much like htons() for little-endian.
Referenced by inet_chksum_pbuf(), inet_cksum_pseudo_base(), inet_cksum_pseudo_partial_base(), lwip_standard_chksum(), tcp_output_segment(), and tcp_write().
References LWIP_CHKSUM.
Referenced by icmp_input(), icmp_send_response(), ip_frag(), ip_input(), ip_reass(), ping_prepare_echo(), and tcp_write().
Calculate a checksum over a chain of pbufs (without pseudo-header, much like inet_chksum only pbufs are used).
p | pbuf chain over that the checksum should be calculated |
References FOLD_U32T, pbuf::len, LWIP_CHKSUM, pbuf::next, NULL, pbuf::payload, and SWAP_BYTES_IN_WORD.
Referenced by icmp_input().
u16_t inet_chksum_pseudo | ( | struct pbuf * | p, |
u8_t | proto, | ||
u16_t | proto_len, | ||
ip_addr_t * | src, | ||
ip_addr_t * | dest | ||
) |
References FOLD_U32T, inet_cksum_pseudo_base(), and ip4_addr_get_u32.
u16_t inet_chksum_pseudo_partial | ( | struct pbuf * | p, |
u8_t | proto, | ||
u16_t | proto_len, | ||
u16_t | chksum_len, | ||
ip_addr_t * | src, | ||
ip_addr_t * | dest | ||
) |
References FOLD_U32T, inet_cksum_pseudo_partial_base(), and ip4_addr_get_u32.
u16_t ip6_chksum_pseudo | ( | struct pbuf * | p, |
u8_t | proto, | ||
u16_t | proto_len, | ||
ip6_addr_t * | src, | ||
ip6_addr_t * | dest | ||
) |
Calculates the checksum with IPv6 pseudo header used by TCP and UDP for a pbuf chain.
IPv6 addresses are expected to be in network byte order.
p | chain of pbufs over that a checksum should be calculated (ip data part) |
src | source ipv6 address (used for checksum of pseudo header) |
dst | destination ipv6 address (used for checksum of pseudo header) |
proto | ipv6 protocol/next header (used for checksum of pseudo header) |
proto_len | length of the ipv6 payload (used for checksum of pseudo header) |
References FOLD_U32T, and inet_cksum_pseudo_base().
Referenced by icmp6_input(), icmp6_send_response(), mld6_send(), nd6_send_na(), nd6_send_ns(), nd6_send_rs(), and raw_sendto().
u16_t ip6_chksum_pseudo_partial | ( | struct pbuf * | p, |
u8_t | proto, | ||
u16_t | proto_len, | ||
u16_t | chksum_len, | ||
ip6_addr_t * | src, | ||
ip6_addr_t * | dest | ||
) |
Calculates the checksum with IPv6 pseudo header used by TCP and UDP for a pbuf chain.
IPv6 addresses are expected to be in network byte order. Will only compute for a portion of the payload.
p | chain of pbufs over that a checksum should be calculated (ip data part) |
src | source ipv6 address (used for checksum of pseudo header) |
dst | destination ipv6 address (used for checksum of pseudo header) |
proto | ipv6 protocol/next header (used for checksum of pseudo header) |
proto_len | length of the ipv6 payload (used for checksum of pseudo header) |
chksum_len | number of payload bytes used to compute chksum |
References FOLD_U32T, and inet_cksum_pseudo_partial_base().