xref: /linux/include/net/af_ieee802154.h (revision bd628c1bed7902ec1f24ba0fe70758949146abbe)
1 /*
2  * IEEE 802.15.4 interface for userspace
3  *
4  * Copyright 2007, 2008 Siemens AG
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2
8  * as published by the Free Software Foundation.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * Written by:
16  * Sergey Lapin <slapin@ossfans.org>
17  * Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
18  */
19 
20 #ifndef _AF_IEEE802154_H
21 #define _AF_IEEE802154_H
22 
23 #include <linux/socket.h> /* for sa_family_t */
24 
25 enum {
26 	IEEE802154_ADDR_NONE = 0x0,
27 	/* RESERVED = 0x01, */
28 	IEEE802154_ADDR_SHORT = 0x2, /* 16-bit address + PANid */
29 	IEEE802154_ADDR_LONG = 0x3, /* 64-bit address + PANid */
30 };
31 
32 /* address length, octets */
33 #define IEEE802154_ADDR_LEN	8
34 
35 struct ieee802154_addr_sa {
36 	int addr_type;
37 	u16 pan_id;
38 	union {
39 		u8 hwaddr[IEEE802154_ADDR_LEN];
40 		u16 short_addr;
41 	};
42 };
43 
44 #define IEEE802154_PANID_BROADCAST	0xffff
45 #define IEEE802154_ADDR_BROADCAST	0xffff
46 #define IEEE802154_ADDR_UNDEF		0xfffe
47 
48 struct sockaddr_ieee802154 {
49 	sa_family_t family; /* AF_IEEE802154 */
50 	struct ieee802154_addr_sa addr;
51 };
52 
53 /* get/setsockopt */
54 #define SOL_IEEE802154	0
55 
56 #define WPAN_WANTACK		0
57 #define WPAN_SECURITY		1
58 #define WPAN_SECURITY_LEVEL	2
59 #define WPAN_WANTLQI		3
60 
61 #define WPAN_SECURITY_DEFAULT	0
62 #define WPAN_SECURITY_OFF	1
63 #define WPAN_SECURITY_ON	2
64 
65 #define WPAN_SECURITY_LEVEL_DEFAULT	(-1)
66 
67 #endif
68