diff options
| author | James Morris <jmorris@intercode.com.au> | 2003-01-08 07:59:28 -0800 |
|---|---|---|
| committer | James Morris <jmorris@intercode.com.au> | 2003-01-08 07:59:28 -0800 |
| commit | 3bab27b686268d83e97f25d2ea71efb51bbb03b4 (patch) | |
| tree | 977c6942f63a6505c8ceb0bf7ea7ce9360f8120c /include | |
| parent | e55ee9fdebf2eefc1bbfbe9e4b5560da7316288b (diff) | |
[IPSEC]: Clean up key manager algorithm handling.
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/pfkeyv2.h | 26 | ||||
| -rw-r--r-- | include/net/xfrm.h | 41 |
2 files changed, 58 insertions, 9 deletions
diff --git a/include/linux/pfkeyv2.h b/include/linux/pfkeyv2.h index ff599ee1cf3d..c6e4e6e29f10 100644 --- a/include/linux/pfkeyv2.h +++ b/include/linux/pfkeyv2.h @@ -242,17 +242,25 @@ struct sadb_x_ipsecrequest { #define SADB_SATYPE_MAX 9 /* Authentication algorithms */ -#define SADB_AALG_NONE 0 -#define SADB_AALG_MD5HMAC 2 -#define SADB_AALG_SHA1HMAC 3 -#define SADB_AALG_MAX 3 +#define SADB_AALG_NONE 0 +#define SADB_AALG_MD5HMAC 2 +#define SADB_AALG_SHA1HMAC 3 +#define SADB_X_AALG_SHA2_256HMAC 5 +#define SADB_X_AALG_SHA2_384HMAC 6 +#define SADB_X_AALG_SHA2_512HMAC 7 +#define SADB_X_AALG_RIPEMD160HMAC 8 +#define SADB_X_AALG_NULL 251 /* kame */ +#define SADB_AALG_MAX 251 /* Encryption algorithms */ -#define SADB_EALG_NONE 0 -#define SADB_EALG_DESCBC 1 -#define SADB_EALG_3DESCBC 2 -#define SADB_EALG_NULL 11 -#define SADB_EALG_MAX 11 +#define SADB_EALG_NONE 0 +#define SADB_EALG_DESCBC 1 +#define SADB_EALG_3DESCBC 2 +#define SADB_X_EALG_CASTCBC 6 +#define SADB_X_EALG_BLOWFISHCBC 7 +#define SADB_EALG_NULL 11 +#define SADB_X_EALG_AESCBC 12 +#define SADB_EALG_MAX 12 /* Extension Header values */ #define SADB_EXT_RESERVED 0 diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 37cb371e930a..82d2187eeb2a 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -1,13 +1,19 @@ +#ifndef _NET_XFRM_H +#define _NET_XFRM_H + #include <linux/xfrm.h> #include <linux/spinlock.h> #include <linux/list.h> #include <linux/skbuff.h> #include <linux/netdevice.h> #include <linux/crypto.h> +#include <linux/pfkeyv2.h> #include <net/dst.h> #include <net/route.h> +#define XFRM_ALIGN8(len) (((len) + 7) & ~7) + extern struct semaphore xfrm_cfg_sem; /* Organization of SPD aka "XFRM rules" @@ -347,6 +353,29 @@ static inline void xfrm_sk_free_policy(struct sock *sk) } } +/* + * xfrm algorithm information + */ +struct xfrm_algo_auth_info { + u16 icv_truncbits; + u16 icv_fullbits; +}; + +struct xfrm_algo_encr_info { + u16 blockbits; + u16 defkeybits; +}; + +struct xfrm_algo_desc { + char *name; + u8 available:1; + union { + struct xfrm_algo_auth_info auth; + struct xfrm_algo_encr_info encr; + } uinfo; + struct sadb_alg desc; +}; + extern void xfrm_state_init(void); extern void xfrm_input_init(void); extern int xfrm_state_walk(u8 proto, int (*func)(struct xfrm_state *, int, void*), void *); @@ -385,3 +414,15 @@ extern wait_queue_head_t km_waitq; extern void km_warn_expired(struct xfrm_state *x); extern void km_expired(struct xfrm_state *x); extern int km_query(struct xfrm_state *x, struct xfrm_tmpl *, struct xfrm_policy *pol); + +extern void xfrm_probe_algs(void); +extern int xfrm_count_auth_supported(void); +extern int xfrm_count_enc_supported(void); +extern struct xfrm_algo_desc *xfrm_aalg_get_byidx(unsigned int idx); +extern struct xfrm_algo_desc *xfrm_ealg_get_byidx(unsigned int idx); +extern struct xfrm_algo_desc *xfrm_aalg_get_byid(int alg_id); +extern struct xfrm_algo_desc *xfrm_ealg_get_byid(int alg_id); +extern struct xfrm_algo_desc *xfrm_aalg_get_byname(char *name); +extern struct xfrm_algo_desc *xfrm_ealg_get_byname(char *name); + +#endif /* _NET_XFRM_H */ |
