power: tps80031: battery-charger: register as mfd sub device
[linux-2.6.git] / include / linux / xfrm.h
index e31b8c8..22e61fd 100644 (file)
@@ -10,8 +10,7 @@
 /* Structure to encapsulate addresses. I do not want to use
  * "standard" structure. My apologies.
  */
-typedef union
-{
+typedef union {
        __be32          a4;
        __be32          a6[4];
 } xfrm_address_t;
@@ -20,8 +19,7 @@ typedef union
  * the state by (spi,daddr,ah/esp) or to store information about
  * spi, protocol and tunnel address on output.
  */
-struct xfrm_id
-{
+struct xfrm_id {
        xfrm_address_t  daddr;
        __be32          spi;
        __u8            proto;
@@ -45,8 +43,7 @@ struct xfrm_sec_ctx {
 
 /* Selector, used as selector both on policy rules (SPD) and SAs. */
 
-struct xfrm_selector
-{
+struct xfrm_selector {
        xfrm_address_t  daddr;
        xfrm_address_t  saddr;
        __be16  dport;
@@ -58,13 +55,12 @@ struct xfrm_selector
        __u8    prefixlen_s;
        __u8    proto;
        int     ifindex;
-       uid_t   user;
+       __kernel_uid32_t        user;
 };
 
 #define XFRM_INF (~(__u64)0)
 
-struct xfrm_lifetime_cfg
-{
+struct xfrm_lifetime_cfg {
        __u64   soft_byte_limit;
        __u64   hard_byte_limit;
        __u64   soft_packet_limit;
@@ -75,32 +71,47 @@ struct xfrm_lifetime_cfg
        __u64   hard_use_expires_seconds;
 };
 
-struct xfrm_lifetime_cur
-{
+struct xfrm_lifetime_cur {
        __u64   bytes;
        __u64   packets;
        __u64   add_time;
        __u64   use_time;
 };
 
-struct xfrm_replay_state
-{
+struct xfrm_replay_state {
        __u32   oseq;
        __u32   seq;
        __u32   bitmap;
 };
 
+struct xfrm_replay_state_esn {
+       unsigned int    bmp_len;
+       __u32           oseq;
+       __u32           seq;
+       __u32           oseq_hi;
+       __u32           seq_hi;
+       __u32           replay_window;
+       __u32           bmp[0];
+};
+
 struct xfrm_algo {
        char            alg_name[64];
        unsigned int    alg_key_len;    /* in bits */
        char            alg_key[0];
 };
 
+struct xfrm_algo_auth {
+       char            alg_name[64];
+       unsigned int    alg_key_len;    /* in bits */
+       unsigned int    alg_trunc_len;  /* in bits */
+       char            alg_key[0];
+};
+
 struct xfrm_algo_aead {
-       char    alg_name[64];
-       int     alg_key_len;    /* in bits */
-       int     alg_icv_len;    /* in bits */
-       char    alg_key[0];
+       char            alg_name[64];
+       unsigned int    alg_key_len;    /* in bits */
+       unsigned int    alg_icv_len;    /* in bits */
+       char            alg_key[0];
 };
 
 struct xfrm_stats {
@@ -109,15 +120,14 @@ struct xfrm_stats {
        __u32   integrity_failed;
 };
 
-enum
-{
+enum {
        XFRM_POLICY_TYPE_MAIN   = 0,
        XFRM_POLICY_TYPE_SUB    = 1,
-       XFRM_POLICY_TYPE_MAX    = 2
+       XFRM_POLICY_TYPE_MAX    = 2,
+       XFRM_POLICY_TYPE_ANY    = 255
 };
 
-enum
-{
+enum {
        XFRM_POLICY_IN  = 0,
        XFRM_POLICY_OUT = 1,
        XFRM_POLICY_FWD = 2,
@@ -125,8 +135,7 @@ enum
        XFRM_POLICY_MAX = 3
 };
 
-enum
-{
+enum {
        XFRM_SHARE_ANY,         /* No limitations */
        XFRM_SHARE_SESSION,     /* For this session only */
        XFRM_SHARE_USER,        /* For this user only */
@@ -198,6 +207,9 @@ enum {
 #define XFRM_MSG_NEWSPDINFO XFRM_MSG_NEWSPDINFO
        XFRM_MSG_GETSPDINFO,
 #define XFRM_MSG_GETSPDINFO XFRM_MSG_GETSPDINFO
+
+       XFRM_MSG_MAPPING,
+#define XFRM_MSG_MAPPING XFRM_MSG_MAPPING
        __XFRM_MSG_MAX
 };
 #define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1)
@@ -265,8 +277,8 @@ enum xfrm_attr_type_t {
        XFRMA_ALG_COMP,         /* struct xfrm_algo */
        XFRMA_ENCAP,            /* struct xfrm_algo + struct xfrm_encap_tmpl */
        XFRMA_TMPL,             /* 1 or more struct xfrm_user_tmpl */
-       XFRMA_SA,
-       XFRMA_POLICY,
+       XFRMA_SA,               /* struct xfrm_usersa_info  */
+       XFRMA_POLICY,           /*struct xfrm_userpolicy_info */
        XFRMA_SEC_CTX,          /* struct xfrm_sec_ctx */
        XFRMA_LTIME_VAL,
        XFRMA_REPLAY_VAL,
@@ -274,15 +286,25 @@ enum xfrm_attr_type_t {
        XFRMA_ETIMER_THRESH,
        XFRMA_SRCADDR,          /* xfrm_address_t */
        XFRMA_COADDR,           /* xfrm_address_t */
-       XFRMA_LASTUSED,
+       XFRMA_LASTUSED,         /* unsigned long  */
        XFRMA_POLICY_TYPE,      /* struct xfrm_userpolicy_type */
        XFRMA_MIGRATE,
        XFRMA_ALG_AEAD,         /* struct xfrm_algo_aead */
+       XFRMA_KMADDRESS,        /* struct xfrm_user_kmaddress */
+       XFRMA_ALG_AUTH_TRUNC,   /* struct xfrm_algo_auth */
+       XFRMA_MARK,             /* struct xfrm_mark */
+       XFRMA_TFCPAD,           /* __u32 */
+       XFRMA_REPLAY_ESN_VAL,   /* struct xfrm_replay_esn */
        __XFRMA_MAX
 
 #define XFRMA_MAX (__XFRMA_MAX - 1)
 };
 
+struct xfrm_mark {
+       __u32           v; /* value */
+       __u32           m; /* mask */
+};
+
 enum xfrm_sadattr_type_t {
        XFRMA_SAD_UNSPEC,
        XFRMA_SAD_CNT,
@@ -338,6 +360,9 @@ struct xfrm_usersa_info {
 #define XFRM_STATE_NOPMTUDISC  4
 #define XFRM_STATE_WILDRECV    8
 #define XFRM_STATE_ICMP                16
+#define XFRM_STATE_AF_UNSPEC   32
+#define XFRM_STATE_ALIGN4      64
+#define XFRM_STATE_ESN         128
 };
 
 struct xfrm_usersa_id {
@@ -413,6 +438,15 @@ struct xfrm_user_report {
        struct xfrm_selector            sel;
 };
 
+/* Used by MIGRATE to pass addresses IKE should use to perform
+ * SA negotiation with the peer */
+struct xfrm_user_kmaddress {
+       xfrm_address_t                  local;
+       xfrm_address_t                  remote;
+       __u32                           reserved;
+       __u16                           family;
+};
+
 struct xfrm_user_migrate {
        xfrm_address_t                  old_daddr;
        xfrm_address_t                  old_saddr;
@@ -426,6 +460,15 @@ struct xfrm_user_migrate {
        __u16                           new_family;
 };
 
+struct xfrm_user_mapping {
+       struct xfrm_usersa_id           id;
+       __u32                           reqid;
+       xfrm_address_t                  old_saddr;
+       xfrm_address_t                  new_saddr;
+       __be16                          old_sport;
+       __be16                          new_sport;
+};
+
 #ifndef __KERNEL__
 /* backwards compatibility for userspace */
 #define XFRMGRP_ACQUIRE                1
@@ -452,6 +495,8 @@ enum xfrm_nlgroups {
 #define XFRMNLGRP_REPORT       XFRMNLGRP_REPORT
        XFRMNLGRP_MIGRATE,
 #define XFRMNLGRP_MIGRATE      XFRMNLGRP_MIGRATE
+       XFRMNLGRP_MAPPING,
+#define XFRMNLGRP_MAPPING      XFRMNLGRP_MAPPING
        __XFRMNLGRP_MAX
 };
 #define XFRMNLGRP_MAX  (__XFRMNLGRP_MAX - 1)