caif: make zero a legal caif connetion id.
Connection ID configured through RTNL must allow zero as connection id. If connection-id is not given when creating the interface, configure a loopback interface using ifindex as connection-id. Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
374458b3fe
commit
e3abcc2a85
|
@ -28,6 +28,7 @@
|
|||
/* 5 sec. connect timeout */
|
||||
#define CONNECT_TIMEOUT (5 * HZ)
|
||||
#define CAIF_NET_DEFAULT_QUEUE_LEN 500
|
||||
#define UNDEF_CONNID 0xffffffff
|
||||
|
||||
/*This list is protected by the rtnl lock. */
|
||||
static LIST_HEAD(chnl_net_list);
|
||||
|
@ -408,7 +409,7 @@ static void ipcaif_net_setup(struct net_device *dev)
|
|||
priv->conn_req.link_selector = CAIF_LINK_HIGH_BANDW;
|
||||
priv->conn_req.priority = CAIF_PRIO_LOW;
|
||||
/* Insert illegal value */
|
||||
priv->conn_req.sockaddr.u.dgm.connection_id = 0;
|
||||
priv->conn_req.sockaddr.u.dgm.connection_id = UNDEF_CONNID;
|
||||
priv->flowenabled = false;
|
||||
|
||||
init_waitqueue_head(&priv->netmgmt_wq);
|
||||
|
@ -471,9 +472,11 @@ static int ipcaif_newlink(struct net *src_net, struct net_device *dev,
|
|||
else
|
||||
list_add(&caifdev->list_field, &chnl_net_list);
|
||||
|
||||
/* Take ifindex as connection-id if null */
|
||||
if (caifdev->conn_req.sockaddr.u.dgm.connection_id == 0)
|
||||
/* Use ifindex as connection id, and use loopback channel default. */
|
||||
if (caifdev->conn_req.sockaddr.u.dgm.connection_id == UNDEF_CONNID) {
|
||||
caifdev->conn_req.sockaddr.u.dgm.connection_id = dev->ifindex;
|
||||
caifdev->conn_req.protocol = CAIFPROTO_DATAGRAM_LOOP;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue