Go to the documentation of this file.
   58 #define LWIP_IP_HDRINCL  NULL 
   62 #ifndef LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX 
   63 #define LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX(p) LWIP_ASSERT("p->ref == 1", (p)->ref == 1) 
   66 #if LWIP_NETIF_HWADDRHINT 
   67 #define IP_PCB_ADDRHINT ;u8_t addr_hint 
   69 #define IP_PCB_ADDRHINT 
   79   ip_addr_t remote_ip; \ 
   97 #define SOF_REUSEADDR     0x04U   
   98 #define SOF_KEEPALIVE     0x08U   
   99 #define SOF_BROADCAST     0x20U   
  102 #define SOF_INHERITED   (SOF_REUSEADDR|SOF_KEEPALIVE) 
  113   struct ip_hdr *current_ip4_header;
 
  117   struct ip6_hdr *current_ip6_header;
 
  133 #define ip_current_netif()      (ip_data.current_netif) 
  137 #define ip_current_input_netif() (ip_data.current_input_netif) 
  139 #define ip_current_header_tot_len() (ip_data.current_ip_header_tot_len) 
  141 #define ip_current_src_addr()   (&ip_data.current_iphdr_src) 
  143 #define ip_current_dest_addr()  (&ip_data.current_iphdr_dest) 
  145 #if LWIP_IPV4 && LWIP_IPV6 
  149 #define ip4_current_header()     ((const struct ip_hdr*)(ip_data.current_ip4_header)) 
  153 #define ip6_current_header()      ((const struct ip6_hdr*)(ip_data.current_ip6_header)) 
  155 #define ip_current_is_v6()        (ip6_current_header() != NULL) 
  157 #define ip6_current_src_addr()    (ip_2_ip6(&ip_data.current_iphdr_src)) 
  159 #define ip6_current_dest_addr()   (ip_2_ip6(&ip_data.current_iphdr_dest)) 
  161 #define ip_current_header_proto() (ip_current_is_v6() ? \ 
  162                                    IP6H_NEXTH(ip6_current_header()) :\ 
  163                                    IPH_PROTO(ip4_current_header())) 
  165 #define ip_next_header_ptr()     ((const void*)((ip_current_is_v6() ? \ 
  166   (const u8_t*)ip6_current_header() : (const u8_t*)ip4_current_header())  + ip_current_header_tot_len())) 
  169 #define ip4_current_src_addr()     (ip_2_ip4(&ip_data.current_iphdr_src)) 
  171 #define ip4_current_dest_addr()    (ip_2_ip4(&ip_data.current_iphdr_dest)) 
  178 #define ip4_current_header()     ((const struct ip_hdr*)(ip_data.current_ip4_header)) 
  180 #define ip_current_is_v6()        0 
  182 #define ip_current_header_proto() IPH_PROTO(ip4_current_header()) 
  184 #define ip_next_header_ptr()     ((const void*)((const u8_t*)ip4_current_header() + ip_current_header_tot_len())) 
  186 #define ip4_current_src_addr()     (&ip_data.current_iphdr_src) 
  188 #define ip4_current_dest_addr()    (&ip_data.current_iphdr_dest) 
  195 #define ip6_current_header()      ((const struct ip6_hdr*)(ip_data.current_ip6_header)) 
  197 #define ip_current_is_v6()        1 
  199 #define ip_current_header_proto() IP6H_NEXTH(ip6_current_header()) 
  201 #define ip_next_header_ptr()     ((const void*)((const u8_t*)ip6_current_header())) 
  203 #define ip6_current_src_addr()    (&ip_data.current_iphdr_src) 
  205 #define ip6_current_dest_addr()   (&ip_data.current_iphdr_dest) 
  210 #define ip_current_src_addr()    (&ip_data.current_iphdr_src) 
  212 #define ip_current_dest_addr()   (&ip_data.current_iphdr_dest) 
  215 #define ip_get_option(pcb, opt)   ((pcb)->so_options & (opt)) 
  217 #define ip_set_option(pcb, opt)   ((pcb)->so_options |= (opt)) 
  219 #define ip_reset_option(pcb, opt) ((pcb)->so_options &= ~(opt)) 
  221 #if LWIP_IPV4 && LWIP_IPV6 
  226 #define ip_output(p, src, dest, ttl, tos, proto) \ 
  228         ip6_output(p, ip_2_ip6(src), ip_2_ip6(dest), ttl, tos, proto) : \ 
  229         ip4_output(p, ip_2_ip4(src), ip_2_ip4(dest), ttl, tos, proto)) 
  234 #define ip_output_if(p, src, dest, ttl, tos, proto, netif) \ 
  236         ip6_output_if(p, ip_2_ip6(src), ip_2_ip6(dest), ttl, tos, proto, netif) : \ 
  237         ip4_output_if(p, ip_2_ip4(src), ip_2_ip4(dest), ttl, tos, proto, netif)) 
  242 #define ip_output_if_src(p, src, dest, ttl, tos, proto, netif) \ 
  244         ip6_output_if_src(p, ip_2_ip6(src), ip_2_ip6(dest), ttl, tos, proto, netif) : \ 
  245         ip4_output_if_src(p, ip_2_ip4(src), ip_2_ip4(dest), ttl, tos, proto, netif)) 
  247 #define ip_output_hinted(p, src, dest, ttl, tos, proto, addr_hint) \ 
  249         ip6_output_hinted(p, ip_2_ip6(src), ip_2_ip6(dest), ttl, tos, proto, addr_hint) : \ 
  250         ip4_output_hinted(p, ip_2_ip4(src), ip_2_ip4(dest), ttl, tos, proto, addr_hint)) 
  255 #define ip_route(src, dest) \ 
  257         ip6_route(ip_2_ip6(src), ip_2_ip6(dest)) : \ 
  258         ip4_route_src(ip_2_ip4(dest), ip_2_ip4(src))) 
  263 #define ip_netif_get_local_ip(netif, dest) (IP_IS_V6(dest) ? \ 
  264         ip6_netif_get_local_ip(netif, ip_2_ip6(dest)) : \ 
  265         ip4_netif_get_local_ip(netif)) 
  266 #define ip_debug_print(is_ipv6, p) ((is_ipv6) ? ip6_debug_print(p) : ip4_debug_print(p)) 
  272 #define ip_output(p, src, dest, ttl, tos, proto) \ 
  273         ip4_output(p, src, dest, ttl, tos, proto) 
  274 #define ip_output_if(p, src, dest, ttl, tos, proto, netif) \ 
  275         ip4_output_if(p, src, dest, ttl, tos, proto, netif) 
  276 #define ip_output_if_src(p, src, dest, ttl, tos, proto, netif) \ 
  277         ip4_output_if_src(p, src, dest, ttl, tos, proto, netif) 
  278 #define ip_output_hinted(p, src, dest, ttl, tos, proto, addr_hint) \ 
  279         ip4_output_hinted(p, src, dest, ttl, tos, proto, addr_hint) 
  280 #define ip_route(src, dest) \ 
  281         ip4_route_src(dest, src) 
  282 #define ip_netif_get_local_ip(netif, dest) \ 
  283         ip4_netif_get_local_ip(netif) 
  284 #define ip_debug_print(is_ipv6, p) ip4_debug_print(p) 
  286 #define ip_input ip4_input 
  290 #define ip_output(p, src, dest, ttl, tos, proto) \ 
  291         ip6_output(p, src, dest, ttl, tos, proto) 
  292 #define ip_output_if(p, src, dest, ttl, tos, proto, netif) \ 
  293         ip6_output_if(p, src, dest, ttl, tos, proto, netif) 
  294 #define ip_output_if_src(p, src, dest, ttl, tos, proto, netif) \ 
  295         ip6_output_if_src(p, src, dest, ttl, tos, proto, netif) 
  296 #define ip_output_hinted(p, src, dest, ttl, tos, proto, addr_hint) \ 
  297         ip6_output_hinted(p, src, dest, ttl, tos, proto, addr_hint) 
  298 #define ip_route(src, dest) \ 
  300 #define ip_netif_get_local_ip(netif, dest) \ 
  301         ip6_netif_get_local_ip(netif, dest) 
  302 #define ip_debug_print(is_ipv6, p) ip6_debug_print(p) 
  304 #define ip_input ip6_input 
  308 #define ip_route_get_local_ip(src, dest, netif, ipaddr) do { \ 
  309   (netif) = ip_route(src, dest); \ 
  310   (ipaddr) = ip_netif_get_local_ip(netif, dest); \ 
  
 
u16_t current_ip_header_tot_len
 
struct ip_globals ip_data
 
struct netif * current_input_netif
 
ip_addr_t current_iphdr_src
 
ip_addr_t current_iphdr_dest
 
struct netif * current_netif