Skip to content

Commit c1f63f9

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 c1f63f9

File tree

2 files changed

+103
-85
lines changed

2 files changed

+103
-85
lines changed

Diff for: 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);

Diff for: components/net/netdev/src/netdev.c

+100-84
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
*
@@ -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-
12391273
int 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
}
14311465
MSH_CMD_EXPORT_ALIAS(netdev_ping, ping, ping network host);
1432-
#endif /* NETDEV_USING_IFCONFIG */
1466+
#endif /* NETDEV_USING_PING */
14331467

14341468
static 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-
14791494
int 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
}
15011516
MSH_CMD_EXPORT_ALIAS(netdev_dns, dns, list and set the information of dns);
1517+
15021518
#ifdef NETDEV_USING_NETSTAT
15031519
static void netdev_cmd_netstat(void)
15041520
{

0 commit comments

Comments
 (0)