mirror of
https://github.com/apache/nuttx.git
synced 2026-06-01 07:45:16 +08:00
net/can: support can receive packets from all can devices
after the socket calls bind with ifindex is 0, it can receive packets from all can devices Signed-off-by: zhanghongyu <zhanghongyu@xiaomi.com>
This commit is contained in:
+2
-1
@@ -203,7 +203,8 @@ FAR struct can_conn_s *can_active(FAR struct net_driver_s *dev,
|
||||
{
|
||||
while ((conn = can_nextconn(conn)) != NULL)
|
||||
{
|
||||
if (conn->dev == NULL || conn->dev == dev)
|
||||
if ((conn->dev == NULL && _SS_ISBOUND(conn->sconn.s_flags)) ||
|
||||
conn->dev == dev)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -564,6 +564,11 @@ ssize_t can_recvmsg(FAR struct socket *psock, FAR struct msghdr *msg,
|
||||
/* Get the device driver that will service this transfer */
|
||||
|
||||
dev = conn->dev;
|
||||
if (dev == NULL && _SS_ISBOUND(conn->sconn.s_flags))
|
||||
{
|
||||
dev = netdev_default();
|
||||
}
|
||||
|
||||
if (dev == NULL)
|
||||
{
|
||||
ret = -ENODEV;
|
||||
|
||||
@@ -340,7 +340,7 @@ static int can_bind(FAR struct socket *psock,
|
||||
conn->dev = netdev_findbyname((const char *)&netdev_name);
|
||||
#endif
|
||||
|
||||
return conn->dev == NULL ? -ENODEV : OK;
|
||||
return conn->dev == NULL && canaddr->can_ifindex != 0 ? -ENODEV : OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
||||
Reference in New Issue
Block a user