Mistake on this page?
Report an issue in GitHub or email us
ip4.h
Go to the documentation of this file.
1 /**
2  * @file
3  * IPv4 API
4  */
5 
6 /*
7  * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
8  * All rights reserved.
9  *
10  * Redistribution and use in source and binary forms, with or without modification,
11  * are permitted provided that the following conditions are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright notice,
14  * this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright notice,
16  * this list of conditions and the following disclaimer in the documentation
17  * and/or other materials provided with the distribution.
18  * 3. The name of the author may not be used to endorse or promote products
19  * derived from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
22  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
23  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
24  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
26  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
29  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
30  * OF SUCH DAMAGE.
31  *
32  * This file is part of the lwIP TCP/IP stack.
33  *
34  * Author: Adam Dunkels <adam@sics.se>
35  *
36  */
37 #ifndef LWIP_HDR_IP4_H
38 #define LWIP_HDR_IP4_H
39 
40 #include "lwip/opt.h"
41 
42 #if LWIP_IPV4
43 
44 #include "lwip/def.h"
45 #include "lwip/pbuf.h"
46 #include "lwip/ip4_addr.h"
47 #include "lwip/err.h"
48 #include "lwip/netif.h"
49 #include "lwip/prot/ip4.h"
50 
51 #ifdef __cplusplus
52 extern "C" {
53 #endif
54 
55 #ifdef LWIP_HOOK_IP4_ROUTE_SRC
56 #define LWIP_IPV4_SRC_ROUTING 1
57 #else
58 #define LWIP_IPV4_SRC_ROUTING 0
59 #endif
60 
61 /** Currently, the function ip_output_if_opt() is only used with IGMP */
62 #define IP_OPTIONS_SEND (LWIP_IPV4 && LWIP_IGMP)
63 
64 #define ip_init() /* Compatibility define, no init needed. */
65 struct netif *ip4_route(const ip4_addr_t *dest);
66 #if LWIP_IPV4_SRC_ROUTING
67 struct netif *ip4_route_src(const ip4_addr_t *src, const ip4_addr_t *dest);
68 #else /* LWIP_IPV4_SRC_ROUTING */
69 #define ip4_route_src(src, dest) ip4_route(dest)
70 #endif /* LWIP_IPV4_SRC_ROUTING */
71 err_t ip4_input(struct pbuf *p, struct netif *inp);
72 err_t ip4_output(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest,
73  u8_t ttl, u8_t tos, u8_t proto);
74 err_t ip4_output_if(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest,
75  u8_t ttl, u8_t tos, u8_t proto, struct netif *netif);
76 err_t ip4_output_if_src(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest,
77  u8_t ttl, u8_t tos, u8_t proto, struct netif *netif);
78 #if LWIP_NETIF_USE_HINTS
79 err_t ip4_output_hinted(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest,
80  u8_t ttl, u8_t tos, u8_t proto, struct netif_hint *netif_hint);
81 #endif /* LWIP_NETIF_USE_HINTS */
82 #if IP_OPTIONS_SEND
83 err_t ip4_output_if_opt(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest,
84  u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options,
85  u16_t optlen);
86 err_t ip4_output_if_opt_src(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest,
87  u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options,
88  u16_t optlen);
89 #endif /* IP_OPTIONS_SEND */
90 
91 #if LWIP_MULTICAST_TX_OPTIONS
92 void ip4_set_default_multicast_netif(struct netif* default_multicast_netif);
93 #endif /* LWIP_MULTICAST_TX_OPTIONS */
94 
95 #define ip4_netif_get_local_ip(netif) (((netif) != NULL) ? netif_ip_addr4(netif) : NULL)
96 
97 #if IP_DEBUG
98 void ip4_debug_print(struct pbuf *p);
99 #else
100 #define ip4_debug_print(p)
101 #endif /* IP_DEBUG */
102 
103 #ifdef __cplusplus
104 }
105 #endif
106 
107 #endif /* LWIP_IPV4 */
108 
109 #endif /* LWIP_HDR_IP_H */
110 
111 
various utility macros
IPv4 protocol definitions.
IPv4 address API.
lwIP Options Configuration
netif API (to be used from TCPIP thread)
Main packet buffer struct.
lwIP Error codes
Generic data structure used for all lwIP network interfaces.
pbuf API
IP address structure for passing IP addresses by value.
Definition: nsapi_types.h:235
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.