UbixOS  2.0
inet_chksum.c File Reference
#include "net/opt.h"
#include "net/inet_chksum.h"
#include "net/def.h"
#include "net/ip_addr.h"
#include <string.h>
Include dependency graph for inet_chksum.c:

Go to the source code of this file.

Macros

#define LWIP_CHKSUM   lwip_standard_chksum
 
#define LWIP_CHKSUM_ALGORITHM   2
 

Functions

u16_t inet_chksum (const void *dataptr, u16_t len)
 
u16_t inet_chksum_pbuf (struct pbuf *p)
 
u16_t ip_chksum_pseudo (struct pbuf *p, u8_t proto, u16_t proto_len, const ip_addr_t *src, const ip_addr_t *dest)
 
u16_t ip_chksum_pseudo_partial (struct pbuf *p, u8_t proto, u16_t proto_len, u16_t chksum_len, const ip_addr_t *src, const ip_addr_t *dest)
 
u16_t lwip_standard_chksum (const void *dataptr, int len)
 

Detailed Description

Incluse internet checksum functions.
These are some reference implementations of the checksum algorithm, with the aim of being simple, correct and fully portable. Checksumming is the first thing you would want to optimize for your platform. If you create your own version, link it in and in your cc.h put:

#define LWIP_CHKSUM your_checksum_routine

Or you can select from the implementations below by defining LWIP_CHKSUM_ALGORITHM to 1, 2 or 3.

Definition in file inet_chksum.c.

Macro Definition Documentation

◆ LWIP_CHKSUM

#define LWIP_CHKSUM   lwip_standard_chksum

Definition at line 57 of file inet_chksum.c.

◆ LWIP_CHKSUM_ALGORITHM

#define LWIP_CHKSUM_ALGORITHM   2

Definition at line 59 of file inet_chksum.c.

Function Documentation

◆ inet_chksum()

u16_t inet_chksum ( const void *  dataptr,
u16_t  len 
)

Definition at line 555 of file inet_chksum.c.

References pbuf::len, and LWIP_CHKSUM.

◆ inet_chksum_pbuf()

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).

Parameters
ppbuf chain over that the checksum should be calculated
Returns
checksum (as u16_t) to be saved directly in the protocol header

Definition at line 568 of file inet_chksum.c.

References FOLD_U32T, pbuf::len, LWIP_CHKSUM, pbuf::next, NULL, pbuf::payload, and SWAP_BYTES_IN_WORD.

◆ ip_chksum_pseudo()

u16_t ip_chksum_pseudo ( struct pbuf p,
u8_t  proto,
u16_t  proto_len,
const ip_addr_t src,
const ip_addr_t dest 
)

Definition at line 379 of file inet_chksum.c.

References ip_2_ip6, and IP_IS_V6.

◆ ip_chksum_pseudo_partial()

u16_t ip_chksum_pseudo_partial ( struct pbuf p,
u8_t  proto,
u16_t  proto_len,
u16_t  chksum_len,
const ip_addr_t src,
const ip_addr_t dest 
)

Definition at line 526 of file inet_chksum.c.

References ip_2_ip6, and IP_IS_V6.

◆ lwip_standard_chksum()

u16_t lwip_standard_chksum ( const void *  dataptr,
int  len 
)

Definition at line 133 of file inet_chksum.c.

References FOLD_U32T, and SWAP_BYTES_IN_WORD.