52#define NETIFAPI_VAR_REF(name) API_VAR_REF(name)
53#define NETIFAPI_VAR_DECLARE(name) API_VAR_DECLARE(struct netifapi_msg, name)
54#define NETIFAPI_VAR_ALLOC(name) API_VAR_ALLOC(struct netifapi_msg, MEMP_NETIFAPI_MSG, name, ERR_MEM)
55#define NETIFAPI_VAR_FREE(name) API_VAR_FREE(MEMP_NETIFAPI_MSG, name)
65 struct netifapi_msg *
msg = (
struct netifapi_msg *)(
void *)
m;
75 msg->msg.add.input)) {
91 struct netifapi_msg *
msg = (
struct netifapi_msg *)(
void *)
m;
93 netif_set_addr(
msg->netif,
109 struct netifapi_msg *
msg = (
struct netifapi_msg *)(
void *)
m;
123 struct netifapi_msg *
msg = (
struct netifapi_msg *)(
void *)
m;
141 struct netifapi_msg *
msg = (
struct netifapi_msg *)(
void *)
m;
143 if (
msg->msg.common.errtfunc !=
NULL) {
144 return msg->msg.common.errtfunc(
msg->netif);
146 msg->msg.common.voidfunc(
msg->netif);
151#if LWIP_ARP && LWIP_IPV4
163netifapi_arp_add(
const ip4_addr_t *ipaddr,
struct eth_addr *ethaddr,
enum netifapi_arp_entry
type)
170#if ETHARP_SUPPORT_STATIC_ENTRIES && LWIP_TCPIP_CORE_LOCKING
172 err = etharp_add_static_entry(ipaddr, ethaddr);
193netifapi_arp_remove(
const ip4_addr_t *ipaddr,
enum netifapi_arp_entry
type)
200#if ETHARP_SUPPORT_STATIC_ENTRIES && LWIP_TCPIP_CORE_LOCKING
202 err = etharp_remove_static_entry(ipaddr);
224 const ip4_addr_t *ipaddr,
const ip4_addr_t *netmask,
const ip4_addr_t *gw,
229 NETIFAPI_VAR_DECLARE(
msg);
230 NETIFAPI_VAR_ALLOC(
msg);
233 if (ipaddr ==
NULL) {
234 ipaddr = IP4_ADDR_ANY4;
236 if (netmask ==
NULL) {
237 netmask = IP4_ADDR_ANY4;
244 NETIFAPI_VAR_REF(
msg).netif =
netif;
246 NETIFAPI_VAR_REF(
msg).msg.add.ipaddr = NETIFAPI_VAR_REF(ipaddr);
247 NETIFAPI_VAR_REF(
msg).msg.add.netmask = NETIFAPI_VAR_REF(netmask);
248 NETIFAPI_VAR_REF(
msg).msg.add.gw = NETIFAPI_VAR_REF(gw);
250 NETIFAPI_VAR_REF(
msg).msg.add.state =
state;
251 NETIFAPI_VAR_REF(
msg).msg.add.init =
init;
252 NETIFAPI_VAR_REF(
msg).msg.add.input =
input;
254 NETIFAPI_VAR_FREE(
msg);
268 const ip4_addr_t *ipaddr,
269 const ip4_addr_t *netmask,
270 const ip4_addr_t *gw)
273 NETIFAPI_VAR_DECLARE(
msg);
274 NETIFAPI_VAR_ALLOC(
msg);
276 if (ipaddr ==
NULL) {
277 ipaddr = IP4_ADDR_ANY4;
279 if (netmask ==
NULL) {
280 netmask = IP4_ADDR_ANY4;
286 NETIFAPI_VAR_REF(
msg).netif =
netif;
287 NETIFAPI_VAR_REF(
msg).msg.add.ipaddr = NETIFAPI_VAR_REF(ipaddr);
288 NETIFAPI_VAR_REF(
msg).msg.add.netmask = NETIFAPI_VAR_REF(netmask);
289 NETIFAPI_VAR_REF(
msg).msg.add.gw = NETIFAPI_VAR_REF(gw);
291 NETIFAPI_VAR_FREE(
msg);
303netifapi_netif_common(
struct netif *
netif, netifapi_void_fn voidfunc,
304 netifapi_errt_fn errtfunc)
307 NETIFAPI_VAR_DECLARE(
msg);
308 NETIFAPI_VAR_ALLOC(
msg);
310 NETIFAPI_VAR_REF(
msg).netif =
netif;
311 NETIFAPI_VAR_REF(
msg).msg.common.voidfunc = voidfunc;
312 NETIFAPI_VAR_REF(
msg).msg.common.errtfunc = errtfunc;
314 NETIFAPI_VAR_FREE(
msg);
327netifapi_netif_name_to_index(
const char *
name,
u8_t *
idx)
330 NETIFAPI_VAR_DECLARE(
msg);
331 NETIFAPI_VAR_ALLOC(
msg);
335#if LWIP_MPU_COMPATIBLE
343 *
idx = NETIFAPI_VAR_REF(
msg).msg.ifs.index;
345 NETIFAPI_VAR_FREE(
msg);
362 NETIFAPI_VAR_DECLARE(
msg);
363 NETIFAPI_VAR_ALLOC(
msg);
365 NETIFAPI_VAR_REF(
msg).msg.ifs.index =
idx;
366#if !LWIP_MPU_COMPATIBLE
367 NETIFAPI_VAR_REF(
msg).msg.ifs.name =
name;
370#if LWIP_MPU_COMPATIBLE
376 NETIFAPI_VAR_FREE(
msg);
#define LOCK_TCPIP_CORE()
#define UNLOCK_TCPIP_CORE()
GLuint GLuint GLsizei GLenum type
GLenum GLenum GLenum input
#define LWIP_UNUSED_ARG(x)
#define LWIP_CONST_CAST(target_type, val)
char * netif_index_to_name(u8_t idx, char *name)
struct netif * netif_add(struct netif *netif, void *state, netif_init_fn init, netif_input_fn input)
u8_t netif_name_to_index(const char *name)
err_t(* netif_init_fn)(struct netif *netif)
err_t(* netif_input_fn)(struct pbuf *p, struct netif *inp)
err_t tcpip_api_call(tcpip_api_call_fn fn, struct tcpip_api_call_data *call)
#define API_EXPR_REF(expr)
#define API_VAR_REF(name)