summaryrefslogtreecommitdiff
path: root/components/net/netdev/src/netdev.c
diff options
context:
space:
mode:
authorchenyong <[email protected]>2019-06-24 13:56:42 +0800
committerchenyong <[email protected]>2019-06-24 17:46:18 +0800
commit7d2ffe63e91a46380d04d4245fec56d6ba0d25f8 (patch)
tree8485d1c158c9e542ab383436056bc68a3cb7dcc2 /components/net/netdev/src/netdev.c
parentc574c49b2fe81ad2ee6f4ba7f3f61c978bea0497 (diff)
[net][sal][netdev] Add IPv6 option configuration and feature support in SAL and netdev
Signed-off-by: chenyong <[email protected]>
Diffstat (limited to 'components/net/netdev/src/netdev.c')
-rw-r--r--components/net/netdev/src/netdev.c36
1 files changed, 35 insertions, 1 deletions
diff --git a/components/net/netdev/src/netdev.c b/components/net/netdev/src/netdev.c
index 5f49a46f17..eb2835364a 100644
--- a/components/net/netdev/src/netdev.c
+++ b/components/net/netdev/src/netdev.c
@@ -58,9 +58,21 @@ int netdev_register(struct netdev *netdev, const char *name, void *user_data)
ip_addr_set_zero(&(netdev->ip_addr));
ip_addr_set_zero(&(netdev->netmask));
ip_addr_set_zero(&(netdev->gw));
+
+ IP_SET_TYPE_VAL(netdev->ip_addr, IPADDR_TYPE_V4);
+ IP_SET_TYPE_VAL(netdev->netmask, IPADDR_TYPE_V4);
+ IP_SET_TYPE_VAL(netdev->gw, IPADDR_TYPE_V4);
+#if NETDEV_IPV6
+ for (index = 0; index < NETDEV_IPV6_NUM_ADDRESSES; index++)
+ {
+ ip_addr_set_zero(&(netdev->ip6_addr[index]));
+ IP_SET_TYPE_VAL(netdev->ip_addr, IPADDR_TYPE_V6);
+ }
+#endif /* NETDEV_IPV6 */
for (index = 0; index < NETDEV_DNS_SERVERS_NUM; index++)
{
ip_addr_set_zero(&(netdev->dns_servers[index]));
+ IP_SET_TYPE_VAL(netdev->ip_addr, IPADDR_TYPE_V4);
}
netdev->status_callback = RT_NULL;
netdev->addr_callback = RT_NULL;
@@ -839,7 +851,7 @@ static void netdev_list_if(void)
rt_kprintf("network interface device: %s%s\n",
netdev->name,
- (netdev == netdev_default)?" (Default)":"");
+ (netdev == netdev_default) ? " (Default)" : "");
rt_kprintf("MTU: %d\n", netdev->mtu);
/* 6 - MAC address, 8 - IEMI */
@@ -881,6 +893,28 @@ static void netdev_list_if(void)
rt_kprintf("gw address: %s\n", inet_ntoa(netdev->gw));
rt_kprintf("net mask : %s\n", inet_ntoa(netdev->netmask));
+#if NETDEV_IPV6
+ {
+ ip_addr_t *addr;
+ int i;
+
+ addr = &netdev->ip6_addr[0];
+
+ if (!ip_addr_isany(addr))
+ {
+ rt_kprintf("ipv6 link-local: %s %s\n", inet_ntoa(*addr),
+ !ip_addr_isany(addr) ? "VALID" : "INVALID");
+
+ for (i = 1; i < NETDEV_IPV6_NUM_ADDRESSES; i++)
+ {
+ addr = &netdev->ip6_addr[i];
+ rt_kprintf("ipv6[%d] address: %s %s\n", i, inet_ntoa(*addr),
+ !ip_addr_isany(addr) ? "VALID" : "INVALID");
+ }
+ }
+ }
+#endif /* NETDEV_IPV6 */
+
for (index = 0; index < NETDEV_DNS_SERVERS_NUM; index++)
{
rt_kprintf("dns server #%d: %s\n", index, inet_ntoa(netdev->dns_servers[index]));