Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
staging
rtl8187se
ieee80211
ieee80211_crypt.h
Go to the documentation of this file.
1
/*
2
* Original code based on Host AP (software wireless LAN access point) driver
3
* for Intersil Prism2/2.5/3.
4
*
5
* Copyright (c) 2001-2002, SSH Communications Security Corp and Jouni Malinen
6
* <
[email protected]
>
7
* Copyright (c) 2002-2003, Jouni Malinen <
[email protected]
>
8
*
9
* Adaption to a generic IEEE 802.11 stack by James Ketrenos
10
* <
[email protected]
>
11
*
12
* Copyright (c) 2004, Intel Corporation
13
*
14
* This program is free software; you can redistribute it and/or modify
15
* it under the terms of the GNU General Public License version 2 as
16
* published by the Free Software Foundation. See README and COPYING for
17
* more details.
18
*/
19
20
/*
21
* This file defines the interface to the ieee80211 crypto module.
22
*/
23
#ifndef IEEE80211_CRYPT_H
24
#define IEEE80211_CRYPT_H
25
26
#include <
linux/skbuff.h
>
27
28
struct
ieee80211_crypto_ops
{
29
const
char
*
name
;
30
31
/* init new crypto context (e.g., allocate private data space,
32
* select IV, etc.); returns NULL on failure or pointer to allocated
33
* private data on success */
34
void
* (*init)(
int
keyidx);
35
36
/* deinitialize crypto context and free allocated private data */
37
void
(*
deinit
)(
void
*
priv
);
38
39
/* encrypt/decrypt return < 0 on error or >= 0 on success. The return
40
* value from decrypt_mpdu is passed as the keyidx value for
41
* decrypt_msdu. skb must have enough head and tail room for the
42
* encryption; if not, error will be returned; these functions are
43
* called for all MPDUs (i.e., fragments).
44
*/
45
int
(*
encrypt_mpdu
)(
struct
sk_buff
*
skb
,
int
hdr_len
,
void
*
priv
);
46
int
(*
decrypt_mpdu
)(
struct
sk_buff
*
skb
,
int
hdr_len
,
void
*
priv
);
47
48
/* These functions are called for full MSDUs, i.e. full frames.
49
* These can be NULL if full MSDU operations are not needed. */
50
int
(*
encrypt_msdu
)(
struct
sk_buff
*
skb
,
int
hdr_len
,
void
*
priv
);
51
int
(*
decrypt_msdu
)(
struct
sk_buff
*
skb
,
int
keyidx,
int
hdr_len
,
52
void
*
priv
);
53
54
int
(*
set_key
)(
void
*
key
,
int
len
,
u8
*
seq
,
void
*
priv
);
55
int
(*
get_key
)(
void
*
key
,
int
len
,
u8
*
seq
,
void
*
priv
);
56
57
/* procfs handler for printing out key information and possible
58
* statistics */
59
char
* (*print_stats)(
char
*
p
,
void
*
priv
);
60
61
/* maximum number of bytes added by encryption; encrypt buf is
62
* allocated with extra_prefix_len bytes, copy of in_buf, and
63
* extra_postfix_len; encrypt need not use all this space, but
64
* the result must start at the beginning of the buffer and correct
65
* length must be returned */
66
int
extra_prefix_len
,
extra_postfix_len
;
67
68
struct
module
*
owner
;
69
};
70
71
struct
ieee80211_crypt_data
{
72
struct
list_head
list
;
/* delayed deletion list */
73
struct
ieee80211_crypto_ops
*
ops
;
74
void
*
priv
;
75
atomic_t
refcnt
;
76
};
77
78
int
ieee80211_register_crypto_ops
(
struct
ieee80211_crypto_ops
*ops);
79
int
ieee80211_unregister_crypto_ops
(
struct
ieee80211_crypto_ops
*ops);
80
struct
ieee80211_crypto_ops
*
ieee80211_get_crypto_ops
(
const
char
*
name
);
81
void
ieee80211_crypt_deinit_entries
(
struct
ieee80211_device
*,
int
);
82
void
ieee80211_crypt_deinit_handler
(
unsigned
long
);
83
void
ieee80211_crypt_delayed_deinit
(
struct
ieee80211_device
*ieee,
84
struct
ieee80211_crypt_data
**crypt);
85
86
#endif
Generated on Thu Jan 10 2013 14:30:25 for Linux Kernel by
1.8.2