11 #define UIP_LOG(m) uip_log(__FILE__,__LINE__,m)
14 #endif /* UIP_LOGGING == 1 */
18 #define UIP_ERROR(m) uip_log(__FILE__,__LINE__,m)
21 #endif /* UIP_ERRORING == 1 */
23 #if UIP_STATISTICS == 1
24 struct uip_stats uip_stat
;
28 #endif /* UIP_STATISTICS == 1 */
31 struct uip_netif
*uip_netif_list
;
32 struct uip_netif
*uip_netif_default
;
36 uip_netif_list
= uip_netif_default
= NULL
;
39 void uip_netif_setup(struct uip_netif
*netif
)
41 netif
->flags
|= UIP_NETIF_FLAG_UP
;
44 u8_t
uip_netif_isup(struct uip_netif
*netif
)
46 return (netif
->flags
&UIP_NETIF_FLAG_UP
);
49 struct uip_netif
* uip_netif_add(struct uip_netif
*netif
,struct uip_ip_addr
*ipaddr
,struct uip_ip_addr
*netmask
,struct uip_ip_addr
*gw
,void *state
,s8_t (*init
)(struct uip_netif
*netif
),s8_t (*input
)(struct uip_pbuf
*p
,struct uip_netif
*netif
))
51 static int netif_num
= 0;
54 netif
->num
= netif_num
++;
57 uip_netif_setaddr(netif
,ipaddr
,netmask
,gw
);
59 if(init(netif
)!=0) return NULL
;
61 UIP_LOG("uip_netif_add: netif is up.\n");
63 netif
->next
= uip_netif_list
;
64 uip_netif_list
= netif
;
69 void uip_netif_setaddr(struct uip_netif
*netif
,struct uip_ip_addr
*ipaddr
,struct uip_ip_addr
*netmask
,struct uip_ip_addr
*gw
)
71 uip_netif_setipaddr(netif
,ipaddr
);
72 uip_netif_setnetmask(netif
,netmask
);
73 uip_netif_setgw(netif
,gw
);
76 void uip_netif_setipaddr(struct uip_netif
*netif
,struct uip_ip_addr
*ipaddr
)
79 struct uip_tcp_pcb
*pcb
;
80 struct uip_tcp_pcb_listen
*lpcb
;
82 if((ip_addr_cmp(ipaddr
,&netif
->ip_addr
))==0) {
83 pcb
= uip_tcp_active_pcbs
;
85 if(ip_addr_cmp(&pcb
->local_ip
,&netif
->ip_addr
)) {
86 struct uip_tcp_pcb
*next
= pcb
->next
;
92 for(lpcb
=uip_tcp_listen_pcbs
.listen_pcbs
;lpcb
!=NULL
;lpcb
=lpcb
->next
) {
93 if(ip_addr_cmp(&lpcb
->local_ip
,&netif
->ip_addr
)) {
94 ip_addr_set(&lpcb
->local_ip
,ipaddr
);
99 ip_addr_set(&netif
->ip_addr
,ipaddr
);
102 void uip_netif_setnetmask(struct uip_netif
*netif
,struct uip_ip_addr
*netmask
)
104 ip_addr_set(&netif
->netmask
,netmask
);
107 void uip_netif_setgw(struct uip_netif
*netif
,struct uip_ip_addr
*gw
)
109 ip_addr_set(&netif
->gw
,gw
);
112 void uip_netif_setdefault(struct uip_netif
*netif
)
114 uip_netif_default
= netif
;
117 struct uip_netif
* uip_netif_find(const char *name
)
120 struct uip_netif
*netif
;
122 if(name
==NULL
) return NULL
;
126 for(netif
=uip_netif_list
;netif
!=NULL
;netif
=netif
->next
) {
127 if(netif
->num
==num
&&
128 netif
->name
[0]==name
[0] &&
129 netif
->name
[1]==name
[1]) return netif
;