Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 852cf918dcf2ae46468b425e679fbcbf0ea8fdbb 106 lines 3.7 kB view raw
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 * <jkmaline@cc.hut.fi> 7 * Copyright (c) 2002-2003, Jouni Malinen <jkmaline@cc.hut.fi> 8 * 9 * Adaption to a generic IEEE 802.11 stack by James Ketrenos 10 * <jketreno@linux.intel.com> 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/types.h> 27#include <linux/list.h> 28#include <asm/atomic.h> 29 30enum { 31 IEEE80211_CRYPTO_TKIP_COUNTERMEASURES = (1 << 0), 32}; 33 34struct sk_buff; 35struct module; 36 37struct ieee80211_crypto_ops { 38 const char *name; 39 struct list_head list; 40 41 /* init new crypto context (e.g., allocate private data space, 42 * select IV, etc.); returns NULL on failure or pointer to allocated 43 * private data on success */ 44 void *(*init) (int keyidx); 45 46 /* deinitialize crypto context and free allocated private data */ 47 void (*deinit) (void *priv); 48 49 int (*build_iv) (struct sk_buff * skb, int hdr_len, void *priv); 50 51 /* encrypt/decrypt return < 0 on error or >= 0 on success. The return 52 * value from decrypt_mpdu is passed as the keyidx value for 53 * decrypt_msdu. skb must have enough head and tail room for the 54 * encryption; if not, error will be returned; these functions are 55 * called for all MPDUs (i.e., fragments). 56 */ 57 int (*encrypt_mpdu) (struct sk_buff * skb, int hdr_len, void *priv); 58 int (*decrypt_mpdu) (struct sk_buff * skb, int hdr_len, void *priv); 59 60 /* These functions are called for full MSDUs, i.e. full frames. 61 * These can be NULL if full MSDU operations are not needed. */ 62 int (*encrypt_msdu) (struct sk_buff * skb, int hdr_len, void *priv); 63 int (*decrypt_msdu) (struct sk_buff * skb, int keyidx, int hdr_len, 64 void *priv); 65 66 int (*set_key) (void *key, int len, u8 * seq, void *priv); 67 int (*get_key) (void *key, int len, u8 * seq, void *priv); 68 69 /* procfs handler for printing out key information and possible 70 * statistics */ 71 char *(*print_stats) (char *p, void *priv); 72 73 /* Crypto specific flag get/set for configuration settings */ 74 unsigned long (*get_flags) (void *priv); 75 unsigned long (*set_flags) (unsigned long flags, void *priv); 76 77 /* maximum number of bytes added by encryption; encrypt buf is 78 * allocated with extra_prefix_len bytes, copy of in_buf, and 79 * extra_postfix_len; encrypt need not use all this space, but 80 * the result must start at the beginning of the buffer and correct 81 * length must be returned */ 82 int extra_mpdu_prefix_len, extra_mpdu_postfix_len; 83 int extra_msdu_prefix_len, extra_msdu_postfix_len; 84 85 struct module *owner; 86}; 87 88struct ieee80211_crypt_data { 89 struct list_head list; /* delayed deletion list */ 90 struct ieee80211_crypto_ops *ops; 91 void *priv; 92 atomic_t refcnt; 93}; 94 95struct ieee80211_device; 96 97int ieee80211_register_crypto_ops(struct ieee80211_crypto_ops *ops); 98int ieee80211_unregister_crypto_ops(struct ieee80211_crypto_ops *ops); 99struct ieee80211_crypto_ops *ieee80211_get_crypto_ops(const char *name); 100void ieee80211_crypt_deinit_entries(struct ieee80211_device *, int); 101void ieee80211_crypt_deinit_handler(unsigned long); 102void ieee80211_crypt_delayed_deinit(struct ieee80211_device *ieee, 103 struct ieee80211_crypt_data **crypt); 104void ieee80211_crypt_quiescing(struct ieee80211_device *ieee); 105 106#endif