/* SPDX-License-Identifier: GPL-2.0-only */
/*
BNEP protocol definition for Linux Bluetooth stack (BlueZ).
Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
*/
#ifndef _BNEP_H
#define _BNEP_H
#include <linux/types.h>
#include <linux/crc32.h>
#include <net/bluetooth/bluetooth.h>
/* Limits */
#define BNEP_MAX_PROTO_FILTERS 5
#define BNEP_MAX_MULTICAST_FILTERS 20
/* UUIDs */
#define BNEP_BASE_UUID 0 x0000000000001000800000805F9B34FB
#define BNEP_UUID16 0 x02
#define BNEP_UUID32 0 x04
#define BNEP_UUID128 0 x16
#define BNEP_SVC_PANU 0 x1115
#define BNEP_SVC_NAP 0 x1116
#define BNEP_SVC_GN 0 x1117
/* Packet types */
#define BNEP_GENERAL 0 x00
#define BNEP_CONTROL 0 x01
#define BNEP_COMPRESSED 0 x02
#define BNEP_COMPRESSED_SRC_ONLY 0 x03
#define BNEP_COMPRESSED_DST_ONLY 0 x04
/* Control types */
#define BNEP_CMD_NOT_UNDERSTOOD 0 x00
#define BNEP_SETUP_CONN_REQ 0 x01
#define BNEP_SETUP_CONN_RSP 0 x02
#define BNEP_FILTER_NET_TYPE_SET 0 x03
#define BNEP_FILTER_NET_TYPE_RSP 0 x04
#define BNEP_FILTER_MULTI_ADDR_SET 0 x05
#define BNEP_FILTER_MULTI_ADDR_RSP 0 x06
/* Extension types */
#define BNEP_EXT_CONTROL 0 x00
/* Response messages */
#define BNEP_SUCCESS 0 x00
#define BNEP_CONN_INVALID_DST 0 x01
#define BNEP_CONN_INVALID_SRC 0 x02
#define BNEP_CONN_INVALID_SVC 0 x03
#define BNEP_CONN_NOT_ALLOWED 0 x04
#define BNEP_FILTER_UNSUPPORTED_REQ 0 x01
#define BNEP_FILTER_INVALID_RANGE 0 x02
#define BNEP_FILTER_INVALID_MCADDR 0 x02
#define BNEP_FILTER_LIMIT_REACHED 0 x03
#define BNEP_FILTER_DENIED_SECURITY 0 x04
/* L2CAP settings */
#define BNEP_MTU 1691
#define BNEP_PSM 0 x0f
#define BNEP_FLUSH_TO 0 xffff
#define BNEP_CONNECT_TO 15
#define BNEP_FILTER_TO 15
/* Headers */
#define BNEP_TYPE_MASK 0 x7f
#define BNEP_EXT_HEADER 0 x80
struct bnep_setup_conn_req {
__u8 type;
__u8 ctrl;
__u8 uuid_size;
__u8 service[];
} __packed;
struct bnep_set_filter_req {
__u8 type;
__u8 ctrl;
__be16 len;
__u8 list[];
} __packed;
struct bnep_control_rsp {
__u8 type;
__u8 ctrl;
__be16 resp;
} __packed;
struct bnep_ext_hdr {
__u8 type;
__u8 len;
__u8 data[];
} __packed;
/* BNEP ioctl defines */
#define BNEPCONNADD _IOW('B' , 200 , int )
#define BNEPCONNDEL _IOW('B' , 201 , int )
#define BNEPGETCONNLIST _IOR('B' , 210 , int )
#define BNEPGETCONNINFO _IOR('B' , 211 , int )
#define BNEPGETSUPPFEAT _IOR('B' , 212 , int )
#define BNEP_SETUP_RESPONSE 0
#define BNEP_SETUP_RSP_SENT 10
struct bnep_connadd_req {
int sock; /* Connected socket */
__u32 flags;
__u16 role;
char device[16 ]; /* Name of the Ethernet device */
};
struct bnep_conndel_req {
__u32 flags;
__u8 dst[ETH_ALEN];
};
struct bnep_conninfo {
__u32 flags;
__u16 role;
__u16 state;
__u8 dst[ETH_ALEN];
char device[16 ];
};
struct bnep_connlist_req {
__u32 cnum;
struct bnep_conninfo __user *ci;
};
struct bnep_proto_filter {
__u16 start;
__u16 end;
};
int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock);
int bnep_del_connection(struct bnep_conndel_req *req);
int bnep_get_connlist(struct bnep_connlist_req *req);
int bnep_get_conninfo(struct bnep_conninfo *ci);
/* BNEP sessions */
struct bnep_session {
struct list_head list;
unsigned int role;
unsigned long state;
unsigned long flags;
atomic_t terminate;
struct task_struct *task;
struct ethhdr eh;
struct msghdr msg;
struct bnep_proto_filter proto_filter[BNEP_MAX_PROTO_FILTERS];
unsigned long long mc_filter;
struct socket *sock;
struct net_device *dev;
};
void bnep_net_setup(struct net_device *dev);
int bnep_sock_init(void );
void bnep_sock_cleanup(void );
static inline int bnep_mc_hash(__u8 *addr)
{
return crc32_be(~0 , addr, ETH_ALEN) >> 26 ;
}
#endif
Messung V0.5 in Prozent C=97 H=94 G=95
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland