Skip to content

Commit 8e4fef1

Browse files
committed
[refact](netdev): Expose netdev_set_dns and netdev_set_if
[Descriptions]: 1. Make these functions public to avoid code duplication and allow direct usage by other components. 2. Fix ifdef's error note. [Root Cause]:NA [Side Effects]:NA
1 parent 45eea78 commit 8e4fef1

File tree

2 files changed

+76
-66
lines changed

2 files changed

+76
-66
lines changed

components/net/netdev/include/netdev.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,9 @@ int netdev_dhcp_enabled(struct netdev *netdev, rt_bool_t is_enabled);
181181
int netdev_set_ipaddr(struct netdev *netdev, const ip_addr_t *ipaddr);
182182
int netdev_set_netmask(struct netdev *netdev, const ip_addr_t *netmask);
183183
int netdev_set_gw(struct netdev *netdev, const ip_addr_t *gw);
184-
int netdev_set_dns_server(struct netdev *netdev, uint8_t dns_num, const ip_addr_t *dns_server);
184+
void netdev_set_dns(char *netdev_name, uint8_t dns_num, char *dns_server);
185+
int netdev_set_dns_server(struct netdev *netdev, uint8_t dns_num, const ip_addr_t *dns_server);
186+
void netdev_set_if(char *netdev_name, char *ip_addr, char *gw_addr, char *nm_addr);
185187

186188
/* Set network interface device callback, it can be called when the status or address changed */
187189
void netdev_set_register_callback(netdev_callback_fn status_callback);

components/net/netdev/src/netdev.c

+73-65
Original file line numberDiff line numberDiff line change
@@ -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-
12391247
int 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
}
14311439
MSH_CMD_EXPORT_ALIAS(netdev_ping, ping, ping network host);
1432-
#endif /* NETDEV_USING_IFCONFIG */
1440+
#endif /* NETDEV_USING_PING */
14331441

14341442
static void netdev_list_dns(void)
14351443
{

0 commit comments

Comments
 (0)