42 #define NETIFAPI_VAR_REF(name) API_VAR_REF(name) 43 #define NETIFAPI_VAR_DECLARE(name) API_VAR_DECLARE(struct netifapi_msg, name) 44 #define NETIFAPI_VAR_ALLOC(name) API_VAR_ALLOC(struct netifapi_msg, MEMP_NETIFAPI_MSG, name) 45 #define NETIFAPI_VAR_FREE(name) API_VAR_FREE(MEMP_NETIFAPI_MSG, name) 51 netifapi_do_netif_add(
struct netifapi_msg_msg *msg)
61 msg->msg.add.input)) {
74 netifapi_do_netif_set_addr(
struct netifapi_msg_msg *msg)
76 netif_set_addr( msg->netif,
90 netifapi_do_netif_common(
struct netifapi_msg_msg *msg)
92 if (msg->msg.common.errtfunc !=
NULL) {
93 msg->err = msg->msg.common.errtfunc(msg->netif);
96 msg->msg.common.voidfunc(msg->netif);
110 const ip4_addr_t *ipaddr,
const ip4_addr_t *netmask,
const ip4_addr_t *gw,
115 NETIFAPI_VAR_DECLARE(msg);
116 NETIFAPI_VAR_ALLOC(msg);
117 #if LWIP_MPU_COMPATIBLE 118 if (ipaddr ==
NULL) {
119 ipaddr = IP4_ADDR_ANY;
121 if (netmask ==
NULL) {
122 netmask = IP4_ADDR_ANY;
128 NETIFAPI_VAR_REF(msg).function = netifapi_do_netif_add;
129 NETIFAPI_VAR_REF(msg).msg.netif = netif;
131 NETIFAPI_VAR_REF(msg).msg.msg.add.ipaddr = NETIFAPI_VAR_REF(ipaddr);
132 NETIFAPI_VAR_REF(msg).msg.msg.add.netmask = NETIFAPI_VAR_REF(netmask);
133 NETIFAPI_VAR_REF(msg).msg.msg.add.gw = NETIFAPI_VAR_REF(gw);
135 NETIFAPI_VAR_REF(msg).msg.msg.add.state = state;
136 NETIFAPI_VAR_REF(msg).msg.msg.add.init = init;
137 NETIFAPI_VAR_REF(msg).msg.msg.add.input = input;
140 err = NETIFAPI_VAR_REF(msg).msg.err;
141 NETIFAPI_VAR_FREE(msg);
153 netifapi_netif_set_addr(
struct netif *netif,
154 const ip4_addr_t *ipaddr,
155 const ip4_addr_t *netmask,
156 const ip4_addr_t *gw)
159 NETIFAPI_VAR_DECLARE(msg);
160 NETIFAPI_VAR_ALLOC(msg);
161 #if LWIP_MPU_COMPATIBLE 162 if (ipaddr ==
NULL) {
163 ipaddr = IP4_ADDR_ANY;
165 if (netmask ==
NULL) {
166 netmask = IP4_ADDR_ANY;
172 NETIFAPI_VAR_REF(msg).function = netifapi_do_netif_set_addr;
173 NETIFAPI_VAR_REF(msg).msg.netif = netif;
174 NETIFAPI_VAR_REF(msg).msg.msg.add.ipaddr = NETIFAPI_VAR_REF(ipaddr);
175 NETIFAPI_VAR_REF(msg).msg.msg.add.netmask = NETIFAPI_VAR_REF(netmask);
176 NETIFAPI_VAR_REF(msg).msg.msg.add.gw = NETIFAPI_VAR_REF(gw);
179 err = NETIFAPI_VAR_REF(msg).msg.err;
180 NETIFAPI_VAR_FREE(msg);
192 netifapi_netif_common(
struct netif *netif, netifapi_void_fn voidfunc,
193 netifapi_errt_fn errtfunc)
196 NETIFAPI_VAR_DECLARE(msg);
197 NETIFAPI_VAR_ALLOC(msg);
199 NETIFAPI_VAR_REF(msg).function = netifapi_do_netif_common;
200 NETIFAPI_VAR_REF(msg).msg.netif = netif;
201 NETIFAPI_VAR_REF(msg).msg.msg.common.voidfunc = voidfunc;
202 NETIFAPI_VAR_REF(msg).msg.msg.common.errtfunc = errtfunc;
205 err = NETIFAPI_VAR_REF(msg).msg.err;
206 NETIFAPI_VAR_FREE(msg);
err_t(* netif_input_fn)(struct pbuf *p, struct netif *inp)
#define API_EXPR_REF(expr)
#define API_VAR_REF(name)
#define TCPIP_NETIFAPI(m)
#define TCPIP_NETIFAPI_ACK(m)
err_t(* netif_init_fn)(struct netif *netif)
struct netif * netif_add(struct netif *netif, void *state, netif_init_fn init, netif_input_fn input)