The uIP TCP/IP stack
Detailed Description
uIP is an implementation of the TCP/IP protocol stack intended for small 8-bit and 16-bit microcontrollers.
uIP provides the necessary protocols for Internet communication, with a very small code footprint and RAM requirements - the uIP code size is on the order of a few kilobytes and RAM usage is on the order of a few hundred bytes.
{@
Define Documentation
#define ICMP6_ECHO_REPLY 129 |
#define ICMP6_FLAG_S (1 << 6) |
#define ICMP6_NEIGHBOR_ADVERTISEMENT 136 |
#define ICMP6_NEIGHBOR_SOLICITATION 135 |
#define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1 |
#define ICMP6_OPTION_TARGET_LINK_ADDRESS 2 |
#define ICMP_ECHO_REPLY 0 |
#define TCP_OPT_MSS_LEN 4 |
The buffer size available for user data in the uip_buf buffer.
This macro holds the available size for user data in the uip_buf buffer. The macro is intended to be used for checking bounds of available user data.
Example:
#define UIP_ESTABLISHED 3 |
#define UIP_IPTCPH_LEN (UIP_TCPH_LEN + UIP_IPH_LEN) |
#define UIP_IPUDPH_LEN (UIP_UDPH_LEN + UIP_IPH_LEN) |
#define UIP_POLL_REQUEST 3 |
#define UIP_PROTO_ICMP6 58 |
#define UIP_TCPIP_HLEN UIP_IPTCPH_LEN |
#define UIP_UDP_SEND_CONN 4 |
Typedef Documentation
Repressentation of an IP address.
Function Documentation
Convert 16-bit quantity from host byte order to network byte order.
This function is primarily used for converting variables from host byte order to network byte order. For converting constants to network byte order, use the HTONS() macro instead.
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. |
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.
- 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.
uIP initialization function.
This function should be called at boot up to initilize the uIP TCP/IP stack.
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.
void uip_listen |
( |
u16_t |
port |
) |
|
Start listening to the specified port.
- Note:
- Since this function expects the port number in network byte order, a conversion using HTONS() or htons() is necessary.
- Parameters:
-
| port | A 16-bit port number in network byte order. |
void uip_process |
( |
u8_t |
flag |
) |
|
void uip_send |
( |
const void * |
data, |
|
|
int |
len | |
|
) |
| | |
Send data on the current connection.
This function is used to send out a single segment of TCP data. Only applications that have been invoked by uIP for event processing can send data.
The amount of data that actually is sent out after a call to this funcion is determined by the maximum amount of data TCP allows. uIP will automatically crop the data so that only the appropriate amount of data is sent. The function uip_mss() can be used to query uIP for the amount of data that actually will be sent.
- Note:
- This function does not guarantee that the sent data will arrive at the destination. If the data is lost in the network, the application will be invoked with the uip_rexmit() event being set. The application will then have to resend the data using this function.
- Parameters:
-
| data | A pointer to the data which is to be sent. |
| len | The maximum amount of data bytes to be sent. |
void uip_setipid |
( |
u16_t |
id |
) |
|
uIP initialization function.
This function may be used at boot time to set the initial ip_id.
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.
- Returns:
- The TCP checksum of the TCP segment in uip_buf and pointed to by uip_appdata.
u16_t uip_udpchksum |
( |
void |
|
) |
|
Calculate the UDP checksum of the packet in uip_buf and uip_appdata.
The UDP checksum is the Internet checksum of data contents of the UDP segment, and a pseudo-header as defined in RFC768.
- Returns:
- The UDP checksum of the UDP segment in uip_buf and pointed to by uip_appdata.
void uip_unlisten |
( |
u16_t |
port |
) |
|
Stop listening to the specified port.
- Note:
- Since this function expects the port number in network byte order, a conversion using HTONS() or htons() is necessary.
- Parameters:
-
| port | A 16-bit port number in network byte order. |
Variable Documentation
4-byte array used for the 32-bit sequence number calculations.
Pointer to the application data in the packet buffer.
This pointer points to the application data when the application is called. If the application wishes to send data, the application may use this space to write the data into before calling uip_send().
Pointer to the application data in the packet buffer.
This pointer points to the application data when the application is called. If the application wishes to send data, the application may use this space to write the data into before calling uip_send().
The uIP packet buffer.
The uip_buf array is used to hold incoming and outgoing packets. The device driver should place incoming data into this buffer. When sending data, the device driver should read the link level headers and the TCP/IP headers from this buffer. The size of the link level headers is configured by the UIP_LLH_LEN define.
- Note:
- The application data need not be placed in this buffer, so the device driver must read it from the place pointed to by the uip_appdata pointer as illustrated by the following example:
Pointer to the current TCP connection.
The uip_conn pointer can be used to access the current TCP connection.
Pointer to the current TCP connection.
The uip_conn pointer can be used to access the current TCP connection.
The length of the packet in the uip_buf buffer.
The global variable uip_len holds the length of the packet in the uip_buf buffer.
When the network device driver calls the uIP input function, uip_len should be set to the length of the packet in the uip_buf buffer.
When sending packets, the device driver should use the contents of the uip_len variable to determine the length of the outgoing packet.
The uIP TCP/IP statistics.
This is the variable in which the uIP TCP/IP statistics are gathered.