@@ -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 *
@@ -739,6 +768,49 @@ int netdev_set_dns_server(struct netdev *netdev, uint8_t dns_num, const ip_addr_
739768 return netdev -> ops -> set_dns_server (netdev , dns_num , (ip_addr_t * )dns_server );
740769}
741770
771+ /**
772+ * This function will set network interface device IP, gateway and netmask address according to device name.
773+ *
774+ * @param netdev_name the network interface device name
775+ * @param ip_addr the new IP address
776+ * @param gw_addr the new gateway address
777+ * @param nm_addr the new netmask address
778+ */
779+ void netdev_set_if (char * netdev_name , char * ip_addr , char * gw_addr , char * nm_addr )
780+ {
781+ struct netdev * netdev = RT_NULL ;
782+ ip_addr_t addr ;
783+
784+ netdev = netdev_get_by_name (netdev_name );
785+ if (netdev == RT_NULL )
786+ {
787+ rt_kprintf ("bad network interface device name(%s).\n" , netdev_name );
788+ return ;
789+ }
790+
791+ #ifdef RT_LWIP_DHCP
792+ netdev_dhcp_close (netdev_name );
793+ #endif
794+
795+ /* set IP address */
796+ if ((ip_addr != RT_NULL ) && inet_aton (ip_addr , & addr ))
797+ {
798+ netdev_set_ipaddr (netdev , & addr );
799+ }
800+
801+ /* set gateway address */
802+ if ((gw_addr != RT_NULL ) && inet_aton (gw_addr , & addr ))
803+ {
804+ netdev_set_gw (netdev , & addr );
805+ }
806+
807+ /* set netmask address */
808+ if ((nm_addr != RT_NULL ) && inet_aton (nm_addr , & addr ))
809+ {
810+ netdev_set_netmask (netdev , & addr );
811+ }
812+ }
813+
742814/**
743815 * This function will set callback to be called when the network interface device status has been changed.
744816 *
@@ -1172,70 +1244,6 @@ static void netdev_list_if(void)
11721244 }
11731245}
11741246
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-
12391247int netdev_ifconfig (int argc , char * * argv )
12401248{
12411249 if (argc == 1 )
@@ -1429,7 +1437,7 @@ int netdev_ping(int argc, char **argv)
14291437 return 0 ;
14301438}
14311439MSH_CMD_EXPORT_ALIAS (netdev_ping , ping , ping network host );
1432- #endif /* NETDEV_USING_IFCONFIG */
1440+ #endif /* NETDEV_USING_PING */
14331441
14341442static void netdev_list_dns (void )
14351443{
0 commit comments