summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2019-05-01 20:25:31 +0800
committerGitHub <[email protected]>2019-05-01 20:25:31 +0800
commitc2244a5c57d5fd0dbc4697ed43f1a14bbe791398 (patch)
treea8a8f035d33ecb6a679a53234d4ec6c0b3401b8e /components
parent4691f335dafe5cbb8f42905b136d020bba471f3f (diff)
parentfd05ad76d69e02ee2c36e8eb73781a5654073be4 (diff)
Merge pull request #2628 from HubertXie/master
实现多网卡自动切换功能
Diffstat (limited to 'components')
-rw-r--r--components/net/netdev/src/netdev.c2
-rw-r--r--components/net/sal_socket/src/sal_socket.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/components/net/netdev/src/netdev.c b/components/net/netdev/src/netdev.c
index e4a88ca022..bfefc2d1de 100644
--- a/components/net/netdev/src/netdev.c
+++ b/components/net/netdev/src/netdev.c
@@ -269,7 +269,7 @@ struct netdev *netdev_get_by_family(int family)
{
netdev = rt_slist_entry(node, struct netdev, list);
pf = (struct sal_proto_family *) netdev->sal_user_data;
- if (pf && pf->skt_ops && pf->family == family && netdev_is_up(netdev))
+ if (pf && pf->skt_ops && pf->family == family && netdev_is_up(netdev) && netdev_is_link_up(netdev))
{
rt_hw_interrupt_enable(level);
return netdev;
diff --git a/components/net/sal_socket/src/sal_socket.c b/components/net/sal_socket/src/sal_socket.c
index 68e1375849..008a29e252 100644
--- a/components/net/sal_socket/src/sal_socket.c
+++ b/components/net/sal_socket/src/sal_socket.c
@@ -174,7 +174,7 @@ static void check_netdev_internet_up_work(struct rt_work *work, void *work_data)
goto __exit;
}
- skt_ops = pf->skt_ops;
+ skt_ops = pf->skt_ops;
if((sockfd = skt_ops->socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{
result = -RT_ERROR;
@@ -394,7 +394,7 @@ static int socket_init(int family, int type, int protocol, struct sal_socket **r
return -3;
}
- if (netdev_is_up(netdv_def))
+ if (netdev_is_up(netdv_def) && netdev_is_link_up(netdv_def))
{
/* check default network interface device protocol family */
pf = (struct sal_proto_family *) netdv_def->sal_user_data;