68 #define NETIFAPI_VAR_REF(name) API_VAR_REF(name) 69 #define NETIFAPI_VAR_DECLARE(name) API_VAR_DECLARE(struct netifapi_msg, name) 70 #define NETIFAPI_VAR_ALLOC(name) API_VAR_ALLOC(struct netifapi_msg, MEMP_NETIFAPI_MSG, name, ERR_MEM) 71 #define NETIFAPI_VAR_FREE(name) API_VAR_FREE(MEMP_NETIFAPI_MSG, name) 81 struct netifapi_msg *msg = (
struct netifapi_msg*)(
void*)m;
85 API_EXPR_REF(msg->msg.add.ipaddr),
86 API_EXPR_REF(msg->msg.add.netmask),
87 API_EXPR_REF(msg->msg.add.gw),
91 msg->msg.add.input)) {
107 struct netifapi_msg *msg = (
struct netifapi_msg*)(
void*)m;
109 netif_set_addr( msg->netif,
110 API_EXPR_REF(msg->msg.add.ipaddr),
111 API_EXPR_REF(msg->msg.add.netmask),
112 API_EXPR_REF(msg->msg.add.gw));
126 struct netifapi_msg *msg = (
struct netifapi_msg*)(
void*)m;
128 if (msg->msg.common.errtfunc != NULL) {
129 return msg->msg.common.errtfunc(msg->netif);
131 msg->msg.common.voidfunc(msg->netif);
146 const ip4_addr_t *ipaddr,
const ip4_addr_t *netmask,
const ip4_addr_t *gw,
151 NETIFAPI_VAR_DECLARE(msg);
152 NETIFAPI_VAR_ALLOC(msg);
155 if (ipaddr == NULL) {
156 ipaddr = IP4_ADDR_ANY4;
158 if (netmask == NULL) {
159 netmask = IP4_ADDR_ANY4;
166 NETIFAPI_VAR_REF(msg).netif = netif;
168 NETIFAPI_VAR_REF(msg).msg.add.ipaddr = NETIFAPI_VAR_REF(ipaddr);
169 NETIFAPI_VAR_REF(msg).msg.add.netmask = NETIFAPI_VAR_REF(netmask);
170 NETIFAPI_VAR_REF(msg).msg.add.gw = NETIFAPI_VAR_REF(gw);
172 NETIFAPI_VAR_REF(msg).msg.add.state = state;
173 NETIFAPI_VAR_REF(msg).msg.add.init = init;
174 NETIFAPI_VAR_REF(msg).msg.add.input = input;
175 err =
tcpip_api_call(netifapi_do_netif_add, &API_VAR_REF(msg).call);
176 NETIFAPI_VAR_FREE(msg);
189 netifapi_netif_set_addr(
struct netif *netif,
190 const ip4_addr_t *ipaddr,
191 const ip4_addr_t *netmask,
192 const ip4_addr_t *gw)
195 NETIFAPI_VAR_DECLARE(msg);
196 NETIFAPI_VAR_ALLOC(msg);
198 if (ipaddr == NULL) {
199 ipaddr = IP4_ADDR_ANY4;
201 if (netmask == NULL) {
202 netmask = IP4_ADDR_ANY4;
208 NETIFAPI_VAR_REF(msg).netif = netif;
209 NETIFAPI_VAR_REF(msg).msg.add.ipaddr = NETIFAPI_VAR_REF(ipaddr);
210 NETIFAPI_VAR_REF(msg).msg.add.netmask = NETIFAPI_VAR_REF(netmask);
211 NETIFAPI_VAR_REF(msg).msg.add.gw = NETIFAPI_VAR_REF(gw);
212 err =
tcpip_api_call(netifapi_do_netif_set_addr, &API_VAR_REF(msg).call);
213 NETIFAPI_VAR_FREE(msg);
225 netifapi_netif_common(
struct netif *netif, netifapi_void_fn voidfunc,
226 netifapi_errt_fn errtfunc)
229 NETIFAPI_VAR_DECLARE(msg);
230 NETIFAPI_VAR_ALLOC(msg);
232 NETIFAPI_VAR_REF(msg).netif = netif;
233 NETIFAPI_VAR_REF(msg).msg.common.voidfunc = voidfunc;
234 NETIFAPI_VAR_REF(msg).msg.common.errtfunc = errtfunc;
235 err =
tcpip_api_call(netifapi_do_netif_common, &API_VAR_REF(msg).call);
236 NETIFAPI_VAR_FREE(msg);
err_t(* netif_input_fn)(struct pbuf *p, struct netif *inp)
struct netif * netif_add(struct netif *netif, void *state, netif_init_fn init, netif_input_fn input)
err_t tcpip_api_call(tcpip_api_call_fn fn, struct tcpip_api_call_data *call)
err_t(* netif_init_fn)(struct netif *netif)