ReactOS 0.4.16-dev-306-g647d351
netif.h
Go to the documentation of this file.
1
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_NETIF_H
38#define LWIP_HDR_NETIF_H
39
40#include "lwip/opt.h"
41
42#define ENABLE_LOOPBACK (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF)
43
44#include "lwip/err.h"
45
46#include "lwip/ip_addr.h"
47
48#include "lwip/def.h"
49#include "lwip/pbuf.h"
50#include "lwip/stats.h"
51
52#ifdef __cplusplus
53extern "C" {
54#endif
55
56/* Throughout this file, IP addresses are expected to be in
57 * the same byte order as in IP_PCB. */
58
62#ifndef NETIF_MAX_HWADDR_LEN
63#define NETIF_MAX_HWADDR_LEN 6U
64#endif
65
70#define NETIF_NAMESIZE 6
71
84#define NETIF_FLAG_UP 0x01U
87#define NETIF_FLAG_BROADCAST 0x02U
93#define NETIF_FLAG_LINK_UP 0x04U
97#define NETIF_FLAG_ETHARP 0x08U
101#define NETIF_FLAG_ETHERNET 0x10U
104#define NETIF_FLAG_IGMP 0x20U
107#define NETIF_FLAG_MLD6 0x40U
108
114{
115#if LWIP_IPV4
116#if LWIP_DHCP
117 LWIP_NETIF_CLIENT_DATA_INDEX_DHCP,
118#endif
119#if LWIP_AUTOIP
120 LWIP_NETIF_CLIENT_DATA_INDEX_AUTOIP,
121#endif
122#if LWIP_ACD
123 LWIP_NETIF_CLIENT_DATA_INDEX_ACD,
124#endif
125#if LWIP_IGMP
126 LWIP_NETIF_CLIENT_DATA_INDEX_IGMP,
127#endif
128#endif /* LWIP_IPV4 */
129#if LWIP_IPV6
130#if LWIP_IPV6_DHCP6
131 LWIP_NETIF_CLIENT_DATA_INDEX_DHCP6,
132#endif
133#if LWIP_IPV6_MLD
134 LWIP_NETIF_CLIENT_DATA_INDEX_MLD6,
135#endif
136#endif /* LWIP_IPV6 */
139
140#if LWIP_CHECKSUM_CTRL_PER_NETIF
141#define NETIF_CHECKSUM_GEN_IP 0x0001
142#define NETIF_CHECKSUM_GEN_UDP 0x0002
143#define NETIF_CHECKSUM_GEN_TCP 0x0004
144#define NETIF_CHECKSUM_GEN_ICMP 0x0008
145#define NETIF_CHECKSUM_GEN_ICMP6 0x0010
146#define NETIF_CHECKSUM_CHECK_IP 0x0100
147#define NETIF_CHECKSUM_CHECK_UDP 0x0200
148#define NETIF_CHECKSUM_CHECK_TCP 0x0400
149#define NETIF_CHECKSUM_CHECK_ICMP 0x0800
150#define NETIF_CHECKSUM_CHECK_ICMP6 0x1000
151#define NETIF_CHECKSUM_ENABLE_ALL 0xFFFF
152#define NETIF_CHECKSUM_DISABLE_ALL 0x0000
153#endif /* LWIP_CHECKSUM_CTRL_PER_NETIF */
154
155struct netif;
156
165
171typedef err_t (*netif_init_fn)(struct netif *netif);
181typedef err_t (*netif_input_fn)(struct pbuf *p, struct netif *inp);
182
183#if LWIP_IPV4
192typedef err_t (*netif_output_fn)(struct netif *netif, struct pbuf *p,
193 const ip4_addr_t *ipaddr);
194#endif /* LWIP_IPV4*/
195
196#if LWIP_IPV6
205typedef err_t (*netif_output_ip6_fn)(struct netif *netif, struct pbuf *p,
206 const ip6_addr_t *ipaddr);
207#endif /* LWIP_IPV6 */
208
215typedef err_t (*netif_linkoutput_fn)(struct netif *netif, struct pbuf *p);
218#if LWIP_IPV4 && LWIP_IGMP
220typedef err_t (*netif_igmp_mac_filter_fn)(struct netif *netif,
221 const ip4_addr_t *group, enum netif_mac_filter_action action);
222#endif /* LWIP_IPV4 && LWIP_IGMP */
223#if LWIP_IPV6 && LWIP_IPV6_MLD
225typedef err_t (*netif_mld_mac_filter_fn)(struct netif *netif,
226 const ip6_addr_t *group, enum netif_mac_filter_action action);
227#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */
228
229#if LWIP_DHCP || LWIP_AUTOIP || LWIP_IGMP || LWIP_IPV6_MLD || LWIP_IPV6_DHCP6 || (LWIP_NUM_NETIF_CLIENT_DATA > 0)
230#if LWIP_NUM_NETIF_CLIENT_DATA > 0
231u8_t netif_alloc_client_data_id(void);
232#endif
236#define netif_set_client_data(netif, id, data) netif_get_client_data(netif, id) = (data)
240#define netif_get_client_data(netif, id) (netif)->client_data[(id)]
241#endif
242
243#if (LWIP_IPV4 && LWIP_ARP && (ARP_TABLE_SIZE > 0x7f)) || (LWIP_IPV6 && (LWIP_ND6_NUM_DESTINATIONS > 0x7f))
244typedef u16_t netif_addr_idx_t;
245#define NETIF_ADDR_IDX_MAX 0x7FFF
246#else
248#define NETIF_ADDR_IDX_MAX 0x7F
249#endif
250
251#if LWIP_NETIF_HWADDRHINT || LWIP_VLAN_PCP
252 #define LWIP_NETIF_USE_HINTS 1
253 struct netif_hint {
254#if LWIP_NETIF_HWADDRHINT
255 u8_t addr_hint;
256#endif
257#if LWIP_VLAN_PCP
259 s32_t tci;
260#endif
261 };
262#else /* LWIP_NETIF_HWADDRHINT || LWIP_VLAN_PCP */
263 #define LWIP_NETIF_USE_HINTS 0
264#endif /* LWIP_NETIF_HWADDRHINT || LWIP_VLAN_PCP*/
265
269struct netif {
270#if !LWIP_SINGLE_NETIF
272 struct netif *next;
273#endif
274
275#if LWIP_IPV4
277 ip_addr_t ip_addr;
278 ip_addr_t netmask;
279 ip_addr_t gw;
280#endif /* LWIP_IPV4 */
281#if LWIP_IPV6
286 u8_t ip6_addr_state[LWIP_IPV6_NUM_ADDRESSES];
287#if LWIP_IPV6_ADDRESS_LIFETIMES
291 u32_t ip6_addr_valid_life[LWIP_IPV6_NUM_ADDRESSES];
292 u32_t ip6_addr_pref_life[LWIP_IPV6_NUM_ADDRESSES];
293#endif /* LWIP_IPV6_ADDRESS_LIFETIMES */
294#endif /* LWIP_IPV6 */
298#if LWIP_IPV4
303 netif_output_fn output;
304#endif /* LWIP_IPV4 */
309#if LWIP_IPV6
314 netif_output_ip6_fn output_ip6;
315#endif /* LWIP_IPV6 */
316#if LWIP_NETIF_STATUS_CALLBACK
320#endif /* LWIP_NETIF_STATUS_CALLBACK */
321#if LWIP_NETIF_LINK_CALLBACK
324 netif_status_callback_fn link_callback;
325#endif /* LWIP_NETIF_LINK_CALLBACK */
326#if LWIP_NETIF_REMOVE_CALLBACK
328 netif_status_callback_fn remove_callback;
329#endif /* LWIP_NETIF_REMOVE_CALLBACK */
332 void *state;
333#ifdef netif_get_client_data
335#endif
336#if LWIP_NETIF_HOSTNAME
337 /* the hostname for this netif, NULL is a valid value */
338 const char* hostname;
339#endif /* LWIP_NETIF_HOSTNAME */
340#if LWIP_CHECKSUM_CTRL_PER_NETIF
341 u16_t chksum_flags;
342#endif /* LWIP_CHECKSUM_CTRL_PER_NETIF*/
345#if LWIP_IPV6 && LWIP_ND6_ALLOW_RA_UPDATES
347 u16_t mtu6;
348#endif /* LWIP_IPV6 && LWIP_ND6_ALLOW_RA_UPDATES */
356 char name[2];
360#if LWIP_IPV6_AUTOCONFIG
362 u8_t ip6_autoconfig_enabled;
363#endif /* LWIP_IPV6_AUTOCONFIG */
364#if LWIP_IPV6_SEND_ROUTER_SOLICIT
366 u8_t rs_count;
367#endif /* LWIP_IPV6_SEND_ROUTER_SOLICIT */
368#if MIB2_STATS
370 u8_t link_type;
372 u32_t link_speed;
374 u32_t ts;
376 struct stats_mib2_netif_ctrs mib2_counters;
377#endif /* MIB2_STATS */
378#if LWIP_IPV4 && LWIP_IGMP
381 netif_igmp_mac_filter_fn igmp_mac_filter;
382#endif /* LWIP_IPV4 && LWIP_IGMP */
383#if LWIP_IPV6 && LWIP_IPV6_MLD
386 netif_mld_mac_filter_fn mld_mac_filter;
387#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */
388#if LWIP_ACD
389 struct acd *acd_list;
390#endif /* LWIP_ACD */
391#if LWIP_NETIF_USE_HINTS
392 struct netif_hint *hints;
393#endif /* LWIP_NETIF_USE_HINTS */
394#if ENABLE_LOOPBACK
395 /* List of packets to be queued for ourselves. */
396 struct pbuf *loop_first;
397 struct pbuf *loop_last;
398#if LWIP_LOOPBACK_MAX_PBUFS
399 u16_t loop_cnt_current;
400#endif /* LWIP_LOOPBACK_MAX_PBUFS */
401#if LWIP_NETIF_LOOPBACK_MULTITHREADING
402 /* Used if the original scheduling failed. */
403 u8_t reschedule_poll;
404#endif /* LWIP_NETIF_LOOPBACK_MULTITHREADING */
405#endif /* ENABLE_LOOPBACK */
406};
407
408#if LWIP_CHECKSUM_CTRL_PER_NETIF
409#define NETIF_SET_CHECKSUM_CTRL(netif, chksumflags) do { \
410 (netif)->chksum_flags = chksumflags; } while(0)
411#define NETIF_CHECKSUM_ENABLED(netif, chksumflag) (((netif) == NULL) || (((netif)->chksum_flags & (chksumflag)) != 0))
412#define IF__NETIF_CHECKSUM_ENABLED(netif, chksumflag) if NETIF_CHECKSUM_ENABLED(netif, chksumflag)
413#else /* LWIP_CHECKSUM_CTRL_PER_NETIF */
414#define NETIF_CHECKSUM_ENABLED(netif, chksumflag) 0
415#define NETIF_SET_CHECKSUM_CTRL(netif, chksumflags)
416#define IF__NETIF_CHECKSUM_ENABLED(netif, chksumflag)
417#endif /* LWIP_CHECKSUM_CTRL_PER_NETIF */
418
419#if LWIP_SINGLE_NETIF
420#define NETIF_FOREACH(netif) if (((netif) = netif_default) != NULL)
421#else /* LWIP_SINGLE_NETIF */
423extern struct netif *netif_list;
424#define NETIF_FOREACH(netif) for ((netif) = netif_list; (netif) != NULL; (netif) = (netif)->next)
425#endif /* LWIP_SINGLE_NETIF */
427extern struct netif *netif_default;
428
429void netif_init(void);
430
432
433#if LWIP_IPV4
434struct netif *netif_add(struct netif *netif,
435 const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw,
437void netif_set_addr(struct netif *netif, const ip4_addr_t *ipaddr, const ip4_addr_t *netmask,
438 const ip4_addr_t *gw);
439#else /* LWIP_IPV4 */
441#endif /* LWIP_IPV4 */
442void netif_remove(struct netif * netif);
443
444/* Returns a network interface given its name. The name is of the form
445 "et0", where the first two letters are the "name" field in the
446 netif structure, and the digit is in the num field in the same
447 structure. */
448struct netif *netif_find(const char *name);
449
450void netif_set_default(struct netif *netif);
451
452#if LWIP_IPV4
453void netif_set_ipaddr(struct netif *netif, const ip4_addr_t *ipaddr);
454void netif_set_netmask(struct netif *netif, const ip4_addr_t *netmask);
455void netif_set_gw(struct netif *netif, const ip4_addr_t *gw);
457#define netif_ip4_addr(netif) ((const ip4_addr_t*)ip_2_ip4(&((netif)->ip_addr)))
459#define netif_ip4_netmask(netif) ((const ip4_addr_t*)ip_2_ip4(&((netif)->netmask)))
461#define netif_ip4_gw(netif) ((const ip4_addr_t*)ip_2_ip4(&((netif)->gw)))
463#define netif_ip_addr4(netif) ((const ip_addr_t*)&((netif)->ip_addr))
465#define netif_ip_netmask4(netif) ((const ip_addr_t*)&((netif)->netmask))
467#define netif_ip_gw4(netif) ((const ip_addr_t*)&((netif)->gw))
468#endif /* LWIP_IPV4 */
469
470#define netif_set_flags(netif, set_flags) do { (netif)->flags = (u8_t)((netif)->flags | (set_flags)); } while(0)
471#define netif_clear_flags(netif, clr_flags) do { (netif)->flags = (u8_t)((netif)->flags & (u8_t)(~(clr_flags) & 0xff)); } while(0)
472#define netif_is_flag_set(netif, flag) (((netif)->flags & (flag)) != 0)
473
474void netif_set_up(struct netif *netif);
475void netif_set_down(struct netif *netif);
479#define netif_is_up(netif) (((netif)->flags & NETIF_FLAG_UP) ? (u8_t)1 : (u8_t)0)
480
481#if LWIP_NETIF_STATUS_CALLBACK
482void netif_set_status_callback(struct netif *netif, netif_status_callback_fn status_callback);
483#endif /* LWIP_NETIF_STATUS_CALLBACK */
484#if LWIP_NETIF_REMOVE_CALLBACK
485void netif_set_remove_callback(struct netif *netif, netif_status_callback_fn remove_callback);
486#endif /* LWIP_NETIF_REMOVE_CALLBACK */
487
488void netif_set_link_up(struct netif *netif);
489void netif_set_link_down(struct netif *netif);
491#define netif_is_link_up(netif) (((netif)->flags & NETIF_FLAG_LINK_UP) ? (u8_t)1 : (u8_t)0)
492
493#if LWIP_NETIF_LINK_CALLBACK
494void netif_set_link_callback(struct netif *netif, netif_status_callback_fn link_callback);
495#endif /* LWIP_NETIF_LINK_CALLBACK */
496
497#if LWIP_NETIF_HOSTNAME
499#define netif_set_hostname(netif, name) do { if((netif) != NULL) { (netif)->hostname = name; }}while(0)
501#define netif_get_hostname(netif) (((netif) != NULL) ? ((netif)->hostname) : NULL)
502#endif /* LWIP_NETIF_HOSTNAME */
503
504#if LWIP_IGMP
507#define netif_set_igmp_mac_filter(netif, function) do { if((netif) != NULL) { (netif)->igmp_mac_filter = function; }}while(0)
509#define netif_get_igmp_mac_filter(netif) (((netif) != NULL) ? ((netif)->igmp_mac_filter) : NULL)
510#endif /* LWIP_IGMP */
511
512#if LWIP_IPV6 && LWIP_IPV6_MLD
515#define netif_set_mld_mac_filter(netif, function) do { if((netif) != NULL) { (netif)->mld_mac_filter = function; }}while(0)
517#define netif_get_mld_mac_filter(netif) (((netif) != NULL) ? ((netif)->mld_mac_filter) : NULL)
518#define netif_mld_mac_filter(netif, addr, action) do { if((netif) && (netif)->mld_mac_filter) { (netif)->mld_mac_filter((netif), (addr), (action)); }}while(0)
519#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */
520
521#if ENABLE_LOOPBACK
522err_t netif_loop_output(struct netif *netif, struct pbuf *p);
523void netif_poll(struct netif *netif);
524#if !LWIP_NETIF_LOOPBACK_MULTITHREADING
525void netif_poll_all(void);
526#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */
527#endif /* ENABLE_LOOPBACK */
528
529err_t netif_input(struct pbuf *p, struct netif *inp);
530
531#if LWIP_IPV6
533#define netif_ip_addr6(netif, i) ((const ip_addr_t*)(&((netif)->ip6_addr[i])))
535#define netif_ip6_addr(netif, i) ((const ip6_addr_t*)ip_2_ip6(&((netif)->ip6_addr[i])))
536void netif_ip6_addr_set(struct netif *netif, s8_t addr_idx, const ip6_addr_t *addr6);
537void netif_ip6_addr_set_parts(struct netif *netif, s8_t addr_idx, u32_t i0, u32_t i1, u32_t i2, u32_t i3);
538#define netif_ip6_addr_state(netif, i) ((netif)->ip6_addr_state[i])
539void netif_ip6_addr_set_state(struct netif* netif, s8_t addr_idx, u8_t state);
540s8_t netif_get_ip6_addr_match(struct netif *netif, const ip6_addr_t *ip6addr);
541void netif_create_ip6_linklocal_address(struct netif *netif, u8_t from_mac_48bit);
542err_t netif_add_ip6_address(struct netif *netif, const ip6_addr_t *ip6addr, s8_t *chosen_idx);
543#define netif_set_ip6_autoconfig_enabled(netif, action) do { if(netif) { (netif)->ip6_autoconfig_enabled = (action); }}while(0)
544#if LWIP_IPV6_ADDRESS_LIFETIMES
545#define netif_ip6_addr_valid_life(netif, i) \
546 (((netif) != NULL) ? ((netif)->ip6_addr_valid_life[i]) : IP6_ADDR_LIFE_STATIC)
547#define netif_ip6_addr_set_valid_life(netif, i, secs) \
548 do { if (netif != NULL) { (netif)->ip6_addr_valid_life[i] = (secs); }} while (0)
549#define netif_ip6_addr_pref_life(netif, i) \
550 (((netif) != NULL) ? ((netif)->ip6_addr_pref_life[i]) : IP6_ADDR_LIFE_STATIC)
551#define netif_ip6_addr_set_pref_life(netif, i, secs) \
552 do { if (netif != NULL) { (netif)->ip6_addr_pref_life[i] = (secs); }} while (0)
553#define netif_ip6_addr_isstatic(netif, i) \
554 (netif_ip6_addr_valid_life((netif), (i)) == IP6_ADDR_LIFE_STATIC)
555#else /* !LWIP_IPV6_ADDRESS_LIFETIMES */
556#define netif_ip6_addr_isstatic(netif, i) (1) /* all addresses are static */
557#endif /* !LWIP_IPV6_ADDRESS_LIFETIMES */
558#if LWIP_ND6_ALLOW_RA_UPDATES
559#define netif_mtu6(netif) ((netif)->mtu6)
560#else /* LWIP_ND6_ALLOW_RA_UPDATES */
561#define netif_mtu6(netif) ((netif)->mtu)
562#endif /* LWIP_ND6_ALLOW_RA_UPDATES */
563#endif /* LWIP_IPV6 */
564
565#if LWIP_NETIF_USE_HINTS
566#define NETIF_SET_HINTS(netif, netifhint) (netif)->hints = (netifhint)
567#define NETIF_RESET_HINTS(netif) (netif)->hints = NULL
568#else /* LWIP_NETIF_USE_HINTS */
569#define NETIF_SET_HINTS(netif, netifhint)
570#define NETIF_RESET_HINTS(netif)
571#endif /* LWIP_NETIF_USE_HINTS */
572
573u8_t netif_name_to_index(const char *name);
574char * netif_index_to_name(u8_t idx, char *name);
576
577/* Interface indexes always start at 1 per RFC 3493, section 4, num starts at 0 (internal index is 0..254)*/
578#define netif_get_index(netif) ((u8_t)((netif)->num + 1))
579#define NETIF_NO_INDEX (0)
580
587
588/* used for initialization only */
589#define LWIP_NSC_NONE 0x0000
591#define LWIP_NSC_NETIF_ADDED 0x0001
593#define LWIP_NSC_NETIF_REMOVED 0x0002
595#define LWIP_NSC_LINK_CHANGED 0x0004
599#define LWIP_NSC_STATUS_CHANGED 0x0008
601#define LWIP_NSC_IPV4_ADDRESS_CHANGED 0x0010
603#define LWIP_NSC_IPV4_GATEWAY_CHANGED 0x0020
605#define LWIP_NSC_IPV4_NETMASK_CHANGED 0x0040
607#define LWIP_NSC_IPV4_SETTINGS_CHANGED 0x0080
609#define LWIP_NSC_IPV6_SET 0x0100
611#define LWIP_NSC_IPV6_ADDR_STATE_CHANGED 0x0200
613#define LWIP_NSC_IPV4_ADDR_VALID 0x0400
614
618typedef union
619{
622 {
625 } link_changed;
628 {
631 } status_changed;
634 {
639 } ipv4_changed;
642 {
647 } ipv6_set;
650 {
657 } ipv6_addr_state_changed;
659
669
670#if LWIP_NETIF_EXT_STATUS_CALLBACK
671struct netif_ext_callback;
672typedef struct netif_ext_callback
673{
674 netif_ext_callback_fn callback_fn;
675 struct netif_ext_callback* next;
676} netif_ext_callback_t;
677
678#define NETIF_DECLARE_EXT_CALLBACK(name) static netif_ext_callback_t name;
679void netif_add_ext_callback(netif_ext_callback_t* callback, netif_ext_callback_fn fn);
680void netif_remove_ext_callback(netif_ext_callback_t* callback);
682#else
683#define NETIF_DECLARE_EXT_CALLBACK(name)
684#define netif_add_ext_callback(callback, fn)
685#define netif_remove_ext_callback(callback)
686#define netif_invoke_ext_callback(netif, reason, args)
687#endif
688
689#if LWIP_TESTMODE && LWIP_HAVE_LOOPIF
690struct netif* netif_get_loopif(void);
691#endif
692
693
694#ifdef __cplusplus
695}
696#endif
697
698#endif /* LWIP_HDR_NETIF_H */
static int state
Definition: maze.c:121
char * hostname
Definition: ftp.c:88
unsigned int idx
Definition: utils.c:41
static WCHAR reason[MAX_STRING_RESOURCE_LEN]
Definition: object.c:1904
const WCHAR * action
Definition: action.c:7509
GLboolean GLuint group
Definition: glext.h:11120
GLfloat GLfloat p
Definition: glext.h:8902
GLenum GLenum GLenum input
Definition: glext.h:9031
int32_t s32_t
Definition: arch.h:130
uint32_t u32_t
Definition: arch.h:129
uint8_t u8_t
Definition: arch.h:125
uint16_t u16_t
Definition: arch.h:127
int8_t s8_t
Definition: arch.h:126
s8_t err_t
Definition: err.h:96
err_t netif_input(struct pbuf *p, struct netif *inp)
Definition: netif.c:228
#define LWIP_IPV6_NUM_ADDRESSES
Definition: opt.h:2487
#define LWIP_NUM_NETIF_CLIENT_DATA
Definition: opt.h:1725
char * netif_index_to_name(u8_t idx, char *name)
Definition: netif.c:1710
void netif_set_link_down(struct netif *netif)
Definition: netif.c:1056
struct netif * netif_find(const char *name)
Definition: netif.c:1755
void(* netif_ext_callback_fn)(struct netif *netif, netif_nsc_reason_t reason, const netif_ext_callback_args_t *args)
Definition: netif.h:668
void netif_set_down(struct netif *netif)
Definition: netif.c:949
void netif_remove(struct netif *netif)
Definition: netif.c:764
struct netif * netif_get_by_index(u8_t idx)
Definition: netif.c:1730
u16_t netif_nsc_reason_t
Definition: netif.h:586
struct netif * netif_add(struct netif *netif, void *state, netif_init_fn init, netif_input_fn input)
Definition: netif.c:287
u8_t netif_name_to_index(const char *name)
Definition: netif.c:1691
void netif_set_default(struct netif *netif)
Definition: netif.c:849
void netif_set_link_up(struct netif *netif)
Definition: netif.c:1018
void netif_set_up(struct netif *netif)
Definition: netif.c:871
struct netif * netif_add_noaddr(struct netif *netif, void *state, netif_init_fn init, netif_input_fn input)
Definition: netif.c:250
ip6_addr_t ip_addr_t
Definition: ip_addr.h:344
static IPrintDialogCallback callback
Definition: printdlg.c:326
static void WINAPI status_callback(HINTERNET handle, DWORD_PTR ctx, DWORD status, LPVOID info, DWORD info_len)
Definition: ftp.c:948
void netif_init(void)
Definition: netif.c:188
struct netif * netif_list
Definition: netif.c:113
err_t(* netif_init_fn)(struct netif *netif)
Definition: netif.h:171
struct netif * netif_default
Definition: netif.c:115
void(* netif_status_callback_fn)(struct netif *netif)
Definition: netif.h:217
lwip_internal_netif_client_data_index
Definition: netif.h:114
@ LWIP_NETIF_CLIENT_DATA_INDEX_MAX
Definition: netif.h:137
#define netif_invoke_ext_callback(netif, reason, args)
Definition: netif.h:686
#define netif_add_ext_callback(callback, fn)
Definition: netif.h:684
netif_mac_filter_action
Definition: netif.h:159
@ NETIF_ADD_MAC_FILTER
Definition: netif.h:163
@ NETIF_DEL_MAC_FILTER
Definition: netif.h:161
err_t(* netif_input_fn)(struct pbuf *p, struct netif *inp)
Definition: netif.h:181
err_t(* netif_linkoutput_fn)(struct netif *netif, struct pbuf *p)
Definition: netif.h:215
#define NETIF_MAX_HWADDR_LEN
Definition: netif.h:63
u8_t netif_addr_idx_t
Definition: netif.h:247
#define netif_remove_ext_callback(callback)
Definition: netif.h:685
static unsigned __int64 next
Definition: rand_nt.c:6
#define args
Definition: format.c:66
namespace GUID const ADDRINFOEXW * hints
Definition: sock.c:80
Definition: match.c:390
Definition: name.c:39
const ip_addr_t * old_address
Definition: netif.h:646
Definition: netif.h:269
u8_t flags
Definition: netif.h:354
void * state
Definition: netif.h:332
netif_input_fn input
Definition: netif.h:297
u8_t num
Definition: netif.h:359
u8_t hwaddr[NETIF_MAX_HWADDR_LEN]
Definition: netif.h:350
u16_t mtu
Definition: netif.h:344
netif_linkoutput_fn linkoutput
Definition: netif.h:308
struct netif * next
Definition: netif.h:272
u8_t hwaddr_len
Definition: netif.h:352
Definition: pbuf.h:186
static GLenum _GLUfuncptr fn
Definition: wgl_font.c:159
static int init
Definition: wintirpc.c:33