Microchip® Advanced Software Framework

uip.h File Reference

Header file for the uIP TCP/IP stack.

Author
Adam Dunkels adam@.nosp@m.dunk.nosp@m.els.c.nosp@m.om
Julien Abeille jabei.nosp@m.lle@.nosp@m.cisco.nosp@m..com (IPv6 related code)
Mathilde Durvy mdurv.nosp@m.y@ci.nosp@m.sco.c.nosp@m.om (IPv6 related code)

The uIP TCP/IP stack header file contains definitions for a number of C macros that are used by uIP programs as well as internal uIP structures, TCP/IP header structures and function declarations.

#include "compiler.h"
#include "net/ip/uipopt.h"
#include "net/ip/tcpip.h"

Data Structures

struct  uip_80211_addr
 802.11 address More...
 
struct  uip_802154_longaddr
 64 bit 802.15.4 address More...
 
struct  uip_802154_shortaddr
 16 bit 802.15.4 address More...
 
union  uip_buf_t
 The uIP packet buffer. More...
 
struct  uip_conn
 Representation of a uIP TCP connection. More...
 
struct  uip_desto_hdr
 
struct  uip_eth_addr
 802.3 address More...
 
struct  uip_ext_hdr
 
struct  uip_ext_hdr_opt
 
struct  uip_ext_hdr_opt_padn
 
struct  uip_ext_hdr_opt_rpl
 
struct  uip_fallback_interface
 
struct  uip_frag_hdr
 
struct  uip_hbho_hdr
 
struct  uip_icmp_hdr
 
struct  uip_icmpip_hdr
 
union  uip_ip4addr_t
 Representation of an IP address. More...
 
union  uip_ip6addr_t
 
struct  uip_ip_hdr
 
struct  uip_routing_hdr
 
struct  uip_stats
 The structure holding the TCP/IP statistics that are gathered if UIP_STATISTICS is set to 1. More...
 
struct  uip_tcp_hdr
 
struct  uip_tcpip_hdr
 
struct  uip_udp_conn
 Representation of a uIP UDP connection. More...
 
struct  uip_udp_hdr
 
struct  uip_udpip_hdr
 

Macros

#define uip_abort()
 Abort the current connection. More...
 
#define UIP_ABORT
 
#define uip_aborted()
 Has the connection been aborted by the other end? More...
 
#define UIP_ACKDATA
 
#define uip_acked()
 Has previously sent data been acknowledged? More...
 
#define UIP_APPDATA_PTR   (void *)&uip_buf[UIP_LLH_LEN + UIP_TCPIP_HLEN]
 
#define UIP_APPDATA_SIZE
 The buffer size available for user data in the uip_buf buffer. More...
 
#define uip_are_solicited_bytes_equal(a, b)
 are last three bytes of both addresses equal? This is used to compare solicited node multicast addresses More...
 
#define uip_buf   (uip_aligned_buf.u8)
 
#define uip_close()
 Close the current connection. More...
 
#define UIP_CLOSE
 
#define uip_closed()
 Has the connection been closed by the other end? More...
 
#define UIP_CLOSED   0
 
#define UIP_CLOSING   6
 
#define uip_connected()
 Has the connection just been connected? More...
 
#define UIP_CONNECTED
 
#define uip_create_linklocal_allnodes_mcast(a)   uip_ip6addr(a, 0xff02, 0, 0, 0, 0, 0, 0, 0x0001)
 set IP address a to the link local all-nodes multicast address More...
 
#define uip_create_linklocal_allrouters_mcast(a)   uip_ip6addr(a, 0xff02, 0, 0, 0, 0, 0, 0, 0x0002)
 set IP address a to the link local all-routers multicast address More...
 
#define uip_create_linklocal_prefix(addr)
 
#define uip_create_solicited_node(a, b)
 in b the solicited node address corresponding to address a both a and b are of type uip_ipaddr_t* More...
 
#define uip_create_unspecified(a)   uip_ip6addr(a, 0, 0, 0, 0, 0, 0, 0, 0)
 set IP address a to unspecified More...
 
#define UIP_DATA
 
#define uip_datalen()
 The length of any incoming data that is currently available (if available) in the uip_appdata buffer. More...
 
#define UIP_ESTABLISHED   3
 
#define UIP_FIN_WAIT_1   4
 
#define UIP_FIN_WAIT_2   5
 
#define UIP_FRAGH_LEN   8
 
#define uip_getdraddr(addr)
 Get the default router's IP address. More...
 
#define uip_gethostaddr(addr)
 Get the IP address of this host. More...
 
#define uip_getnetmask(addr)
 Get the netmask. More...
 
#define UIP_HTONL(n)   (n)
 
#define UIP_HTONS(n)
 Convert 16-bit quantity from host byte order to network byte order. More...
 
#define UIP_ICMPH_LEN   4 /* Size of ICMP header */
 
#define uip_initialmss()
 Get the initial maximum segment size (MSS) of the current connection. More...
 
#define uip_input()
 Process an incoming packet. More...
 
#define uip_ip4addr_cmp(addr1, addr2)
 Compare two IP addresses. More...
 
#define uip_ip4addr_copy(dest, src)   (*(dest) = *(src))
 
#define uip_ip6addr(addr, addr0, addr1, addr2, addr3, addr4, addr5, addr6, addr7)
 Construct an IPv6 address from eight 16-bit words. More...
 
#define uip_ip6addr_cmp(addr1, addr2)   (memcmp(addr1, addr2, sizeof(uip_ip6addr_t)) == 0)
 
#define uip_ip6addr_copy(dest, src)   (*(dest) = *(src))
 
#define uip_ip6addr_u8(addr, addr0, addr1, addr2, addr3, addr4, addr5, addr6, addr7, addr8, addr9, addr10, addr11, addr12, addr13, addr14, addr15)
 Construct an IPv6 address from sixteen 8-bit words. More...
 
#define uip_ipaddr(addr, addr0, addr1, addr2, addr3)
 Construct an IP address from four bytes. More...
 
#define uip_ipaddr1(addr)
 Pick the first octet of an IP address. More...
 
#define uip_ipaddr2(addr)
 Pick the second octet of an IP address. More...
 
#define uip_ipaddr3(addr)
 Pick the third octet of an IP address. More...
 
#define uip_ipaddr4(addr)
 Pick the fourth octet of an IP address. More...
 
#define uip_ipaddr_cmp(addr1, addr2)   uip_ip6addr_cmp(addr1, addr2)
 
#define uip_ipaddr_copy(dest, src)
 Copy an IP address from one place to another. More...
 
#define uip_ipaddr_mask(dest, src, mask)
 Check if an address is a broadcast address for a network. More...
 
#define uip_ipaddr_maskcmp(addr1, addr2, mask)
 Compare two IP addresses with netmasks. More...
 
#define uip_ipaddr_prefixcmp(addr1, addr2, length)   (memcmp(addr1, addr2, length>>3) == 0)
 
#define uip_ipaddr_to_quad(a)
 Convert an IP address to four bytes separated by commas. More...
 
#define UIP_IPH_LEN   40
 
#define UIP_IPICMPH_LEN
 
#define UIP_IPTCPH_LEN
 
#define UIP_IPUDPH_LEN
 
#define uip_is_addr_link_local(a)
 is addr (a) a link local unicast address, see RFC3513 i.e. More...
 
#define uip_is_addr_linklocal(a)
 Checks whether the address a is link local. More...
 
#define uip_is_addr_linklocal_allnodes_mcast(a)
 Is IPv6 address a the link local all-nodes multicast address. More...
 
#define uip_is_addr_linklocal_allrouters_mcast(a)
 Is IPv6 address a the link local all-routers multicast address. More...
 
#define uip_is_addr_loopback(a)
 Is IPv6 address a the unspecified address a is of type uip_ipaddr_t. More...
 
#define uip_is_addr_mac_addr_based(a, m)
 was addr (a) forged based on the mac address m a type is uip_ipaddr_t m type is uiplladdr_t More...
 
#define uip_is_addr_mcast(a)   (((a)->u8[0]) == 0xFF)
 is address a multicast address, see RFC 3513 a is of type uip_ipaddr_t* More...
 
#define uip_is_addr_mcast_global(a)
 is address a global multicast address (FFxE::/16), a is of type uip_ip6addr_t* More...
 
#define uip_is_addr_mcast_non_routable(a)
 is address a non-routable multicast address. More...
 
#define uip_is_addr_mcast_routable(a)
 is address a routable multicast address. More...
 
#define uip_is_addr_solicited_node(a)
 is addr (a) a solicited node multicast address, see RFC3513 a is of type uip_ipaddr_t* More...
 
#define uip_is_addr_unspecified(a)
 Is IPv6 address a the unspecified address a is of type uip_ipaddr_t. More...
 
#define uip_is_mcast_group_id_all_nodes(a)
 is group-id of multicast address a the all nodes group-id More...
 
#define uip_is_mcast_group_id_all_routers(a)
 is group-id of multicast address a the all routers group-id More...
 
#define uip_l2_l3_hdr_len   (UIP_LLH_LEN + UIP_IPH_LEN + uip_ext_len)
 The sums below are quite used in ND. More...
 
#define uip_l2_l3_icmp_hdr_len   (UIP_LLH_LEN + UIP_IPH_LEN + uip_ext_len + UIP_ICMPH_LEN)
 
#define uip_l3_hdr_len   (UIP_IPH_LEN + uip_ext_len)
 
#define uip_l3_icmp_hdr_len   (UIP_IPH_LEN + uip_ext_len + UIP_ICMPH_LEN)
 
#define UIP_LAST_ACK   8
 
#define UIP_LLADDR_LEN   6
 
#define UIP_LLIPH_LEN
 
#define UIP_LLPREF_LEN   10
 Length of the link local prefix. More...
 
#define uip_mss()
 Get the current maximum segment size that can be sent on the current connection. More...
 
#define uip_newdata()
 Is new incoming data available? More...
 
#define UIP_NEWDATA
 
#define uip_ntohl   uip_htonl
 
#define uip_ntohs   uip_htons
 
#define uip_outstanding(conn)
 
#define uip_poll()
 Is the connection being polled by uIP? More...
 
#define UIP_POLL
 
#define UIP_POLL_REQUEST
 
#define UIP_PROTO_ICMP   1
 
#define UIP_PROTO_ICMP6   58
 
#define UIP_PROTO_TCP   6
 
#define UIP_PROTO_UDP   17
 
#define uip_restart()
 Restart the current connection, if is has previously been stopped with uip_stop(). More...
 
#define uip_rexmit()
 Do we need to retransmit previously data? More...
 
#define UIP_REXMIT
 
#define uip_setdraddr(addr)
 Set the default router's IP address. More...
 
#define uip_sethostaddr(addr)
 Set the IP address of this host. More...
 
#define uip_setnetmask(addr)
 Set the netmask. More...
 
#define UIP_STAT(s)
 The uIP TCP/IP statistics. More...
 
#define uip_stop()
 Tell the sending host to stop sending data. More...
 
#define uip_stopped(conn)
 Find out if the current connection has been previously stopped with uip_stop(). More...
 
#define UIP_STOPPED   16
 
#define UIP_SYN_RCVD   1
 
#define UIP_SYN_SENT   2
 
#define UIP_TCPH_LEN   20 /* Size of TCP header */
 
#define UIP_TCPIP_HLEN   UIP_IPTCPH_LEN
 
#define UIP_TIME_WAIT   7
 
#define uip_timedout()
 Has the connection timed out? More...
 
#define UIP_TIMEDOUT
 
#define UIP_TIMER
 
#define UIP_TS_MASK   15
 
#define uip_udp_bind(conn, port)
 Bind a UDP connection to a local port. More...
 
#define uip_udp_remove(conn)
 Remove a UDP connection. More...
 
#define uip_udp_send(len)
 Send a UDP datagram of length len on the current connection. More...
 
#define UIP_UDP_SEND_CONN
 
#define uip_udpconnection()
 Is the current connection a UDP connection? More...
 
#define UIP_UDPH_LEN   8 /* Size of UDP header */
 
#define uip_urgdatalen()
 The length of any out-of-band data (urgent data) that has arrived on the connection. More...
 
#define UIP_PROTO_HBHO   0
 extension headers types More...
 
#define UIP_PROTO_DESTO   60
 
#define UIP_PROTO_ROUTING   43
 
#define UIP_PROTO_FRAG   44
 
#define UIP_PROTO_NONE   59
 
#define UIP_EXT_HDR_OPT_PAD1   0
 Destination and Hop By Hop extension headers option types. More...
 
#define UIP_EXT_HDR_OPT_PADN   1
 
#define UIP_EXT_HDR_OPT_RPL   0x63
 
#define UIP_EXT_HDR_BITMAP_HBHO   0x01
 Bitmaps for extension header processing. More...
 
#define UIP_EXT_HDR_BITMAP_DESTO1   0x02
 
#define UIP_EXT_HDR_BITMAP_ROUTING   0x04
 
#define UIP_EXT_HDR_BITMAP_FRAG   0x08
 
#define UIP_EXT_HDR_BITMAP_AH   0x10
 
#define UIP_EXT_HDR_BITMAP_ESP   0x20
 
#define UIP_EXT_HDR_BITMAP_DESTO2   0x40
 

Typedefs

typedef struct uip_80211_addr uip_80211_addr
 802.11 address More...
 
typedef struct uip_802154_longaddr uip_802154_longaddr
 64 bit 802.15.4 address More...
 
typedef struct uip_802154_shortaddr uip_802154_shortaddr
 16 bit 802.15.4 address More...
 
typedef struct uip_desto_hdr uip_desto_hdr
 
typedef struct uip_eth_addr uip_eth_addr
 802.3 address More...
 
typedef struct uip_ext_hdr uip_ext_hdr
 
typedef struct uip_ext_hdr_opt uip_ext_hdr_opt
 
typedef struct uip_ext_hdr_opt_padn uip_ext_hdr_opt_padn
 
typedef struct uip_ext_hdr_opt_rpl uip_ext_hdr_opt_rpl
 
typedef struct uip_frag_hdr uip_frag_hdr
 
typedef struct uip_hbho_hdr uip_hbho_hdr
 
typedef union uip_ip4addr_t uip_ip4addr_t
 Representation of an IP address. More...
 
typedef union uip_ip6addr_t uip_ip6addr_t
 
typedef uip_ip6addr_t uip_ipaddr_t
 
typedef uip_eth_addr uip_lladdr_t
 Ethernet address. More...
 
typedef struct uip_routing_hdr uip_routing_hdr
 

Functions

void remove_ext_hdr (void)
 
uint16_t uip_chksum (uint16_t *buf, uint16_t len)
 Calculate the Internet checksum over a buffer. More...
 
struct uip_connuip_connect (uip_ipaddr_t *ripaddr, uint16_t port)
 Connect to a remote host using TCP. More...
 
CCIF uint32_t uip_htonl (uint32_t val)
 
CCIF uint16_t uip_htons (uint16_t val)
 Convert a 16-bit quantity from host byte order to network byte order. More...
 
uint16_t uip_icmp6chksum (void)
 Calculate the ICMP checksum of the packet in uip_buf. More...
 
void uip_init (void)
 uIP initialization function. More...
 
uint16_t uip_ipchksum (void)
 Calculate the IP header checksum of the packet header in uip_buf. More...
 
void uip_listen (uint16_t port)
 Start listening to the specified port. More...
 
void uip_process (uint8_t flag)
 process the options within a hop by hop or destination option header More...
 
void uip_reass_over (void)
 Periodic processing for a connection identified by its number. More...
 
CCIF void uip_send (const void *data, int len)
 Send data on the current connection. More...
 
void uip_setipid (uint16_t id)
 uIP initialization function. More...
 
uint16_t uip_tcpchksum (void)
 Calculate the TCP checksum of the packet in uip_buf and uip_appdata. More...
 
struct uip_udp_connuip_udp_new (const uip_ipaddr_t *ripaddr, uint16_t rport)
 Set up a new UDP connection. More...
 
uint16_t uip_udpchksum (void)
 Calculate the UDP checksum of the packet in uip_buf and uip_appdata. More...
 
void uip_unlisten (uint16_t port)
 Stop listening to the specified port. More...
 

Variables

uint8_t uip_acc32 [4]
 4-byte array used for the 32-bit sequence number calculations. More...
 
CCIF uip_buf_t uip_aligned_buf
 Packet buffer for incoming and outgoing packets. More...
 
CCIF const uip_ipaddr_t uip_all_zeroes_addr
 
CCIF void * uip_appdata
 Pointer to the application data in the packet buffer. More...
 
CCIF const uip_ipaddr_t uip_broadcast_addr
 
CCIF struct uip_connuip_conn
 Pointer to the current TCP connection. More...
 
CCIF uip_ipaddr_t uip_draddr
 
uint8_t uip_ext_len
 The length of the extension headers. More...
 
CCIF uint8_t uip_flags
 
CCIF uip_ipaddr_t uip_hostaddr
 
CCIF uint16_t uip_len
 The length of the packet in the uip_buf buffer. More...
 
CCIF uip_lladdr_t uip_lladdr
 Host L2 address. More...
 
CCIF uip_ipaddr_t uip_netmask
 
struct uip_udp_connuip_udp_conn
 The current UDP connection. More...
 
struct uip_udp_conn uip_udp_conns [UIP_UDP_CONNS]