Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals

# Architecture specific uIP functions
[The uIP TCP/IP stack]

## Detailed Description

The functions in the architecture specific module implement the IP check sum and 32-bit additions.

The IP checksum calculation is the most computationally expensive operation in the TCP/IP stack and it therefore pays off to implement this in efficient assembler. The purpose of the uip-arch module is to let the checksum functions to be implemented in architecture specific assembler.

## Files
file | uip_arch.h
| Declarations of architecture specific functions.

## Functions
void | uip_add32 (u8_t *op32, u16_t op16)
| Carry out a 32-bit addition.
u16_t | uip_chksum (u16_t *buf, u16_t len)
| Calculate the Internet checksum over a buffer.
u16_t | uip_ipchksum (void)
| Calculate the IP header checksum of the packet header in uip_buf.
u16_t | uip_tcpchksum (void)
| Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
## Variables
volatile u8_t | uip_acc32 [4]
| 4-byte array used for the 32-bit sequence number calculations.

## Function Documentation

void uip_add32 | ( | u8_t * | op32,
|  | u16_t | op16
| ) |

  | Carry out a 32-bit addition. Because not all architectures for which uIP is intended has native 32-bit arithmetic, uIP uses an external C function for doing the required 32-bit additions in the TCP protocol processing. This function should add the two arguments and place the result in the global variable uip_acc32. Note: The 32-bit integer pointed to by the op32 parameter and the result in the uip_acc32 variable are in network byte order (big endian). Parameters:
  op32 | A pointer to a 4-byte array representing a 32-bit integer in network byte order (big endian).
  op16 | A 16-bit integer in host byte order.

u16_t uip_chksum | ( | u16_t * | buf,
|  | u16_t | len
| ) |

  | Calculate the Internet checksum over a buffer. The Internet checksum is the one's complement of the one's complement sum of all 16-bit words in the buffer. See RFC1071. Note: This function is not called in the current version of uIP, but future versions might make use of it. Parameters:
  buf | A pointer to the buffer over which the checksum is to be computed.
  len | The length of the buffer over which the checksum is to be computed.
Returns: The Internet checksum of the buffer.

u16_t uip_ipchksum | ( | void |  | ) |

| Calculate the IP header checksum of the packet header in uip_buf. The IP header checksum is the Internet checksum of the 20 bytes of the IP header. Returns: The IP header checksum of the IP header in the uip_buf buffer.

u16_t uip_tcpchksum | ( | void |  | ) |

| Calculate the TCP checksum of the packet in uip_buf and uip_appdata. The TCP checksum is the Internet checksum of data contents of the TCP segment, and a pseudo-header as defined in RFC793. Note: The uip_appdata pointer that points to the packet data may point anywhere in memory, so it is not possible to simply calculate the Internet checksum of the contents of the uip_buf buffer. Returns: The TCP checksum of the TCP segment in uip_buf and pointed to by uip_appdata.