summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJames Morris <jmorris@intercode.com.au>2003-01-08 07:59:28 -0800
committerJames Morris <jmorris@intercode.com.au>2003-01-08 07:59:28 -0800
commit3bab27b686268d83e97f25d2ea71efb51bbb03b4 (patch)
tree977c6942f63a6505c8ceb0bf7ea7ce9360f8120c /include
parente55ee9fdebf2eefc1bbfbe9e4b5560da7316288b (diff)
[IPSEC]: Clean up key manager algorithm handling.
Diffstat (limited to 'include')
-rw-r--r--include/linux/pfkeyv2.h26
-rw-r--r--include/net/xfrm.h41
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 */