9090#include "lwip/nd6.h"
9191#endif
9292
93+ #include <rtthread.h>
94+
95+ #ifdef RT_USING_NETDEV
96+ #include "lwip/netdb.h"
97+ #include <netdev.h>
98+ #endif /* RT_USING_NETDEV */
99+
93100#if LWIP_NETIF_STATUS_CALLBACK
94101#define NETIF_STATUS_CALLBACK (n ) do{ if (n->status_callback) { (n->status_callback)(n); }}while(0)
95102#else
@@ -481,6 +488,12 @@ netif_do_set_ipaddr(struct netif *netif, const ip4_addr_t *ipaddr, ip_addr_t *ol
481488 netif_issue_reports (netif , NETIF_REPORT_TYPE_IPV4 );
482489
483490 NETIF_STATUS_CALLBACK (netif );
491+
492+ #ifdef RT_USING_NETDEV
493+ /* rt-thread sal network interface device set IP address operations */
494+ netdev_low_level_set_ipaddr (netdev_get_by_name (netif -> name ), & netif -> ip_addr );
495+ #endif /* RT_USING_NETDEV */
496+
484497 return 1 ; /* address changed */
485498 }
486499 return 0 ; /* address unchanged */
@@ -541,6 +554,12 @@ netif_do_set_netmask(struct netif *netif, const ip4_addr_t *netmask, ip_addr_t *
541554 ip4_addr2_16 (netif_ip4_netmask (netif )),
542555 ip4_addr3_16 (netif_ip4_netmask (netif )),
543556 ip4_addr4_16 (netif_ip4_netmask (netif ))));
557+
558+ #ifdef RT_USING_NETDEV
559+ /* rt-thread network interface device set netmask address */
560+ netdev_low_level_set_netmask (netdev_get_by_name (netif -> name ), & netif -> netmask );
561+ #endif /* RT_USING_NETDEV */
562+
544563 return 1 ; /* netmask changed */
545564 }
546565 return 0 ; /* netmask unchanged */
@@ -603,6 +622,12 @@ netif_do_set_gw(struct netif *netif, const ip4_addr_t *gw, ip_addr_t *old_gw)
603622 ip4_addr2_16 (netif_ip4_gw (netif )),
604623 ip4_addr3_16 (netif_ip4_gw (netif )),
605624 ip4_addr4_16 (netif_ip4_gw (netif ))));
625+
626+ #ifdef RT_USING_NETDEV
627+ /* rt_thread network interface device set gateway address */
628+ netdev_low_level_set_gw (netdev_get_by_name (netif -> name ), & netif -> gw );
629+ #endif /* RT_USING_NETDEV */
630+
606631 return 1 ; /* gateway changed */
607632 }
608633 return 0 ; /* gateway unchanged */
@@ -866,6 +891,11 @@ netif_set_up(struct netif *netif)
866891#if LWIP_IPV6
867892 nd6_restart_netif (netif );
868893#endif /* LWIP_IPV6 */
894+
895+ #ifdef RT_USING_NETDEV
896+ /* rt-thread network interface device set up status */
897+ netdev_low_level_set_status (netdev_get_by_name (netif -> name ), RT_TRUE );
898+ #endif /* RT_USING_NETDEV */
869899 }
870900}
871901
@@ -945,6 +975,11 @@ netif_set_down(struct netif *netif)
945975#endif /* LWIP_IPV6 */
946976
947977 NETIF_STATUS_CALLBACK (netif );
978+
979+ #ifdef RT_USING_NETDEV
980+ /* rt-thread network interface device set down status */
981+ netdev_low_level_set_status (netdev_get_by_name (netif -> name ), RT_FALSE );
982+ #endif /* RT_USING_NETDEV */
948983 }
949984}
950985
@@ -1015,6 +1050,11 @@ netif_set_link_up(struct netif *netif)
10151050 netif_invoke_ext_callback (netif , LWIP_NSC_LINK_CHANGED , & args );
10161051 }
10171052#endif
1053+
1054+ #ifdef RT_USING_NETDEV
1055+ /* rt-thread network interface device set link up status */
1056+ netdev_low_level_set_link_status (netdev_get_by_name (netif -> name ), RT_TRUE );
1057+ #endif /* RT_USING_NETDEV */
10181058 }
10191059}
10201060
@@ -1039,6 +1079,11 @@ netif_set_link_down(struct netif *netif)
10391079 netif_invoke_ext_callback (netif , LWIP_NSC_LINK_CHANGED , & args );
10401080 }
10411081#endif
1082+
1083+ #ifdef RT_USING_NETDEV
1084+ /* rt-thread network interface device set link down status */
1085+ netdev_low_level_set_link_status (netdev_get_by_name (netif -> name ), RT_FALSE );
1086+ #endif /* RT_USING_NETDEV */
10421087 }
10431088}
10441089
@@ -1541,6 +1586,11 @@ netif_create_ip6_linklocal_address(struct netif *netif, u8_t from_mac_48bit)
15411586 * zone field, so this should not create any compatibility problems. */
15421587 ip6_addr_assign_zone (ip_2_ip6 (& netif -> ip6_addr [0 ]), IP6_UNICAST , netif );
15431588
1589+ #ifdef RT_USING_NETDEV
1590+ /* rt-thread network interface device set ipv6 address */
1591+ ip_addr_copy (netdev_get_by_name (netif -> name )-> ip6_addr [0 ], netif -> ip6_addr [0 ]);
1592+ #endif /* RT_USING_NETDEV */
1593+
15441594 /* Set address state. */
15451595#if LWIP_IPV6_DUP_DETECT_ATTEMPTS
15461596 /* Will perform duplicate address detection (DAD). */
@@ -1584,6 +1634,10 @@ netif_add_ip6_address(struct netif *netif, const ip6_addr_t *ip6addr, s8_t *chos
15841634 for (i = ip6_addr_islinklocal (ip6addr ) ? 0 : 1 ; i < LWIP_IPV6_NUM_ADDRESSES ; i ++ ) {
15851635 if (ip6_addr_isinvalid (netif_ip6_addr_state (netif , i ))) {
15861636 ip_addr_copy_from_ip6 (netif -> ip6_addr [i ], * ip6addr );
1637+ #ifdef RT_USING_NETDEV
1638+ /* rt-thread network interface device set ipv6 address */
1639+ ip_addr_copy (netdev_get_by_name (netif -> name )-> ip6_addr [i ], netif -> ip6_addr [i ]);
1640+ #endif /* RT_USING_NETDEV */
15871641 ip6_addr_assign_zone (ip_2_ip6 (& netif -> ip6_addr [i ]), IP6_UNICAST , netif );
15881642 netif_ip6_addr_set_state (netif , i , IP6_ADDR_TENTATIVE );
15891643 if (chosen_idx != NULL ) {
0 commit comments