lwIP
2.1.0
Lightweight IP stack
|
#include "lwip/opt.h"
#include "lwip/def.h"
#include "lwip/pbuf.h"
#include "lwip/ip_addr.h"
#include "lwip/err.h"
#include "lwip/netif.h"
#include "lwip/ip4.h"
#include "lwip/ip6.h"
#include "lwip/prot/ip.h"
Data Structures | |
struct | ip_globals |
Macros | |
#define | LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX(p) LWIP_ASSERT("p->ref == 1", (p)->ref == 1) |
#define | IP_PCB |
#define | ip_current_netif() (ip_data.current_netif) |
#define | ip_current_input_netif() (ip_data.current_input_netif) |
#define | ip_current_header_tot_len() (ip_data.current_ip_header_tot_len) |
#define | ip_current_src_addr() (&ip_data.current_iphdr_src) |
#define | ip_current_dest_addr() (&ip_data.current_iphdr_dest) |
#define | ip4_current_header() ip_data.current_ip4_header |
#define | ip6_current_header() ((const struct ip6_hdr*)(ip_data.current_ip6_header)) |
#define | ip_current_is_v6() (ip6_current_header() != NULL) |
#define | ip6_current_src_addr() (ip_2_ip6(&ip_data.current_iphdr_src)) |
#define | ip6_current_dest_addr() (ip_2_ip6(&ip_data.current_iphdr_dest)) |
#define | ip_current_header_proto() |
#define | ip_next_header_ptr() |
#define | ip4_current_src_addr() (ip_2_ip4(&ip_data.current_iphdr_src)) |
#define | ip4_current_dest_addr() (ip_2_ip4(&ip_data.current_iphdr_dest)) |
#define | ip_current_src_addr() (&ip_data.current_iphdr_src) |
#define | ip_current_dest_addr() (&ip_data.current_iphdr_dest) |
#define | ip_get_option(pcb, opt) ((pcb)->so_options & (opt)) |
#define | ip_set_option(pcb, opt) ((pcb)->so_options = (u8_t)((pcb)->so_options | (opt))) |
#define | ip_reset_option(pcb, opt) ((pcb)->so_options = (u8_t)((pcb)->so_options & ~(opt))) |
#define | ip_output(p, src, dest, ttl, tos, proto) |
#define | ip_output_if(p, src, dest, ttl, tos, proto, netif) |
#define | ip_output_if_src(p, src, dest, ttl, tos, proto, netif) |
#define | ip_output_if_hdrincl(p, src, dest, netif) |
#define | ip_output_hinted(p, src, dest, ttl, tos, proto, netif_hint) |
#define | ip_route(src, dest) |
#define | ip_netif_get_local_ip(netif, dest) |
Functions | |
err_t | ip_input (struct pbuf *p, struct netif *inp) |
Variables | |
struct ip_globals | ip_data |
IP API
#define ip4_current_dest_addr | ( | ) | (ip_2_ip4(&ip_data.current_iphdr_dest)) |
Destination IP4 address of current_header
#define ip4_current_header | ( | ) | ip_data.current_ip4_header |
Get the IPv4 header of the current packet. This function must only be called from a receive callback (udp_recv, raw_recv, tcp_accept). It will return NULL otherwise.
#define ip4_current_src_addr | ( | ) | (ip_2_ip4(&ip_data.current_iphdr_src)) |
Source IP4 address of current_header
#define ip6_current_dest_addr | ( | ) | (ip_2_ip6(&ip_data.current_iphdr_dest)) |
Destination IPv6 address of current_header
#define ip6_current_header | ( | ) | ((const struct ip6_hdr*)(ip_data.current_ip6_header)) |
Get the IPv6 header of the current packet. This function must only be called from a receive callback (udp_recv, raw_recv, tcp_accept). It will return NULL otherwise.
#define ip6_current_src_addr | ( | ) | (ip_2_ip6(&ip_data.current_iphdr_src)) |
Source IPv6 address of current_header
#define ip_current_dest_addr | ( | ) | (&ip_data.current_iphdr_dest) |
Destination IP address of current_header
Union destination address of current_header
#define ip_current_dest_addr | ( | ) | (&ip_data.current_iphdr_dest) |
Destination IP address of current_header
Union destination address of current_header
#define ip_current_header_proto | ( | ) |
Get the transport layer protocol
#define ip_current_header_tot_len | ( | ) | (ip_data.current_ip_header_tot_len) |
Total header length of ip(6)_current_header() (i.e. after this, the UDP/TCP header starts)
#define ip_current_input_netif | ( | ) | (ip_data.current_input_netif) |
Get the interface that received the current packet. This function must only be called from a receive callback (udp_recv, raw_recv, tcp_accept). It will return NULL otherwise.
#define ip_current_is_v6 | ( | ) | (ip6_current_header() != NULL) |
Returns TRUE if the current IP input packet is IPv6, FALSE if it is IPv4
#define ip_current_netif | ( | ) | (ip_data.current_netif) |
Get the interface that accepted the current packet. This may or may not be the receiving netif, depending on your netif/network setup. This function must only be called from a receive callback (udp_recv, raw_recv, tcp_accept). It will return NULL otherwise.
#define ip_current_src_addr | ( | ) | (&ip_data.current_iphdr_src) |
Source IP address of current_header
Union source address of current_header
#define ip_current_src_addr | ( | ) | (&ip_data.current_iphdr_src) |
Source IP address of current_header
Union source address of current_header
#define ip_get_option | ( | pcb, | |
opt | |||
) | ((pcb)->so_options & (opt)) |
Gets an IP pcb option (SOF_* flags)
#define ip_next_header_ptr | ( | ) |
Get the transport layer header
#define ip_output_hinted | ( | p, | |
src, | |||
dest, | |||
ttl, | |||
tos, | |||
proto, | |||
netif_hint | |||
) |
Output IP packet with netif_hint
#define ip_output_if_hdrincl | ( | p, | |
src, | |||
dest, | |||
netif | |||
) |
Output IP packet that already includes an IP header.
#define IP_PCB |
This is the common part of all PCB types. It needs to be at the beginning of a PCB type definition. It is located here so that changes to this common part are made in one location instead of having to change all PCB structs.
#define ip_reset_option | ( | pcb, | |
opt | |||
) | ((pcb)->so_options = (u8_t)((pcb)->so_options & ~(opt))) |
Resets an IP pcb option (SOF_* flags)
#define ip_set_option | ( | pcb, | |
opt | |||
) | ((pcb)->so_options = (u8_t)((pcb)->so_options | (opt))) |
Sets an IP pcb option (SOF_* flags)
#define LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX | ( | p | ) | LWIP_ASSERT("p->ref == 1", (p)->ref == 1) |
pbufs passed to IP must have a ref-count of 1 as their payload pointer gets altered as the packet is passed down the stack
struct ip_globals ip_data |
Global data for both IPv4 and IPv6