45 #include "lwip/netifapi.h"
46 #include "lwip/memp.h"
47 #include "lwip/priv/tcpip_priv.h"
49 #define NETIFAPI_VAR_REF(name) API_VAR_REF(name)
50 #define NETIFAPI_VAR_DECLARE(name) API_VAR_DECLARE(struct netifapi_msg, name)
51 #define NETIFAPI_VAR_ALLOC(name) API_VAR_ALLOC(struct netifapi_msg, MEMP_NETIFAPI_MSG, name, ERR_MEM)
52 #define NETIFAPI_VAR_FREE(name) API_VAR_FREE(MEMP_NETIFAPI_MSG, name)
62 struct netifapi_msg *msg = (
struct netifapi_msg*)(
void*)m;
72 msg->msg.add.input)) {
88 struct netifapi_msg *msg = (
struct netifapi_msg*)(
void*)m;
90 netif_set_addr( msg->netif,
107 struct netifapi_msg *msg = (
struct netifapi_msg*)(
void*)m;
109 if (msg->msg.common.errtfunc !=
NULL) {
110 return msg->msg.common.errtfunc(msg->netif);
112 msg->msg.common.voidfunc(msg->netif);
127 const ip4_addr_t *ipaddr,
const ip4_addr_t *netmask,
const ip4_addr_t *gw,
132 NETIFAPI_VAR_DECLARE(msg);
133 NETIFAPI_VAR_ALLOC(msg);
136 if (ipaddr ==
NULL) {
137 ipaddr = IP4_ADDR_ANY4;
139 if (netmask ==
NULL) {
140 netmask = IP4_ADDR_ANY4;
147 NETIFAPI_VAR_REF(msg).netif =
netif;
149 NETIFAPI_VAR_REF(msg).msg.add.ipaddr = NETIFAPI_VAR_REF(ipaddr);
150 NETIFAPI_VAR_REF(msg).msg.add.netmask = NETIFAPI_VAR_REF(netmask);
151 NETIFAPI_VAR_REF(msg).msg.add.gw = NETIFAPI_VAR_REF(gw);
153 NETIFAPI_VAR_REF(msg).msg.add.state = state;
154 NETIFAPI_VAR_REF(msg).msg.add.init = init;
155 NETIFAPI_VAR_REF(msg).msg.add.input = input;
157 NETIFAPI_VAR_FREE(msg);
171 const ip4_addr_t *ipaddr,
172 const ip4_addr_t *netmask,
173 const ip4_addr_t *gw)
176 NETIFAPI_VAR_DECLARE(msg);
177 NETIFAPI_VAR_ALLOC(msg);
179 if (ipaddr ==
NULL) {
180 ipaddr = IP4_ADDR_ANY4;
182 if (netmask ==
NULL) {
183 netmask = IP4_ADDR_ANY4;
189 NETIFAPI_VAR_REF(msg).netif =
netif;
190 NETIFAPI_VAR_REF(msg).msg.add.ipaddr = NETIFAPI_VAR_REF(ipaddr);
191 NETIFAPI_VAR_REF(msg).msg.add.netmask = NETIFAPI_VAR_REF(netmask);
192 NETIFAPI_VAR_REF(msg).msg.add.gw = NETIFAPI_VAR_REF(gw);
194 NETIFAPI_VAR_FREE(msg);
206 netifapi_netif_common(
struct netif *
netif, netifapi_void_fn voidfunc,
207 netifapi_errt_fn errtfunc)
210 NETIFAPI_VAR_DECLARE(msg);
211 NETIFAPI_VAR_ALLOC(msg);
213 NETIFAPI_VAR_REF(msg).netif =
netif;
214 NETIFAPI_VAR_REF(msg).msg.common.voidfunc = voidfunc;
215 NETIFAPI_VAR_REF(msg).msg.common.errtfunc = errtfunc;
217 NETIFAPI_VAR_FREE(msg);