207 lines
4.5 KiB
C
207 lines
4.5 KiB
C
#ifndef _LINUX_DECT_H
|
|
#define _LINUX_DECT_H
|
|
|
|
#define DECTNAMSIZ 16
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/socket.h>
|
|
|
|
/* these have to be macros in order to be usable for module aliases */
|
|
#define DECT_RAW 0 /* raw frames */
|
|
#define DECT_B_SAP 1 /* DLC Broadcast Service */
|
|
#define DECT_S_SAP 2 /* DLC Data Link Service */
|
|
#define DECT_LU1_SAP 3 /* LU1 sockets */
|
|
#define DECT_PROTO_NUM 4
|
|
|
|
/**
|
|
* struct sockaddr_dect
|
|
*
|
|
* @dect_family: address family (AF_DECT)
|
|
* @dect_index: cluster index
|
|
*/
|
|
struct sockaddr_dect {
|
|
sa_family_t dect_family;
|
|
int dect_index;
|
|
};
|
|
|
|
/* raw sockets */
|
|
|
|
#define DECT_RAW_AUXDATA 0
|
|
|
|
/**
|
|
* struct dect_raw_auxdata - raw socket auxiliary frame data
|
|
*
|
|
* @mfn: multi-frame number
|
|
* @frame: frame number
|
|
* @slot: slot numer
|
|
* @rssi: receive signal strength indicator
|
|
*/
|
|
struct dect_raw_auxdata {
|
|
__u32 mfn;
|
|
__u8 frame;
|
|
__u8 slot;
|
|
__u8 rssi;
|
|
};
|
|
|
|
#define DECT_BSAP_AUXDATA 0
|
|
|
|
/**
|
|
* struct dect_bsap_auxdata
|
|
*
|
|
* @long_page: message contains a long page
|
|
*/
|
|
struct dect_bsap_auxdata {
|
|
__u8 long_page;
|
|
};
|
|
|
|
/**
|
|
* enum dect_sapis - S SAP Identifier
|
|
*
|
|
* @DECT_SAPI_CO_SIGNALLING: connection oriented signalling
|
|
* @DECT_SAPI_CL_SIGNALLING: connectionless signalling
|
|
* @DECT_SAPI_ANY: wildcard
|
|
*/
|
|
enum dect_sapis {
|
|
DECT_SAPI_CO_SIGNALLING = 0,
|
|
DECT_SAPI_CL_SIGNALLING = 3,
|
|
DECT_SAPI_ANY = 7,
|
|
};
|
|
|
|
/**
|
|
* enum dect_llns - Logical Link Numbers
|
|
*
|
|
* @DECT_LLN_CLASS_U: Class U operation
|
|
* @DECT_LLN_CLASS_A: Class A operation
|
|
* @DECT_LLN_ASSIGNABLE*: Assignable LLN (class B operation)
|
|
* @DECT_LLN_UNASSIGNED: LLN unassigned (class B operation
|
|
* @DECT_LLN_ANY: wildcard
|
|
*/
|
|
enum dect_llns {
|
|
DECT_LLN_CLASS_U = 0,
|
|
DECT_LLN_CLASS_A = 1,
|
|
DECT_LLN_ASSIGNABLE_MIN = 2,
|
|
DECT_LLN_ASSIGNABLE_MAX = 6,
|
|
DECT_LLN_UNASSIGNED = 7,
|
|
DECT_LLN_ANY = 15,
|
|
};
|
|
|
|
/**
|
|
* struct sockaddr_dect_ssap
|
|
*
|
|
* @dect_family: family (AF_DECT)
|
|
* @dect_lln: logical link number
|
|
* @dect_sapi: service access point identifier
|
|
* @dect_class: class A/B
|
|
* @dect_index: cluster index
|
|
* @dect_ari: ARI
|
|
* @dect_pmid: PMID
|
|
* @dect_lcn: logical connection number
|
|
*/
|
|
struct sockaddr_dect_ssap {
|
|
sa_family_t dect_family;
|
|
__u8 dect_lln:4,
|
|
dect_sapi:3;
|
|
__u8 dect_class;
|
|
int dect_index;
|
|
__u64 dect_ari:40,
|
|
dect_pmid:20,
|
|
dect_lcn:3;
|
|
};
|
|
|
|
/* S-SAP primitives */
|
|
#define DECT_DL_ENC_KEY 1
|
|
#define DECT_DL_ENCRYPT 2
|
|
#define DECT_DL_MAC_CONN_PARAMS 3
|
|
|
|
enum dect_cipher_states {
|
|
DECT_CIPHER_DISABLED,
|
|
DECT_CIPHER_ENABLED,
|
|
};
|
|
|
|
/**
|
|
* enum dect_mac_connection_types - MAC Connection types
|
|
*
|
|
* @DECT_MAC_CONN_BASIC: Basic connection, always I_N_min_delay service
|
|
* @DECT_MAC_CONN_ADVANCED: Advanced connection
|
|
* @DECT_MAC_CONN_COMPLEMENT: Complementary connection
|
|
*/
|
|
enum dect_mac_connection_types {
|
|
DECT_MAC_CONN_BASIC,
|
|
DECT_MAC_CONN_ADVANCED,
|
|
DECT_MAC_CONN_COMPLEMENT,
|
|
};
|
|
|
|
enum dect_mac_service_types {
|
|
DECT_SERVICE_IN_MIN_DELAY = 0x0,
|
|
DECT_SERVICE_IPX_ENCODED_PROTECTED = 0x1,
|
|
DECT_SERVICE_IN_NORMAL_DELAY = 0x2,
|
|
DECT_SERVICE_UNKNOWN = 0x4,
|
|
DECT_SERVICE_C_CHANNEL_ONLY = 0x5,
|
|
DECT_SERVICE_IP_ERROR_DETECTION = 0x10,
|
|
DECT_SERVICE_IPQ_ERROR_DETECTION = 0x14,
|
|
/* Lifetime encoded in low three bits */
|
|
DECT_SERVICE_IP_ERROR_CORRECTION = 0x18,
|
|
DECT_SERVICE_IPQ_ERROR_CORRECTION = 0x38,
|
|
};
|
|
|
|
/**
|
|
* enum dect_slot_types - DECT slot types
|
|
*
|
|
* @DECT_FULL_SLOT: Full-slot format (480 bits)
|
|
* @DECT_HALF_SLOT: Half-slot format (240 bits)
|
|
* @DECT_DOUBLE_SLOT: Double-slot format (960 bits)
|
|
* @DECT_LONG_SLOT_j640: Long slot format j=640 (800 bits)
|
|
* @DECT_LONG_SLOT_j672: Long slot format j=672 (832 bits)
|
|
*
|
|
* The numeric values must match the MAC-layer attributes-T coding.
|
|
*/
|
|
enum dect_slot_types {
|
|
DECT_FULL_SLOT = 0x0,
|
|
DECT_HALF_SLOT = 0x1,
|
|
DECT_DOUBLE_SLOT = 0x2,
|
|
DECT_LONG_SLOT_640 = 0x3,
|
|
DECT_LONG_SLOT_672 = 0x4,
|
|
};
|
|
|
|
struct dect_mac_conn_params {
|
|
enum dect_mac_connection_types type;
|
|
enum dect_mac_service_types service;
|
|
enum dect_slot_types slot;
|
|
};
|
|
|
|
/**
|
|
* struct dect_dl_encrypt - DL_ENCRYPT primitive arguments
|
|
*
|
|
* @status: desired/achieved encryption status
|
|
*/
|
|
struct dect_dl_encrypt {
|
|
enum dect_cipher_states status;
|
|
};
|
|
|
|
/**
|
|
* struct sockaddr_dect_lu - DLC U-plane LUx service instance address
|
|
*
|
|
* @dect_family: address family (AF_DECT)
|
|
* @dect_mci: MAC Connection Identifier
|
|
*/
|
|
struct sockaddr_dect_lu {
|
|
sa_family_t dect_family;
|
|
int dect_index;
|
|
__u64 dect_ari:40,
|
|
dect_pmid:20,
|
|
dect_lcn:3;
|
|
};
|
|
|
|
/* LU1 SAP */
|
|
|
|
#define DECT_LU1_QUEUE_STATS 0
|
|
|
|
struct dect_lu1_queue_stats {
|
|
__u32 rx_bytes;
|
|
__u32 rx_underflow;
|
|
__u32 tx_bytes;
|
|
__u32 tx_underflow;
|
|
};
|
|
|
|
#endif /* _LINUX_DECT_H */
|