Linux tsuru-no-tsurugi 5.15.0-186-generic #196-Ubuntu SMP Sat Jun 20 16:09:34 UTC 2026 x86_64
Apache/2.4.52 (Ubuntu)
Server IP : 192.168.0.18 & Your IP : 216.73.216.68
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
src /
linux-headers-5.15.0-185 /
include /
net /
Delete
Unzip
Name
Size
Permission
Date
Action
9p
[ DIR ]
drwxr-xr-x
2026-06-27 06:50
bluetooth
[ DIR ]
drwxr-xr-x
2026-06-27 06:50
caif
[ DIR ]
drwxr-xr-x
2026-06-27 06:50
iucv
[ DIR ]
drwxr-xr-x
2026-06-27 06:50
netfilter
[ DIR ]
drwxr-xr-x
2026-06-27 06:50
netns
[ DIR ]
drwxr-xr-x
2026-06-27 06:50
nfc
[ DIR ]
drwxr-xr-x
2026-06-27 06:50
phonet
[ DIR ]
drwxr-xr-x
2026-06-27 06:50
sctp
[ DIR ]
drwxr-xr-x
2026-06-27 06:50
tc_act
[ DIR ]
drwxr-xr-x
2026-06-27 06:50
6lowpan.h
10.03
KB
-rw-r--r--
2021-11-01 05:53
Space.h
737
B
-rw-r--r--
2021-11-01 05:53
act_api.h
8.44
KB
-rw-r--r--
2026-06-20 00:54
addrconf.h
14.25
KB
-rw-r--r--
2026-06-20 00:54
af_ieee802154.h
1.19
KB
-rw-r--r--
2021-11-01 05:53
af_rxrpc.h
2.73
KB
-rw-r--r--
2021-11-01 05:53
af_unix.h
3.3
KB
-rw-r--r--
2026-06-20 00:54
af_vsock.h
7.41
KB
-rw-r--r--
2026-06-20 00:54
ah.h
382
B
-rw-r--r--
2021-11-01 05:53
arp.h
2.09
KB
-rw-r--r--
2026-06-20 00:54
atmclip.h
1.48
KB
-rw-r--r--
2021-11-01 05:53
ax25.h
15.08
KB
-rw-r--r--
2026-06-20 00:54
ax88796.h
1.41
KB
-rw-r--r--
2021-11-01 05:53
bareudp.h
572
B
-rw-r--r--
2021-11-01 05:53
bond_3ad.h
9.48
KB
-rw-r--r--
2026-06-20 00:54
bond_alb.h
6.1
KB
-rw-r--r--
2026-06-20 00:54
bond_options.h
3.79
KB
-rw-r--r--
2026-06-20 00:54
bonding.h
19.79
KB
-rw-r--r--
2026-06-20 00:54
bpf_sk_storage.h
1.74
KB
-rw-r--r--
2021-11-01 05:53
busy_poll.h
3.87
KB
-rw-r--r--
2026-06-20 00:54
calipso.h
1.55
KB
-rw-r--r--
2021-11-01 05:53
cfg80211-wext.h
1.81
KB
-rw-r--r--
2021-11-01 05:53
cfg80211.h
294.25
KB
-rw-r--r--
2026-06-20 00:54
cfg802154.h
10.53
KB
-rw-r--r--
2026-06-20 00:54
checksum.h
4.75
KB
-rw-r--r--
2026-06-20 00:54
cipso_ipv4.h
7.37
KB
-rw-r--r--
2021-11-01 05:53
cls_cgroup.h
2.04
KB
-rw-r--r--
2026-06-20 00:54
codel.h
5.65
KB
-rw-r--r--
2021-11-01 05:53
codel_impl.h
7.98
KB
-rw-r--r--
2021-11-01 05:53
codel_qdisc.h
2.9
KB
-rw-r--r--
2021-11-01 05:53
compat.h
2.53
KB
-rw-r--r--
2021-11-01 05:53
datalink.h
619
B
-rw-r--r--
2021-11-01 05:53
dcbevent.h
742
B
-rw-r--r--
2021-11-01 05:53
dcbnl.h
4.22
KB
-rw-r--r--
2021-11-01 05:53
devlink.h
62.1
KB
-rw-r--r--
2021-11-01 05:53
dsa.h
35.38
KB
-rw-r--r--
2026-06-20 00:54
dsfield.h
1.12
KB
-rw-r--r--
2021-11-01 05:53
dst.h
14.8
KB
-rw-r--r--
2026-06-20 00:54
dst_cache.h
2.96
KB
-rw-r--r--
2026-06-20 00:54
dst_metadata.h
5.39
KB
-rw-r--r--
2026-06-20 00:54
dst_ops.h
2.08
KB
-rw-r--r--
2026-06-20 00:54
erspan.h
8.96
KB
-rw-r--r--
2021-11-01 05:53
esp.h
1.16
KB
-rw-r--r--
2021-11-01 05:53
espintcp.h
966
B
-rw-r--r--
2021-11-01 05:53
ethoc.h
391
B
-rw-r--r--
2021-11-01 05:53
failover.h
1.15
KB
-rw-r--r--
2021-11-01 05:53
fib_notifier.h
1.35
KB
-rw-r--r--
2021-11-01 05:53
fib_rules.h
6.3
KB
-rw-r--r--
2026-06-20 00:54
firewire.h
636
B
-rw-r--r--
2021-11-01 05:53
flow.h
5
KB
-rw-r--r--
2026-06-20 00:54
flow_dissector.h
10.27
KB
-rw-r--r--
2026-06-20 00:54
flow_offload.h
15.56
KB
-rw-r--r--
2026-06-20 00:54
fou.h
549
B
-rw-r--r--
2021-11-01 05:53
fq.h
2.47
KB
-rw-r--r--
2021-11-01 05:53
fq_impl.h
7.89
KB
-rw-r--r--
2021-11-01 05:53
garp.h
2.62
KB
-rw-r--r--
2021-11-01 05:53
gen_stats.h
2.82
KB
-rw-r--r--
2021-11-01 05:53
genetlink.h
13.53
KB
-rw-r--r--
2026-06-20 00:54
geneve.h
1.85
KB
-rw-r--r--
2021-11-01 05:53
gre.h
3.29
KB
-rw-r--r--
2021-11-01 05:53
gro.h
783
B
-rw-r--r--
2021-11-01 05:53
gro_cells.h
443
B
-rw-r--r--
2021-11-01 05:53
gtp.h
633
B
-rw-r--r--
2021-11-01 05:53
gue.h
3.24
KB
-rw-r--r--
2021-11-01 05:53
hwbm.h
969
B
-rw-r--r--
2021-11-01 05:53
icmp.h
1.87
KB
-rw-r--r--
2021-11-01 05:53
ieee80211_radiotap.h
13.2
KB
-rw-r--r--
2021-11-01 05:53
ieee802154_netdev.h
9.86
KB
-rw-r--r--
2026-06-20 00:54
if_inet6.h
6.54
KB
-rw-r--r--
2026-06-20 00:54
ife.h
1.03
KB
-rw-r--r--
2021-11-01 05:53
ila.h
291
B
-rw-r--r--
2021-11-01 05:53
inet6_connection_sock.h
765
B
-rw-r--r--
2021-11-01 05:53
inet6_hashtables.h
4.16
KB
-rw-r--r--
2026-06-20 00:54
inet_common.h
2.55
KB
-rw-r--r--
2021-11-01 05:53
inet_connection_sock.h
11.25
KB
-rw-r--r--
2026-06-20 00:54
inet_ecn.h
7.45
KB
-rw-r--r--
2021-11-01 05:53
inet_frag.h
4.93
KB
-rw-r--r--
2026-06-20 00:54
inet_hashtables.h
12.24
KB
-rw-r--r--
2026-06-20 00:54
inet_sock.h
9.76
KB
-rw-r--r--
2026-06-20 00:54
inet_timewait_sock.h
3.65
KB
-rw-r--r--
2021-11-01 05:53
inetpeer.h
3.29
KB
-rw-r--r--
2021-11-01 05:53
ioam6.h
1.22
KB
-rw-r--r--
2026-06-20 00:54
ip.h
22.23
KB
-rw-r--r--
2026-06-20 00:54
ip6_checksum.h
2.71
KB
-rw-r--r--
2021-11-01 05:53
ip6_fib.h
15.9
KB
-rw-r--r--
2026-06-20 00:54
ip6_route.h
9.99
KB
-rw-r--r--
2021-11-01 05:53
ip6_tunnel.h
4.98
KB
-rw-r--r--
2026-06-20 00:54
ip_fib.h
15.96
KB
-rw-r--r--
2026-06-20 00:54
ip_tunnels.h
15.58
KB
-rw-r--r--
2026-06-20 00:54
ip_vs.h
49.4
KB
-rw-r--r--
2026-06-20 00:54
ipcomp.h
659
B
-rw-r--r--
2021-11-01 05:53
ipconfig.h
811
B
-rw-r--r--
2021-11-01 05:53
ipv6.h
35.33
KB
-rw-r--r--
2026-06-20 00:54
ipv6_frag.h
3.28
KB
-rw-r--r--
2026-06-20 00:54
ipv6_stubs.h
3.4
KB
-rw-r--r--
2026-06-20 00:54
iw_handler.h
20.91
KB
-rw-r--r--
2021-11-01 05:53
kcm.h
4.84
KB
-rw-r--r--
2026-06-20 00:54
l3mdev.h
7.03
KB
-rw-r--r--
2026-06-20 00:54
lag.h
409
B
-rw-r--r--
2021-11-01 05:53
lapb.h
4.82
KB
-rw-r--r--
2026-06-20 00:54
lib80211.h
3.92
KB
-rw-r--r--
2021-11-01 05:53
llc.h
4.41
KB
-rw-r--r--
2026-06-20 00:54
llc_c_ac.h
9.31
KB
-rw-r--r--
2021-11-01 05:53
llc_c_ev.h
10.68
KB
-rw-r--r--
2021-11-01 05:53
llc_c_st.h
1.72
KB
-rw-r--r--
2021-11-01 05:53
llc_conn.h
4.06
KB
-rw-r--r--
2021-11-01 05:53
llc_if.h
2.16
KB
-rw-r--r--
2021-11-01 05:53
llc_pdu.h
14.35
KB
-rw-r--r--
2026-06-20 00:54
llc_s_ac.h
1.55
KB
-rw-r--r--
2021-11-01 05:53
llc_s_ev.h
2.2
KB
-rw-r--r--
2021-11-01 05:53
llc_s_st.h
947
B
-rw-r--r--
2021-11-01 05:53
llc_sap.h
1.08
KB
-rw-r--r--
2021-11-01 05:53
lwtunnel.h
6.65
KB
-rw-r--r--
2026-06-20 00:54
mac80211.h
267.55
KB
-rw-r--r--
2026-06-20 00:54
mac802154.h
14.88
KB
-rw-r--r--
2021-11-01 05:53
macsec.h
6.92
KB
-rw-r--r--
2026-06-20 00:54
mctp.h
6.01
KB
-rw-r--r--
2026-06-20 00:54
mctpdevice.h
841
B
-rw-r--r--
2026-06-20 00:54
mip6.h
1016
B
-rw-r--r--
2021-11-01 05:53
mld.h
2.85
KB
-rw-r--r--
2021-11-01 05:53
mpls.h
943
B
-rw-r--r--
2021-11-01 05:53
mpls_iptunnel.h
429
B
-rw-r--r--
2021-11-01 05:53
mptcp.h
6.62
KB
-rw-r--r--
2026-06-20 00:54
mrp.h
3.05
KB
-rw-r--r--
2026-06-20 00:54
ncsi.h
1.92
KB
-rw-r--r--
2021-11-01 05:53
ndisc.h
14.79
KB
-rw-r--r--
2026-06-20 00:54
neighbour.h
15.72
KB
-rw-r--r--
2026-06-20 00:54
net_failover.h
1023
B
-rw-r--r--
2021-11-01 05:53
net_namespace.h
12.5
KB
-rw-r--r--
2026-06-20 00:54
net_ratelimit.h
220
B
-rw-r--r--
2021-11-01 05:53
netevent.h
1.02
KB
-rw-r--r--
2021-11-01 05:53
netlabel.h
20.19
KB
-rw-r--r--
2026-06-20 00:54
netlink.h
60.21
KB
-rw-r--r--
2021-11-01 05:53
netprio_cgroup.h
1.02
KB
-rw-r--r--
2021-11-01 05:53
netrom.h
7.71
KB
-rw-r--r--
2021-11-01 05:53
nexthop.h
12.27
KB
-rw-r--r--
2021-11-01 05:53
nl802154.h
12.09
KB
-rw-r--r--
2026-06-20 00:54
nsh.h
12.31
KB
-rw-r--r--
2021-11-01 05:53
p8022.h
447
B
-rw-r--r--
2021-11-01 05:53
page_pool.h
8.44
KB
-rw-r--r--
2026-06-20 00:54
pie.h
3.6
KB
-rw-r--r--
2021-11-01 05:53
ping.h
2.9
KB
-rw-r--r--
2021-11-01 05:53
pkt_cls.h
23.86
KB
-rw-r--r--
2021-11-01 05:53
pkt_sched.h
5.9
KB
-rw-r--r--
2026-06-20 00:54
pptp.h
557
B
-rw-r--r--
2021-11-01 05:53
protocol.h
3.81
KB
-rw-r--r--
2026-06-20 00:54
psample.h
1.06
KB
-rw-r--r--
2021-11-01 05:53
psnap.h
351
B
-rw-r--r--
2021-11-01 05:53
raw.h
2.09
KB
-rw-r--r--
2026-06-20 00:54
rawv6.h
854
B
-rw-r--r--
2021-11-01 05:53
red.h
11.38
KB
-rw-r--r--
2021-11-01 05:53
regulatory.h
10.65
KB
-rw-r--r--
2021-11-01 05:53
request_sock.h
6.5
KB
-rw-r--r--
2026-06-20 00:54
rose.h
7.62
KB
-rw-r--r--
2021-11-01 05:53
route.h
11.31
KB
-rw-r--r--
2026-06-20 00:54
rpl.h
839
B
-rw-r--r--
2026-06-20 00:54
rsi_91x.h
1.67
KB
-rw-r--r--
2021-11-01 05:53
rtnetlink.h
7.46
KB
-rw-r--r--
2026-06-20 00:54
rtnh.h
859
B
-rw-r--r--
2021-11-01 05:53
sch_generic.h
33.91
KB
-rw-r--r--
2026-06-20 00:54
scm.h
3.79
KB
-rw-r--r--
2026-06-20 00:54
secure_seq.h
855
B
-rw-r--r--
2026-06-20 00:54
seg6.h
2.18
KB
-rw-r--r--
2026-06-20 00:54
seg6_hmac.h
1.44
KB
-rw-r--r--
2021-11-01 05:53
seg6_local.h
644
B
-rw-r--r--
2021-11-01 05:53
selftests.h
582
B
-rw-r--r--
2021-11-01 05:53
slhc_vj.h
6.67
KB
-rw-r--r--
2021-11-01 05:53
smc.h
2.45
KB
-rw-r--r--
2021-11-01 05:53
snmp.h
5.14
KB
-rw-r--r--
2021-11-01 05:53
sock.h
84.33
KB
-rw-r--r--
2026-06-20 00:54
sock_reuseport.h
1.83
KB
-rw-r--r--
2026-06-20 00:54
stp.h
383
B
-rw-r--r--
2021-11-01 05:53
strparser.h
4.15
KB
-rw-r--r--
2026-06-20 00:54
switchdev.h
14.27
KB
-rw-r--r--
2026-06-20 00:54
tcp.h
73.48
KB
-rw-r--r--
2026-06-20 00:54
tcp_states.h
1.2
KB
-rw-r--r--
2021-11-01 05:53
timewait_sock.h
925
B
-rw-r--r--
2021-11-01 05:53
tipc.h
2.35
KB
-rw-r--r--
2021-11-01 05:53
tls.h
20.96
KB
-rw-r--r--
2026-06-20 00:54
tls_toe.h
2.94
KB
-rw-r--r--
2021-11-01 05:53
transp_v6.h
1.95
KB
-rw-r--r--
2021-11-01 05:53
tso.h
566
B
-rw-r--r--
2021-11-01 05:53
tun_proto.h
988
B
-rw-r--r--
2021-11-01 05:53
udp.h
16.64
KB
-rw-r--r--
2026-06-20 00:54
udp_tunnel.h
11.92
KB
-rw-r--r--
2026-06-20 00:54
udplite.h
3.67
KB
-rw-r--r--
2026-06-20 00:54
vsock_addr.h
662
B
-rw-r--r--
2021-11-01 05:53
vxlan.h
14.09
KB
-rw-r--r--
2026-06-20 00:54
wext.h
1.47
KB
-rw-r--r--
2021-11-01 05:53
x25.h
9.49
KB
-rw-r--r--
2021-11-01 05:53
x25device.h
387
B
-rw-r--r--
2021-11-01 05:53
xdp.h
8.62
KB
-rw-r--r--
2026-06-20 00:54
xdp_priv.h
446
B
-rw-r--r--
2021-11-01 05:53
xdp_sock.h
2.04
KB
-rw-r--r--
2021-11-01 05:53
xdp_sock_drv.h
5.48
KB
-rw-r--r--
2026-06-20 00:54
xfrm.h
54.98
KB
-rw-r--r--
2026-06-20 00:54
xsk_buff_pool.h
5.02
KB
-rw-r--r--
2026-06-20 00:54
Save
Rename
/* SPDX-License-Identifier: GPL-2.0-only */ /* * An interface between IEEE802.15.4 device and rest of the kernel. * * Copyright (C) 2007-2012 Siemens AG * * Written by: * Pavel Smolenskiy <pavel.smolenskiy@gmail.com> * Maxim Gorbachyov <maxim.gorbachev@siemens.com> * Maxim Osipov <maxim.osipov@siemens.com> * Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> * Alexander Smirnov <alex.bluesman.smirnov@gmail.com> */ #ifndef IEEE802154_NETDEVICE_H #define IEEE802154_NETDEVICE_H #define IEEE802154_REQUIRED_SIZE(struct_type, member) \ (offsetof(typeof(struct_type), member) + \ sizeof(((typeof(struct_type) *)(NULL))->member)) #define IEEE802154_ADDR_OFFSET \ offsetof(typeof(struct sockaddr_ieee802154), addr) #define IEEE802154_MIN_NAMELEN (IEEE802154_ADDR_OFFSET + \ IEEE802154_REQUIRED_SIZE(struct ieee802154_addr_sa, addr_type)) #define IEEE802154_NAMELEN_SHORT (IEEE802154_ADDR_OFFSET + \ IEEE802154_REQUIRED_SIZE(struct ieee802154_addr_sa, short_addr)) #define IEEE802154_NAMELEN_LONG (IEEE802154_ADDR_OFFSET + \ IEEE802154_REQUIRED_SIZE(struct ieee802154_addr_sa, hwaddr)) #include <net/af_ieee802154.h> #include <linux/netdevice.h> #include <linux/skbuff.h> #include <linux/ieee802154.h> #include <net/cfg802154.h> struct ieee802154_sechdr { #if defined(__LITTLE_ENDIAN_BITFIELD) u8 level:3, key_id_mode:2, reserved:3; #elif defined(__BIG_ENDIAN_BITFIELD) u8 reserved:3, key_id_mode:2, level:3; #else #error "Please fix <asm/byteorder.h>" #endif u8 key_id; __le32 frame_counter; union { __le32 short_src; __le64 extended_src; }; }; struct ieee802154_hdr_fc { #if defined(__LITTLE_ENDIAN_BITFIELD) u16 type:3, security_enabled:1, frame_pending:1, ack_request:1, intra_pan:1, reserved:3, dest_addr_mode:2, version:2, source_addr_mode:2; #elif defined(__BIG_ENDIAN_BITFIELD) u16 reserved:1, intra_pan:1, ack_request:1, frame_pending:1, security_enabled:1, type:3, source_addr_mode:2, version:2, dest_addr_mode:2, reserved2:2; #else #error "Please fix <asm/byteorder.h>" #endif }; struct ieee802154_hdr { struct ieee802154_hdr_fc fc; u8 seq; struct ieee802154_addr source; struct ieee802154_addr dest; struct ieee802154_sechdr sec; }; /* pushes hdr onto the skb. fields of hdr->fc that can be calculated from * the contents of hdr will be, and the actual value of those bits in * hdr->fc will be ignored. this includes the INTRA_PAN bit and the frame * version, if SECEN is set. */ int ieee802154_hdr_push(struct sk_buff *skb, struct ieee802154_hdr *hdr); /* pulls the entire 802.15.4 header off of the skb, including the security * header, and performs pan id decompression */ int ieee802154_hdr_pull(struct sk_buff *skb, struct ieee802154_hdr *hdr); /* parses the frame control, sequence number of address fields in a given skb * and stores them into hdr, performing pan id decompression and length checks * to be suitable for use in header_ops.parse */ int ieee802154_hdr_peek_addrs(const struct sk_buff *skb, struct ieee802154_hdr *hdr); /* parses the full 802.15.4 header a given skb and stores them into hdr, * performing pan id decompression and length checks to be suitable for use in * header_ops.parse */ int ieee802154_hdr_peek(const struct sk_buff *skb, struct ieee802154_hdr *hdr); int ieee802154_max_payload(const struct ieee802154_hdr *hdr); static inline int ieee802154_sechdr_authtag_len(const struct ieee802154_sechdr *sec) { switch (sec->level) { case IEEE802154_SCF_SECLEVEL_MIC32: case IEEE802154_SCF_SECLEVEL_ENC_MIC32: return 4; case IEEE802154_SCF_SECLEVEL_MIC64: case IEEE802154_SCF_SECLEVEL_ENC_MIC64: return 8; case IEEE802154_SCF_SECLEVEL_MIC128: case IEEE802154_SCF_SECLEVEL_ENC_MIC128: return 16; case IEEE802154_SCF_SECLEVEL_NONE: case IEEE802154_SCF_SECLEVEL_ENC: default: return 0; } } static inline int ieee802154_hdr_length(struct sk_buff *skb) { struct ieee802154_hdr hdr; int len = ieee802154_hdr_pull(skb, &hdr); if (len > 0) skb_push(skb, len); return len; } static inline bool ieee802154_addr_equal(const struct ieee802154_addr *a1, const struct ieee802154_addr *a2) { if (a1->pan_id != a2->pan_id || a1->mode != a2->mode) return false; if ((a1->mode == IEEE802154_ADDR_LONG && a1->extended_addr != a2->extended_addr) || (a1->mode == IEEE802154_ADDR_SHORT && a1->short_addr != a2->short_addr)) return false; return true; } static inline __le64 ieee802154_devaddr_from_raw(const void *raw) { u64 temp; memcpy(&temp, raw, IEEE802154_ADDR_LEN); return (__force __le64)swab64(temp); } static inline void ieee802154_devaddr_to_raw(void *raw, __le64 addr) { u64 temp = swab64((__force u64)addr); memcpy(raw, &temp, IEEE802154_ADDR_LEN); } static inline int ieee802154_sockaddr_check_size(struct sockaddr_ieee802154 *daddr, int len) { struct ieee802154_addr_sa *sa; int ret = 0; sa = &daddr->addr; if (len < IEEE802154_MIN_NAMELEN) return -EINVAL; switch (sa->addr_type) { case IEEE802154_ADDR_NONE: break; case IEEE802154_ADDR_SHORT: if (len < IEEE802154_NAMELEN_SHORT) ret = -EINVAL; break; case IEEE802154_ADDR_LONG: if (len < IEEE802154_NAMELEN_LONG) ret = -EINVAL; break; default: ret = -EINVAL; break; } return ret; } static inline void ieee802154_addr_from_sa(struct ieee802154_addr *a, const struct ieee802154_addr_sa *sa) { a->mode = sa->addr_type; a->pan_id = cpu_to_le16(sa->pan_id); switch (a->mode) { case IEEE802154_ADDR_SHORT: a->short_addr = cpu_to_le16(sa->short_addr); break; case IEEE802154_ADDR_LONG: a->extended_addr = ieee802154_devaddr_from_raw(sa->hwaddr); break; } } static inline void ieee802154_addr_to_sa(struct ieee802154_addr_sa *sa, const struct ieee802154_addr *a) { sa->addr_type = a->mode; sa->pan_id = le16_to_cpu(a->pan_id); switch (a->mode) { case IEEE802154_ADDR_SHORT: sa->short_addr = le16_to_cpu(a->short_addr); break; case IEEE802154_ADDR_LONG: ieee802154_devaddr_to_raw(sa->hwaddr, a->extended_addr); break; } } /* * A control block of skb passed between the ARPHRD_IEEE802154 device * and other stack parts. */ struct ieee802154_mac_cb { u8 lqi; u8 type; bool ackreq; bool secen; bool secen_override; u8 seclevel; bool seclevel_override; struct ieee802154_addr source; struct ieee802154_addr dest; }; static inline struct ieee802154_mac_cb *mac_cb(struct sk_buff *skb) { return (struct ieee802154_mac_cb *)skb->cb; } static inline struct ieee802154_mac_cb *mac_cb_init(struct sk_buff *skb) { BUILD_BUG_ON(sizeof(struct ieee802154_mac_cb) > sizeof(skb->cb)); memset(skb->cb, 0, sizeof(struct ieee802154_mac_cb)); return mac_cb(skb); } enum { IEEE802154_LLSEC_DEVKEY_IGNORE, IEEE802154_LLSEC_DEVKEY_RESTRICT, IEEE802154_LLSEC_DEVKEY_RECORD, __IEEE802154_LLSEC_DEVKEY_MAX, }; #define IEEE802154_MAC_SCAN_ED 0 #define IEEE802154_MAC_SCAN_ACTIVE 1 #define IEEE802154_MAC_SCAN_PASSIVE 2 #define IEEE802154_MAC_SCAN_ORPHAN 3 struct ieee802154_mac_params { s8 transmit_power; u8 min_be; u8 max_be; u8 csma_retries; s8 frame_retries; bool lbt; struct wpan_phy_cca cca; s32 cca_ed_level; }; struct wpan_phy; enum { IEEE802154_LLSEC_PARAM_ENABLED = BIT(0), IEEE802154_LLSEC_PARAM_FRAME_COUNTER = BIT(1), IEEE802154_LLSEC_PARAM_OUT_LEVEL = BIT(2), IEEE802154_LLSEC_PARAM_OUT_KEY = BIT(3), IEEE802154_LLSEC_PARAM_KEY_SOURCE = BIT(4), IEEE802154_LLSEC_PARAM_PAN_ID = BIT(5), IEEE802154_LLSEC_PARAM_HWADDR = BIT(6), IEEE802154_LLSEC_PARAM_COORD_HWADDR = BIT(7), IEEE802154_LLSEC_PARAM_COORD_SHORTADDR = BIT(8), }; struct ieee802154_llsec_ops { int (*get_params)(struct net_device *dev, struct ieee802154_llsec_params *params); int (*set_params)(struct net_device *dev, const struct ieee802154_llsec_params *params, int changed); int (*add_key)(struct net_device *dev, const struct ieee802154_llsec_key_id *id, const struct ieee802154_llsec_key *key); int (*del_key)(struct net_device *dev, const struct ieee802154_llsec_key_id *id); int (*add_dev)(struct net_device *dev, const struct ieee802154_llsec_device *llsec_dev); int (*del_dev)(struct net_device *dev, __le64 dev_addr); int (*add_devkey)(struct net_device *dev, __le64 device_addr, const struct ieee802154_llsec_device_key *key); int (*del_devkey)(struct net_device *dev, __le64 device_addr, const struct ieee802154_llsec_device_key *key); int (*add_seclevel)(struct net_device *dev, const struct ieee802154_llsec_seclevel *sl); int (*del_seclevel)(struct net_device *dev, const struct ieee802154_llsec_seclevel *sl); void (*lock_table)(struct net_device *dev); void (*get_table)(struct net_device *dev, struct ieee802154_llsec_table **t); void (*unlock_table)(struct net_device *dev); }; /* * This should be located at net_device->ml_priv * * get_phy should increment the reference counting on returned phy. * Use wpan_wpy_put to put that reference. */ struct ieee802154_mlme_ops { /* The following fields are optional (can be NULL). */ int (*assoc_req)(struct net_device *dev, struct ieee802154_addr *addr, u8 channel, u8 page, u8 cap); int (*assoc_resp)(struct net_device *dev, struct ieee802154_addr *addr, __le16 short_addr, u8 status); int (*disassoc_req)(struct net_device *dev, struct ieee802154_addr *addr, u8 reason); int (*start_req)(struct net_device *dev, struct ieee802154_addr *addr, u8 channel, u8 page, u8 bcn_ord, u8 sf_ord, u8 pan_coord, u8 blx, u8 coord_realign); int (*scan_req)(struct net_device *dev, u8 type, u32 channels, u8 page, u8 duration); int (*set_mac_params)(struct net_device *dev, const struct ieee802154_mac_params *params); void (*get_mac_params)(struct net_device *dev, struct ieee802154_mac_params *params); const struct ieee802154_llsec_ops *llsec; }; static inline struct ieee802154_mlme_ops * ieee802154_mlme_ops(const struct net_device *dev) { return dev->ml_priv; } #endif