]> err.no Git - linux-2.6/blobdiff - include/linux/xfrm.h
Merge branch 'for-linus' of git://linux-nfs.org/~bfields/linux
[linux-2.6] / include / linux / xfrm.h
index c237fe3af8ceec333de58f2359cafb0ee7475c22..e31b8c84f2c9da7e865d379d32ccabdc9bd463cb 100644 (file)
@@ -91,8 +91,15 @@ struct xfrm_replay_state
 };
 
 struct xfrm_algo {
+       char            alg_name[64];
+       unsigned int    alg_key_len;    /* in bits */
+       char            alg_key[0];
+};
+
+struct xfrm_algo_aead {
        char    alg_name[64];
-       int     alg_key_len;    /* in bits */
+       int     alg_key_len;    /* in bits */
+       int     alg_icv_len;    /* in bits */
        char    alg_key[0];
 };
 
@@ -114,6 +121,7 @@ enum
        XFRM_POLICY_IN  = 0,
        XFRM_POLICY_OUT = 1,
        XFRM_POLICY_FWD = 2,
+       XFRM_POLICY_MASK = 3,
        XFRM_POLICY_MAX = 3
 };
 
@@ -269,6 +277,7 @@ enum xfrm_attr_type_t {
        XFRMA_LASTUSED,
        XFRMA_POLICY_TYPE,      /* struct xfrm_userpolicy_type */
        XFRMA_MIGRATE,
+       XFRMA_ALG_AEAD,         /* struct xfrm_algo_aead */
        __XFRMA_MAX
 
 #define XFRMA_MAX (__XFRMA_MAX - 1)
@@ -288,36 +297,29 @@ struct xfrmu_sadhinfo {
        __u32 sadhmcnt; /* max allowed hash bkts */
 };
 
-/* SPD Table filter flags  */
-enum xfrm_spd_ftype_t {
-       XFRM_SPD_UNSPEC,
-       XFRM_SPD_HMASK=1,
-       XFRM_SPD_HMAX=2,
-       XFRM_SPD_ICNT=4,
-       XFRM_SPD_OCNT=8,
-       XFRM_SPD_FCNT=16,
-       XFRM_SPD_ISCNT=32,
-       XFRM_SPD_OSCNT=64,
-       XFRM_SPD_FSCNT=128,
-       __XFRM_SPD_MAX
-
-#define XFRM_SPD_MAX (__XFRM_SPD_MAX - 1)
-};
 enum xfrm_spdattr_type_t {
        XFRMA_SPD_UNSPEC,
-       XFRMA_SPDHMASK,
-       XFRMA_SPDHMAX,
-       XFRMA_SPDICNT,
-       XFRMA_SPDOCNT,
-       XFRMA_SPDFCNT,
-       XFRMA_SPDISCNT,
-       XFRMA_SPDOSCNT,
-       XFRMA_SPDFSCNT,
+       XFRMA_SPD_INFO,
+       XFRMA_SPD_HINFO,
        __XFRMA_SPD_MAX
 
 #define XFRMA_SPD_MAX (__XFRMA_SPD_MAX - 1)
 };
 
+struct xfrmu_spdinfo {
+       __u32 incnt;
+       __u32 outcnt;
+       __u32 fwdcnt;
+       __u32 inscnt;
+       __u32 outscnt;
+       __u32 fwdscnt;
+};
+
+struct xfrmu_spdhinfo {
+       __u32 spdhcnt;
+       __u32 spdhmcnt;
+};
+
 struct xfrm_usersa_info {
        struct xfrm_selector            sel;
        struct xfrm_id                  id;
@@ -335,6 +337,7 @@ struct xfrm_usersa_info {
 #define XFRM_STATE_DECAP_DSCP  2
 #define XFRM_STATE_NOPMTUDISC  4
 #define XFRM_STATE_WILDRECV    8
+#define XFRM_STATE_ICMP                16
 };
 
 struct xfrm_usersa_id {
@@ -369,6 +372,8 @@ struct xfrm_userpolicy_info {
 #define XFRM_POLICY_BLOCK      1
        __u8                            flags;
 #define XFRM_POLICY_LOCALOK    1       /* Allow user to override global policy */
+       /* Automatically expand selector to include matching ICMP payloads. */
+#define XFRM_POLICY_ICMP       2
        __u8                            share;
 };