xref: /linux/include/net/af_ieee802154.h (revision 1802d0be)
1*1802d0beSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2f0166e5eSDmitry Eremin-Solenikov /*
3bfe08a87SStefan Schmidt  * IEEE 802.15.4 interface for userspace
4f0166e5eSDmitry Eremin-Solenikov  *
5f0166e5eSDmitry Eremin-Solenikov  * Copyright 2007, 2008 Siemens AG
6f0166e5eSDmitry Eremin-Solenikov  *
7f0166e5eSDmitry Eremin-Solenikov  * Written by:
8f0166e5eSDmitry Eremin-Solenikov  * Sergey Lapin <slapin@ossfans.org>
9f0166e5eSDmitry Eremin-Solenikov  * Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
10f0166e5eSDmitry Eremin-Solenikov  */
11f0166e5eSDmitry Eremin-Solenikov 
12f0166e5eSDmitry Eremin-Solenikov #ifndef _AF_IEEE802154_H
13f0166e5eSDmitry Eremin-Solenikov #define _AF_IEEE802154_H
14f0166e5eSDmitry Eremin-Solenikov 
15f0166e5eSDmitry Eremin-Solenikov #include <linux/socket.h> /* for sa_family_t */
16f0166e5eSDmitry Eremin-Solenikov 
17f0166e5eSDmitry Eremin-Solenikov enum {
18f0166e5eSDmitry Eremin-Solenikov 	IEEE802154_ADDR_NONE = 0x0,
19f0166e5eSDmitry Eremin-Solenikov 	/* RESERVED = 0x01, */
20f0166e5eSDmitry Eremin-Solenikov 	IEEE802154_ADDR_SHORT = 0x2, /* 16-bit address + PANid */
21f0166e5eSDmitry Eremin-Solenikov 	IEEE802154_ADDR_LONG = 0x3, /* 64-bit address + PANid */
22f0166e5eSDmitry Eremin-Solenikov };
23f0166e5eSDmitry Eremin-Solenikov 
24f0166e5eSDmitry Eremin-Solenikov /* address length, octets */
25f0166e5eSDmitry Eremin-Solenikov #define IEEE802154_ADDR_LEN	8
26f0166e5eSDmitry Eremin-Solenikov 
27376b7bd3SPhoebe Buckheister struct ieee802154_addr_sa {
28f0166e5eSDmitry Eremin-Solenikov 	int addr_type;
29f0166e5eSDmitry Eremin-Solenikov 	u16 pan_id;
30f0166e5eSDmitry Eremin-Solenikov 	union {
31f0166e5eSDmitry Eremin-Solenikov 		u8 hwaddr[IEEE802154_ADDR_LEN];
32f0166e5eSDmitry Eremin-Solenikov 		u16 short_addr;
33f0166e5eSDmitry Eremin-Solenikov 	};
34f0166e5eSDmitry Eremin-Solenikov };
35f0166e5eSDmitry Eremin-Solenikov 
36f0166e5eSDmitry Eremin-Solenikov #define IEEE802154_PANID_BROADCAST	0xffff
37f0166e5eSDmitry Eremin-Solenikov #define IEEE802154_ADDR_BROADCAST	0xffff
38f0166e5eSDmitry Eremin-Solenikov #define IEEE802154_ADDR_UNDEF		0xfffe
39f0166e5eSDmitry Eremin-Solenikov 
40f0166e5eSDmitry Eremin-Solenikov struct sockaddr_ieee802154 {
41f0166e5eSDmitry Eremin-Solenikov 	sa_family_t family; /* AF_IEEE802154 */
42376b7bd3SPhoebe Buckheister 	struct ieee802154_addr_sa addr;
43f0166e5eSDmitry Eremin-Solenikov };
44f0166e5eSDmitry Eremin-Solenikov 
4599eb8558SDmitry Baryshkov /* get/setsockopt */
4699eb8558SDmitry Baryshkov #define SOL_IEEE802154	0
4799eb8558SDmitry Baryshkov 
4899eb8558SDmitry Baryshkov #define WPAN_WANTACK		0
49af9eed5bSPhoebe Buckheister #define WPAN_SECURITY		1
50af9eed5bSPhoebe Buckheister #define WPAN_SECURITY_LEVEL	2
51811e299fSRomuald CARI #define WPAN_WANTLQI		3
52af9eed5bSPhoebe Buckheister 
53af9eed5bSPhoebe Buckheister #define WPAN_SECURITY_DEFAULT	0
54af9eed5bSPhoebe Buckheister #define WPAN_SECURITY_OFF	1
55af9eed5bSPhoebe Buckheister #define WPAN_SECURITY_ON	2
56af9eed5bSPhoebe Buckheister 
57af9eed5bSPhoebe Buckheister #define WPAN_SECURITY_LEVEL_DEFAULT	(-1)
5899eb8558SDmitry Baryshkov 
59f0166e5eSDmitry Eremin-Solenikov #endif
60