[BLUETOOTH] l2cap: endianness annotations
no code changes, just documenting existing types Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6dc0c2082b
commit
8e036fc314
|
@ -34,7 +34,7 @@
|
||||||
/* L2CAP socket address */
|
/* L2CAP socket address */
|
||||||
struct sockaddr_l2 {
|
struct sockaddr_l2 {
|
||||||
sa_family_t l2_family;
|
sa_family_t l2_family;
|
||||||
unsigned short l2_psm;
|
__le16 l2_psm;
|
||||||
bdaddr_t l2_bdaddr;
|
bdaddr_t l2_bdaddr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -76,32 +76,32 @@ struct l2cap_conninfo {
|
||||||
|
|
||||||
/* L2CAP structures */
|
/* L2CAP structures */
|
||||||
struct l2cap_hdr {
|
struct l2cap_hdr {
|
||||||
__u16 len;
|
__le16 len;
|
||||||
__u16 cid;
|
__le16 cid;
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
#define L2CAP_HDR_SIZE 4
|
#define L2CAP_HDR_SIZE 4
|
||||||
|
|
||||||
struct l2cap_cmd_hdr {
|
struct l2cap_cmd_hdr {
|
||||||
__u8 code;
|
__u8 code;
|
||||||
__u8 ident;
|
__u8 ident;
|
||||||
__u16 len;
|
__le16 len;
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
#define L2CAP_CMD_HDR_SIZE 4
|
#define L2CAP_CMD_HDR_SIZE 4
|
||||||
|
|
||||||
struct l2cap_cmd_rej {
|
struct l2cap_cmd_rej {
|
||||||
__u16 reason;
|
__le16 reason;
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
struct l2cap_conn_req {
|
struct l2cap_conn_req {
|
||||||
__u16 psm;
|
__le16 psm;
|
||||||
__u16 scid;
|
__le16 scid;
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
struct l2cap_conn_rsp {
|
struct l2cap_conn_rsp {
|
||||||
__u16 dcid;
|
__le16 dcid;
|
||||||
__u16 scid;
|
__le16 scid;
|
||||||
__u16 result;
|
__le16 result;
|
||||||
__u16 status;
|
__le16 status;
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
/* connect result */
|
/* connect result */
|
||||||
|
@ -117,15 +117,15 @@ struct l2cap_conn_rsp {
|
||||||
#define L2CAP_CS_AUTHOR_PEND 0x0002
|
#define L2CAP_CS_AUTHOR_PEND 0x0002
|
||||||
|
|
||||||
struct l2cap_conf_req {
|
struct l2cap_conf_req {
|
||||||
__u16 dcid;
|
__le16 dcid;
|
||||||
__u16 flags;
|
__le16 flags;
|
||||||
__u8 data[0];
|
__u8 data[0];
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
struct l2cap_conf_rsp {
|
struct l2cap_conf_rsp {
|
||||||
__u16 scid;
|
__le16 scid;
|
||||||
__u16 flags;
|
__le16 flags;
|
||||||
__u16 result;
|
__le16 result;
|
||||||
__u8 data[0];
|
__u8 data[0];
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
|
@ -149,23 +149,23 @@ struct l2cap_conf_opt {
|
||||||
#define L2CAP_CONF_MAX_SIZE 22
|
#define L2CAP_CONF_MAX_SIZE 22
|
||||||
|
|
||||||
struct l2cap_disconn_req {
|
struct l2cap_disconn_req {
|
||||||
__u16 dcid;
|
__le16 dcid;
|
||||||
__u16 scid;
|
__le16 scid;
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
struct l2cap_disconn_rsp {
|
struct l2cap_disconn_rsp {
|
||||||
__u16 dcid;
|
__le16 dcid;
|
||||||
__u16 scid;
|
__le16 scid;
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
struct l2cap_info_req {
|
struct l2cap_info_req {
|
||||||
__u16 type;
|
__le16 type;
|
||||||
__u8 data[0];
|
__u8 data[0];
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
struct l2cap_info_rsp {
|
struct l2cap_info_rsp {
|
||||||
__u16 type;
|
__le16 type;
|
||||||
__u16 result;
|
__le16 result;
|
||||||
__u8 data[0];
|
__u8 data[0];
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ struct l2cap_conn {
|
||||||
|
|
||||||
struct l2cap_pinfo {
|
struct l2cap_pinfo {
|
||||||
struct bt_sock bt;
|
struct bt_sock bt;
|
||||||
__u16 psm;
|
__le16 psm;
|
||||||
__u16 dcid;
|
__u16 dcid;
|
||||||
__u16 scid;
|
__u16 scid;
|
||||||
|
|
||||||
|
@ -225,7 +225,7 @@ struct l2cap_pinfo {
|
||||||
|
|
||||||
__u8 ident;
|
__u8 ident;
|
||||||
|
|
||||||
__u16 sport;
|
__le16 sport;
|
||||||
|
|
||||||
struct l2cap_conn *conn;
|
struct l2cap_conn *conn;
|
||||||
struct sock *next_c;
|
struct sock *next_c;
|
||||||
|
|
|
@ -353,7 +353,7 @@ static inline int l2cap_send_cmd(struct l2cap_conn *conn, u8 ident, u8 code, u16
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---- Socket interface ---- */
|
/* ---- Socket interface ---- */
|
||||||
static struct sock *__l2cap_get_sock_by_addr(u16 psm, bdaddr_t *src)
|
static struct sock *__l2cap_get_sock_by_addr(__le16 psm, bdaddr_t *src)
|
||||||
{
|
{
|
||||||
struct sock *sk;
|
struct sock *sk;
|
||||||
struct hlist_node *node;
|
struct hlist_node *node;
|
||||||
|
@ -368,7 +368,7 @@ found:
|
||||||
/* Find socket with psm and source bdaddr.
|
/* Find socket with psm and source bdaddr.
|
||||||
* Returns closest match.
|
* Returns closest match.
|
||||||
*/
|
*/
|
||||||
static struct sock *__l2cap_get_sock_by_psm(int state, u16 psm, bdaddr_t *src)
|
static struct sock *__l2cap_get_sock_by_psm(int state, __le16 psm, bdaddr_t *src)
|
||||||
{
|
{
|
||||||
struct sock *sk = NULL, *sk1 = NULL;
|
struct sock *sk = NULL, *sk1 = NULL;
|
||||||
struct hlist_node *node;
|
struct hlist_node *node;
|
||||||
|
@ -392,7 +392,7 @@ static struct sock *__l2cap_get_sock_by_psm(int state, u16 psm, bdaddr_t *src)
|
||||||
|
|
||||||
/* Find socket with given address (psm, src).
|
/* Find socket with given address (psm, src).
|
||||||
* Returns locked socket */
|
* Returns locked socket */
|
||||||
static inline struct sock *l2cap_get_sock_by_psm(int state, u16 psm, bdaddr_t *src)
|
static inline struct sock *l2cap_get_sock_by_psm(int state, __le16 psm, bdaddr_t *src)
|
||||||
{
|
{
|
||||||
struct sock *s;
|
struct sock *s;
|
||||||
read_lock(&l2cap_sk_list.lock);
|
read_lock(&l2cap_sk_list.lock);
|
||||||
|
@ -586,7 +586,7 @@ static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (la->l2_psm > 0 && btohs(la->l2_psm) < 0x1001 &&
|
if (la->l2_psm && btohs(la->l2_psm) < 0x1001 &&
|
||||||
!capable(CAP_NET_BIND_SERVICE)) {
|
!capable(CAP_NET_BIND_SERVICE)) {
|
||||||
err = -EACCES;
|
err = -EACCES;
|
||||||
goto done;
|
goto done;
|
||||||
|
@ -873,7 +873,7 @@ static inline int l2cap_do_send(struct sock *sk, struct msghdr *msg, int len)
|
||||||
lh->len = cpu_to_le16(len + (hlen - L2CAP_HDR_SIZE));
|
lh->len = cpu_to_le16(len + (hlen - L2CAP_HDR_SIZE));
|
||||||
|
|
||||||
if (sk->sk_type == SOCK_DGRAM)
|
if (sk->sk_type == SOCK_DGRAM)
|
||||||
put_unaligned(l2cap_pi(sk)->psm, (u16 *) skb_put(skb, 2));
|
put_unaligned(l2cap_pi(sk)->psm, (__le16 *) skb_put(skb, 2));
|
||||||
|
|
||||||
if (memcpy_fromiovec(skb_put(skb, count), msg->msg_iov, count)) {
|
if (memcpy_fromiovec(skb_put(skb, count), msg->msg_iov, count)) {
|
||||||
err = -EFAULT;
|
err = -EFAULT;
|
||||||
|
@ -1256,11 +1256,11 @@ static inline int l2cap_get_conf_opt(void **ptr, int *type, int *olen, unsigned
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
*val = __le16_to_cpu(*((u16 *)opt->val));
|
*val = __le16_to_cpu(*((__le16 *)opt->val));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
*val = __le32_to_cpu(*((u32 *)opt->val));
|
*val = __le32_to_cpu(*((__le32 *)opt->val));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -1287,11 +1287,11 @@ static void l2cap_add_conf_opt(void **ptr, u8 type, u8 len, unsigned long val)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
*((u16 *) opt->val) = cpu_to_le16(val);
|
*((__le16 *) opt->val) = cpu_to_le16(val);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
*((u32 *) opt->val) = cpu_to_le32(val);
|
*((__le32 *) opt->val) = cpu_to_le32(val);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -1406,7 +1406,7 @@ static inline int l2cap_connect_req(struct l2cap_conn *conn, struct l2cap_cmd_hd
|
||||||
int result = 0, status = 0;
|
int result = 0, status = 0;
|
||||||
|
|
||||||
u16 dcid = 0, scid = __le16_to_cpu(req->scid);
|
u16 dcid = 0, scid = __le16_to_cpu(req->scid);
|
||||||
u16 psm = req->psm;
|
__le16 psm = req->psm;
|
||||||
|
|
||||||
BT_DBG("psm 0x%2.2x scid 0x%4.4x", psm, scid);
|
BT_DBG("psm 0x%2.2x scid 0x%4.4x", psm, scid);
|
||||||
|
|
||||||
|
@ -1863,7 +1863,7 @@ done:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int l2cap_conless_channel(struct l2cap_conn *conn, u16 psm, struct sk_buff *skb)
|
static inline int l2cap_conless_channel(struct l2cap_conn *conn, __le16 psm, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
struct sock *sk;
|
struct sock *sk;
|
||||||
|
|
||||||
|
@ -1893,7 +1893,8 @@ done:
|
||||||
static void l2cap_recv_frame(struct l2cap_conn *conn, struct sk_buff *skb)
|
static void l2cap_recv_frame(struct l2cap_conn *conn, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
struct l2cap_hdr *lh = (void *) skb->data;
|
struct l2cap_hdr *lh = (void *) skb->data;
|
||||||
u16 cid, psm, len;
|
u16 cid, len;
|
||||||
|
__le16 psm;
|
||||||
|
|
||||||
skb_pull(skb, L2CAP_HDR_SIZE);
|
skb_pull(skb, L2CAP_HDR_SIZE);
|
||||||
cid = __le16_to_cpu(lh->cid);
|
cid = __le16_to_cpu(lh->cid);
|
||||||
|
@ -1907,7 +1908,7 @@ static void l2cap_recv_frame(struct l2cap_conn *conn, struct sk_buff *skb)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0002:
|
case 0x0002:
|
||||||
psm = get_unaligned((u16 *) skb->data);
|
psm = get_unaligned((__le16 *) skb->data);
|
||||||
skb_pull(skb, 2);
|
skb_pull(skb, 2);
|
||||||
l2cap_conless_channel(conn, psm, skb);
|
l2cap_conless_channel(conn, psm, skb);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue