@@ -580,6 +580,7 @@ int netdev_set_down(struct netdev *netdev)
580580 return err ;
581581}
582582
583+ #ifdef RT_LWIP_DHCP
583584/**
584585 * This function will control network interface device DHCP capability enable or disable.
585586 *
@@ -609,6 +610,34 @@ int netdev_dhcp_enabled(struct netdev *netdev, rt_bool_t is_enabled)
609610 return netdev -> ops -> set_dhcp (netdev , is_enabled );
610611}
611612
613+ int netdev_dhcp_open (char * netdev_name )
614+ {
615+ struct netdev * netdev = RT_NULL ;
616+ netdev = netdev_get_by_name (netdev_name );
617+ if (netdev == RT_NULL )
618+ {
619+ rt_kprintf ("bad network interface device name(%s).\n" , netdev_name );
620+ return -1 ;
621+ }
622+ netdev_dhcp_enabled (netdev , RT_TRUE );
623+ return 0 ;
624+ }
625+
626+ int netdev_dhcp_close (char * netdev_name )
627+ {
628+ struct netdev * netdev = RT_NULL ;
629+
630+ netdev = netdev_get_by_name (netdev_name );
631+ if (netdev == RT_NULL )
632+ {
633+ rt_kprintf ("bad network interface device name(%s).\n" , netdev_name );
634+ return -1 ;
635+ }
636+ netdev_dhcp_enabled (netdev , RT_FALSE );
637+ return 0 ;
638+ }
639+ #endif /* RT_LWIP_DHCP */
640+
612641/**
613642 * This function will set network interface device IP address.
614643 *
@@ -708,6 +737,32 @@ int netdev_set_gw(struct netdev *netdev, const ip_addr_t *gw)
708737 return netdev -> ops -> set_addr_info (netdev , RT_NULL , RT_NULL , (ip_addr_t * )gw );
709738}
710739
740+ /**
741+ * This function will try to get network device and set DNS server address.
742+ *
743+ * @param netdev_name the network interface device name
744+ * @param dns_num the number of the DNS server
745+ * @param dns_server the new DNS server address
746+ */
747+ void netdev_set_dns (char * netdev_name , uint8_t dns_num , char * dns_server )
748+ {
749+ struct netdev * netdev = RT_NULL ;
750+ ip_addr_t dns_addr ;
751+
752+ netdev = netdev_get_by_name (netdev_name );
753+ if (netdev == RT_NULL )
754+ {
755+ rt_kprintf ("bad network interface device name(%s).\n" , netdev_name );
756+ return ;
757+ }
758+
759+ inet_aton (dns_server , & dns_addr );
760+ if (netdev_set_dns_server (netdev , dns_num , & dns_addr ) == RT_EOK )
761+ {
762+ rt_kprintf ("set network interface device(%s) dns server #%d: %s\n" , netdev_name , dns_num , dns_server );
763+ }
764+ }
765+
711766/**
712767 * This function will set network interface device DNS server address.
713768 *
@@ -739,6 +794,49 @@ int netdev_set_dns_server(struct netdev *netdev, uint8_t dns_num, const ip_addr_
739794 return netdev -> ops -> set_dns_server (netdev , dns_num , (ip_addr_t * )dns_server );
740795}
741796
797+ /**
798+ * This function will set network interface device IP, gateway and netmask address according to device name.
799+ *
800+ * @param netdev_name the network interface device name
801+ * @param ip_addr the new IP address
802+ * @param gw_addr the new gateway address
803+ * @param nm_addr the new netmask address
804+ */
805+ void netdev_set_if (char * netdev_name , char * ip_addr , char * gw_addr , char * nm_addr )
806+ {
807+ struct netdev * netdev = RT_NULL ;
808+ ip_addr_t addr ;
809+
810+ netdev = netdev_get_by_name (netdev_name );
811+ if (netdev == RT_NULL )
812+ {
813+ rt_kprintf ("bad network interface device name(%s).\n" , netdev_name );
814+ return ;
815+ }
816+
817+ #ifdef RT_LWIP_DHCP
818+ netdev_dhcp_close (netdev_name );
819+ #endif
820+
821+ /* set IP address */
822+ if ((ip_addr != RT_NULL ) && inet_aton (ip_addr , & addr ))
823+ {
824+ netdev_set_ipaddr (netdev , & addr );
825+ }
826+
827+ /* set gateway address */
828+ if ((gw_addr != RT_NULL ) && inet_aton (gw_addr , & addr ))
829+ {
830+ netdev_set_gw (netdev , & addr );
831+ }
832+
833+ /* set netmask address */
834+ if ((nm_addr != RT_NULL ) && inet_aton (nm_addr , & addr ))
835+ {
836+ netdev_set_netmask (netdev , & addr );
837+ }
838+ }
839+
742840/**
743841 * This function will set callback to be called when the network interface device status has been changed.
744842 *
@@ -1172,70 +1270,6 @@ static void netdev_list_if(void)
11721270 }
11731271}
11741272
1175- #ifdef RT_LWIP_DHCP
1176- int netdev_dhcp_open (char * netdev_name )
1177- {
1178- struct netdev * netdev = RT_NULL ;
1179- netdev = netdev_get_by_name (netdev_name );
1180- if (netdev == RT_NULL )
1181- {
1182- rt_kprintf ("bad network interface device name(%s).\n" , netdev_name );
1183- return -1 ;
1184- }
1185- netdev_dhcp_enabled (netdev ,RT_TRUE );
1186- return 0 ;
1187- }
1188-
1189- int netdev_dhcp_close (char * netdev_name )
1190- {
1191- struct netdev * netdev = RT_NULL ;
1192-
1193- netdev = netdev_get_by_name (netdev_name );
1194- if (netdev == RT_NULL )
1195- {
1196- rt_kprintf ("bad network interface device name(%s).\n" , netdev_name );
1197- return -1 ;
1198- }
1199- netdev_dhcp_enabled (netdev ,RT_FALSE );
1200- return 0 ;
1201- }
1202- #endif
1203-
1204- static void netdev_set_if (char * netdev_name , char * ip_addr , char * gw_addr , char * nm_addr )
1205- {
1206- struct netdev * netdev = RT_NULL ;
1207- ip_addr_t addr ;
1208-
1209- netdev = netdev_get_by_name (netdev_name );
1210- if (netdev == RT_NULL )
1211- {
1212- rt_kprintf ("bad network interface device name(%s).\n" , netdev_name );
1213- return ;
1214- }
1215-
1216- #ifdef RT_LWIP_DHCP
1217- netdev_dhcp_close (netdev_name );
1218- #endif
1219-
1220- /* set IP address */
1221- if ((ip_addr != RT_NULL ) && inet_aton (ip_addr , & addr ))
1222- {
1223- netdev_set_ipaddr (netdev , & addr );
1224- }
1225-
1226- /* set gateway address */
1227- if ((gw_addr != RT_NULL ) && inet_aton (gw_addr , & addr ))
1228- {
1229- netdev_set_gw (netdev , & addr );
1230- }
1231-
1232- /* set netmask address */
1233- if ((nm_addr != RT_NULL ) && inet_aton (nm_addr , & addr ))
1234- {
1235- netdev_set_netmask (netdev , & addr );
1236- }
1237- }
1238-
12391273int netdev_ifconfig (int argc , char * * argv )
12401274{
12411275 if (argc == 1 )
@@ -1429,7 +1463,7 @@ int netdev_ping(int argc, char **argv)
14291463 return 0 ;
14301464}
14311465MSH_CMD_EXPORT_ALIAS (netdev_ping , ping , ping network host );
1432- #endif /* NETDEV_USING_IFCONFIG */
1466+ #endif /* NETDEV_USING_PING */
14331467
14341468static void netdev_list_dns (void )
14351469{
@@ -1457,25 +1491,6 @@ static void netdev_list_dns(void)
14571491 }
14581492}
14591493
1460- static void netdev_set_dns (char * netdev_name , uint8_t dns_num , char * dns_server )
1461- {
1462- struct netdev * netdev = RT_NULL ;
1463- ip_addr_t dns_addr ;
1464-
1465- netdev = netdev_get_by_name (netdev_name );
1466- if (netdev == RT_NULL )
1467- {
1468- rt_kprintf ("bad network interface device name(%s).\n" , netdev_name );
1469- return ;
1470- }
1471-
1472- inet_aton (dns_server , & dns_addr );
1473- if (netdev_set_dns_server (netdev , dns_num , & dns_addr ) == RT_EOK )
1474- {
1475- rt_kprintf ("set network interface device(%s) dns server #%d: %s\n" , netdev_name , dns_num , dns_server );
1476- }
1477- }
1478-
14791494int netdev_dns (int argc , char * * argv )
14801495{
14811496 if (argc == 1 )
@@ -1499,6 +1514,7 @@ int netdev_dns(int argc, char **argv)
14991514 return 0 ;
15001515}
15011516MSH_CMD_EXPORT_ALIAS (netdev_dns , dns , list and set the information of dns );
1517+
15021518#ifdef NETDEV_USING_NETSTAT
15031519static void netdev_cmd_netstat (void )
15041520{
0 commit comments