Annotation of embedaddon/strongswan/src/include/linux/pfkeyv2.h, revision 1.1

1.1     ! misho       1: /* PF_KEY user interface, this is defined by rfc2367 so
        !             2:  * do not make arbitrary modifications or else this header
        !             3:  * file will not be compliant.
        !             4:  */
        !             5: 
        !             6: #ifndef _LINUX_PFKEY2_H
        !             7: #define _LINUX_PFKEY2_H
        !             8: 
        !             9: #include <linux/types.h>
        !            10: 
        !            11: #define PF_KEY_V2              2
        !            12: #define PFKEYV2_REVISION       199806L
        !            13: 
        !            14: struct sadb_msg {
        !            15:        uint8_t         sadb_msg_version;
        !            16:        uint8_t         sadb_msg_type;
        !            17:        uint8_t         sadb_msg_errno;
        !            18:        uint8_t         sadb_msg_satype;
        !            19:        uint16_t        sadb_msg_len;
        !            20:        uint16_t        sadb_msg_reserved;
        !            21:        uint32_t        sadb_msg_seq;
        !            22:        uint32_t        sadb_msg_pid;
        !            23: } __attribute__((packed));
        !            24: /* sizeof(struct sadb_msg) == 16 */
        !            25: 
        !            26: struct sadb_ext {
        !            27:        uint16_t        sadb_ext_len;
        !            28:        uint16_t        sadb_ext_type;
        !            29: } __attribute__((packed));
        !            30: /* sizeof(struct sadb_ext) == 4 */
        !            31: 
        !            32: struct sadb_sa {
        !            33:        uint16_t        sadb_sa_len;
        !            34:        uint16_t        sadb_sa_exttype;
        !            35:        uint32_t        sadb_sa_spi;
        !            36:        uint8_t         sadb_sa_replay;
        !            37:        uint8_t         sadb_sa_state;
        !            38:        uint8_t         sadb_sa_auth;
        !            39:        uint8_t         sadb_sa_encrypt;
        !            40:        uint32_t        sadb_sa_flags;
        !            41: } __attribute__((packed));
        !            42: /* sizeof(struct sadb_sa) == 16 */
        !            43: 
        !            44: struct sadb_lifetime {
        !            45:        uint16_t        sadb_lifetime_len;
        !            46:        uint16_t        sadb_lifetime_exttype;
        !            47:        uint32_t        sadb_lifetime_allocations;
        !            48:        uint64_t        sadb_lifetime_bytes;
        !            49:        uint64_t        sadb_lifetime_addtime;
        !            50:        uint64_t        sadb_lifetime_usetime;
        !            51: } __attribute__((packed));
        !            52: /* sizeof(struct sadb_lifetime) == 32 */
        !            53: 
        !            54: struct sadb_address {
        !            55:        uint16_t        sadb_address_len;
        !            56:        uint16_t        sadb_address_exttype;
        !            57:        uint8_t         sadb_address_proto;
        !            58:        uint8_t         sadb_address_prefixlen;
        !            59:        uint16_t        sadb_address_reserved;
        !            60: } __attribute__((packed));
        !            61: /* sizeof(struct sadb_address) == 8 */
        !            62: 
        !            63: struct sadb_key {
        !            64:        uint16_t        sadb_key_len;
        !            65:        uint16_t        sadb_key_exttype;
        !            66:        uint16_t        sadb_key_bits;
        !            67:        uint16_t        sadb_key_reserved;
        !            68: } __attribute__((packed));
        !            69: /* sizeof(struct sadb_key) == 8 */
        !            70: 
        !            71: struct sadb_ident {
        !            72:        uint16_t        sadb_ident_len;
        !            73:        uint16_t        sadb_ident_exttype;
        !            74:        uint16_t        sadb_ident_type;
        !            75:        uint16_t        sadb_ident_reserved;
        !            76:        uint64_t        sadb_ident_id;
        !            77: } __attribute__((packed));
        !            78: /* sizeof(struct sadb_ident) == 16 */
        !            79: 
        !            80: struct sadb_sens {
        !            81:        uint16_t        sadb_sens_len;
        !            82:        uint16_t        sadb_sens_exttype;
        !            83:        uint32_t        sadb_sens_dpd;
        !            84:        uint8_t         sadb_sens_sens_level;
        !            85:        uint8_t         sadb_sens_sens_len;
        !            86:        uint8_t         sadb_sens_integ_level;
        !            87:        uint8_t         sadb_sens_integ_len;
        !            88:        uint32_t        sadb_sens_reserved;
        !            89: } __attribute__((packed));
        !            90: /* sizeof(struct sadb_sens) == 16 */
        !            91: 
        !            92: /* followed by:
        !            93:        uint64_t        sadb_sens_bitmap[sens_len];
        !            94:        uint64_t        sadb_integ_bitmap[integ_len];  */
        !            95: 
        !            96: struct sadb_prop {
        !            97:        uint16_t        sadb_prop_len;
        !            98:        uint16_t        sadb_prop_exttype;
        !            99:        uint8_t         sadb_prop_replay;
        !           100:        uint8_t         sadb_prop_reserved[3];
        !           101: } __attribute__((packed));
        !           102: /* sizeof(struct sadb_prop) == 8 */
        !           103: 
        !           104: /* followed by:
        !           105:        struct sadb_comb sadb_combs[(sadb_prop_len +
        !           106:                sizeof(uint64_t) - sizeof(struct sadb_prop)) /
        !           107:                sizeof(struct sadb_comb)]; */
        !           108: 
        !           109: struct sadb_comb {
        !           110:        uint8_t         sadb_comb_auth;
        !           111:        uint8_t         sadb_comb_encrypt;
        !           112:        uint16_t        sadb_comb_flags;
        !           113:        uint16_t        sadb_comb_auth_minbits;
        !           114:        uint16_t        sadb_comb_auth_maxbits;
        !           115:        uint16_t        sadb_comb_encrypt_minbits;
        !           116:        uint16_t        sadb_comb_encrypt_maxbits;
        !           117:        uint32_t        sadb_comb_reserved;
        !           118:        uint32_t        sadb_comb_soft_allocations;
        !           119:        uint32_t        sadb_comb_hard_allocations;
        !           120:        uint64_t        sadb_comb_soft_bytes;
        !           121:        uint64_t        sadb_comb_hard_bytes;
        !           122:        uint64_t        sadb_comb_soft_addtime;
        !           123:        uint64_t        sadb_comb_hard_addtime;
        !           124:        uint64_t        sadb_comb_soft_usetime;
        !           125:        uint64_t        sadb_comb_hard_usetime;
        !           126: } __attribute__((packed));
        !           127: /* sizeof(struct sadb_comb) == 72 */
        !           128: 
        !           129: struct sadb_supported {
        !           130:        uint16_t        sadb_supported_len;
        !           131:        uint16_t        sadb_supported_exttype;
        !           132:        uint32_t        sadb_supported_reserved;
        !           133: } __attribute__((packed));
        !           134: /* sizeof(struct sadb_supported) == 8 */
        !           135: 
        !           136: /* followed by:
        !           137:        struct sadb_alg sadb_algs[(sadb_supported_len +
        !           138:                sizeof(uint64_t) - sizeof(struct sadb_supported)) /
        !           139:                sizeof(struct sadb_alg)]; */
        !           140: 
        !           141: struct sadb_alg {
        !           142:        uint8_t         sadb_alg_id;
        !           143:        uint8_t         sadb_alg_ivlen;
        !           144:        uint16_t        sadb_alg_minbits;
        !           145:        uint16_t        sadb_alg_maxbits;
        !           146:        uint16_t        sadb_alg_reserved;
        !           147: } __attribute__((packed));
        !           148: /* sizeof(struct sadb_alg) == 8 */
        !           149: 
        !           150: struct sadb_spirange {
        !           151:        uint16_t        sadb_spirange_len;
        !           152:        uint16_t        sadb_spirange_exttype;
        !           153:        uint32_t        sadb_spirange_min;
        !           154:        uint32_t        sadb_spirange_max;
        !           155:        uint32_t        sadb_spirange_reserved;
        !           156: } __attribute__((packed));
        !           157: /* sizeof(struct sadb_spirange) == 16 */
        !           158: 
        !           159: struct sadb_x_kmprivate {
        !           160:        uint16_t        sadb_x_kmprivate_len;
        !           161:        uint16_t        sadb_x_kmprivate_exttype;
        !           162:        uint32_t        sadb_x_kmprivate_reserved;
        !           163: } __attribute__((packed));
        !           164: /* sizeof(struct sadb_x_kmprivate) == 8 */
        !           165: 
        !           166: struct sadb_x_sa2 {
        !           167:        uint16_t        sadb_x_sa2_len;
        !           168:        uint16_t        sadb_x_sa2_exttype;
        !           169:        uint8_t         sadb_x_sa2_mode;
        !           170:        uint8_t         sadb_x_sa2_reserved1;
        !           171:        uint16_t        sadb_x_sa2_reserved2;
        !           172:        uint32_t        sadb_x_sa2_sequence;
        !           173:        uint32_t        sadb_x_sa2_reqid;
        !           174: } __attribute__((packed));
        !           175: /* sizeof(struct sadb_x_sa2) == 16 */
        !           176: 
        !           177: struct sadb_x_policy {
        !           178:        uint16_t        sadb_x_policy_len;
        !           179:        uint16_t        sadb_x_policy_exttype;
        !           180:        uint16_t        sadb_x_policy_type;
        !           181:        uint8_t         sadb_x_policy_dir;
        !           182:        uint8_t         sadb_x_policy_reserved;
        !           183:        uint32_t        sadb_x_policy_id;
        !           184:        uint32_t        sadb_x_policy_priority;
        !           185: } __attribute__((packed));
        !           186: /* sizeof(struct sadb_x_policy) == 16 */
        !           187: 
        !           188: struct sadb_x_ipsecrequest {
        !           189:        uint16_t        sadb_x_ipsecrequest_len;
        !           190:        uint16_t        sadb_x_ipsecrequest_proto;
        !           191:        uint8_t         sadb_x_ipsecrequest_mode;
        !           192:        uint8_t         sadb_x_ipsecrequest_level;
        !           193:        uint16_t        sadb_x_ipsecrequest_reserved1;
        !           194:        uint32_t        sadb_x_ipsecrequest_reqid;
        !           195:        uint32_t        sadb_x_ipsecrequest_reserved2;
        !           196: } __attribute__((packed));
        !           197: /* sizeof(struct sadb_x_ipsecrequest) == 16 */
        !           198: 
        !           199: /* This defines the TYPE of Nat Traversal in use.  Currently only one
        !           200:  * type of NAT-T is supported, draft-ietf-ipsec-udp-encaps-06
        !           201:  */
        !           202: struct sadb_x_nat_t_type {
        !           203:        uint16_t        sadb_x_nat_t_type_len;
        !           204:        uint16_t        sadb_x_nat_t_type_exttype;
        !           205:        uint8_t         sadb_x_nat_t_type_type;
        !           206:        uint8_t         sadb_x_nat_t_type_reserved[3];
        !           207: } __attribute__((packed));
        !           208: /* sizeof(struct sadb_x_nat_t_type) == 8 */
        !           209: 
        !           210: /* Pass a NAT Traversal port (Source or Dest port) */
        !           211: struct sadb_x_nat_t_port {
        !           212:        uint16_t        sadb_x_nat_t_port_len;
        !           213:        uint16_t        sadb_x_nat_t_port_exttype;
        !           214:        uint16_t        sadb_x_nat_t_port_port;
        !           215:        uint16_t        sadb_x_nat_t_port_reserved;
        !           216: } __attribute__((packed));
        !           217: /* sizeof(struct sadb_x_nat_t_port) == 8 */
        !           218: 
        !           219: /* Generic LSM security context */
        !           220: struct sadb_x_sec_ctx {
        !           221:        uint16_t        sadb_x_sec_len;
        !           222:        uint16_t        sadb_x_sec_exttype;
        !           223:        uint8_t         sadb_x_ctx_alg;  /* LSMs: e.g., selinux == 1 */
        !           224:        uint8_t         sadb_x_ctx_doi;
        !           225:        uint16_t        sadb_x_ctx_len;
        !           226: } __attribute__((packed));
        !           227: /* sizeof(struct sadb_sec_ctx) = 8 */
        !           228: 
        !           229: /* Used by MIGRATE to pass addresses IKE will use to perform
        !           230:  * negotiation with the peer */
        !           231: struct sadb_x_kmaddress {
        !           232:        uint16_t        sadb_x_kmaddress_len;
        !           233:        uint16_t        sadb_x_kmaddress_exttype;
        !           234:        uint32_t        sadb_x_kmaddress_reserved;
        !           235: } __attribute__((packed));
        !           236: /* sizeof(struct sadb_x_kmaddress) == 8 */
        !           237: 
        !           238: /* Message types */
        !           239: #define SADB_RESERVED          0
        !           240: #define SADB_GETSPI            1
        !           241: #define SADB_UPDATE            2
        !           242: #define SADB_ADD               3
        !           243: #define SADB_DELETE            4
        !           244: #define SADB_GET               5
        !           245: #define SADB_ACQUIRE           6
        !           246: #define SADB_REGISTER          7
        !           247: #define SADB_EXPIRE            8
        !           248: #define SADB_FLUSH             9
        !           249: #define SADB_DUMP              10
        !           250: #define SADB_X_PROMISC         11
        !           251: #define SADB_X_PCHANGE         12
        !           252: #define SADB_X_SPDUPDATE       13
        !           253: #define SADB_X_SPDADD          14
        !           254: #define SADB_X_SPDDELETE       15
        !           255: #define SADB_X_SPDGET          16
        !           256: #define SADB_X_SPDACQUIRE      17
        !           257: #define SADB_X_SPDDUMP         18
        !           258: #define SADB_X_SPDFLUSH                19
        !           259: #define SADB_X_SPDSETIDX       20
        !           260: #define SADB_X_SPDEXPIRE       21
        !           261: #define SADB_X_SPDDELETE2      22
        !           262: #define SADB_X_NAT_T_NEW_MAPPING       23
        !           263: #define SADB_X_MIGRATE         24
        !           264: #define SADB_MAX               24
        !           265: 
        !           266: /* Security Association flags */
        !           267: #define SADB_SAFLAGS_PFS       1
        !           268: #define SADB_SAFLAGS_NOPMTUDISC        0x20000000
        !           269: #define SADB_SAFLAGS_DECAP_DSCP        0x40000000
        !           270: #define SADB_SAFLAGS_NOECN     0x80000000
        !           271: 
        !           272: /* Security Association states */
        !           273: #define SADB_SASTATE_LARVAL    0
        !           274: #define SADB_SASTATE_MATURE    1
        !           275: #define SADB_SASTATE_DYING     2
        !           276: #define SADB_SASTATE_DEAD      3
        !           277: #define SADB_SASTATE_MAX       3
        !           278: 
        !           279: /* Security Association types */
        !           280: #define SADB_SATYPE_UNSPEC     0
        !           281: #define SADB_SATYPE_AH         2
        !           282: #define SADB_SATYPE_ESP                3
        !           283: #define SADB_SATYPE_RSVP       5
        !           284: #define SADB_SATYPE_OSPFV2     6
        !           285: #define SADB_SATYPE_RIPV2      7
        !           286: #define SADB_SATYPE_MIP                8
        !           287: #define SADB_X_SATYPE_IPCOMP   9
        !           288: #define SADB_SATYPE_MAX                9
        !           289: 
        !           290: /* Authentication algorithms */
        !           291: #define SADB_AALG_NONE                 0
        !           292: #define SADB_AALG_MD5HMAC              2
        !           293: #define SADB_AALG_SHA1HMAC             3
        !           294: #define SADB_X_AALG_SHA2_256HMAC       5
        !           295: #define SADB_X_AALG_SHA2_384HMAC       6
        !           296: #define SADB_X_AALG_SHA2_512HMAC       7
        !           297: #define SADB_X_AALG_RIPEMD160HMAC      8
        !           298: #define SADB_X_AALG_AES_XCBC_MAC       9
        !           299: #define SADB_X_AALG_NULL               251     /* kame */
        !           300: #define SADB_AALG_MAX                  251
        !           301: 
        !           302: /* Encryption algorithms */
        !           303: #define SADB_EALG_NONE                 0
        !           304: #define SADB_EALG_DESCBC               2
        !           305: #define SADB_EALG_3DESCBC              3
        !           306: #define SADB_X_EALG_CASTCBC            6
        !           307: #define SADB_X_EALG_BLOWFISHCBC                7
        !           308: #define SADB_EALG_NULL                 11
        !           309: #define SADB_X_EALG_AESCBC             12
        !           310: #define SADB_X_EALG_AESCTR             13
        !           311: #define SADB_X_EALG_AES_CCM_ICV8       14
        !           312: #define SADB_X_EALG_AES_CCM_ICV12      15
        !           313: #define SADB_X_EALG_AES_CCM_ICV16      16
        !           314: #define SADB_X_EALG_AES_GCM_ICV8       18
        !           315: #define SADB_X_EALG_AES_GCM_ICV12      19
        !           316: #define SADB_X_EALG_AES_GCM_ICV16      20
        !           317: #define SADB_X_EALG_CAMELLIACBC                22
        !           318: #define SADB_X_EALG_NULL_AES_GMAC      23
        !           319: #define SADB_EALG_MAX                   253 /* last EALG */
        !           320: /* private allocations should use 249-255 (RFC2407) */
        !           321: #define SADB_X_EALG_SERPENTCBC  252     /* draft-ietf-ipsec-ciph-aes-cbc-00 */
        !           322: #define SADB_X_EALG_TWOFISHCBC  253     /* draft-ietf-ipsec-ciph-aes-cbc-00 */
        !           323: 
        !           324: /* Compression algorithms */
        !           325: #define SADB_X_CALG_NONE               0
        !           326: #define SADB_X_CALG_OUI                        1
        !           327: #define SADB_X_CALG_DEFLATE            2
        !           328: #define SADB_X_CALG_LZS                        3
        !           329: #define SADB_X_CALG_LZJH               4
        !           330: #define SADB_X_CALG_MAX                        4
        !           331: 
        !           332: /* Extension Header values */
        !           333: #define SADB_EXT_RESERVED              0
        !           334: #define SADB_EXT_SA                    1
        !           335: #define SADB_EXT_LIFETIME_CURRENT      2
        !           336: #define SADB_EXT_LIFETIME_HARD         3
        !           337: #define SADB_EXT_LIFETIME_SOFT         4
        !           338: #define SADB_EXT_ADDRESS_SRC           5
        !           339: #define SADB_EXT_ADDRESS_DST           6
        !           340: #define SADB_EXT_ADDRESS_PROXY         7
        !           341: #define SADB_EXT_KEY_AUTH              8
        !           342: #define SADB_EXT_KEY_ENCRYPT           9
        !           343: #define SADB_EXT_IDENTITY_SRC          10
        !           344: #define SADB_EXT_IDENTITY_DST          11
        !           345: #define SADB_EXT_SENSITIVITY           12
        !           346: #define SADB_EXT_PROPOSAL              13
        !           347: #define SADB_EXT_SUPPORTED_AUTH                14
        !           348: #define SADB_EXT_SUPPORTED_ENCRYPT     15
        !           349: #define SADB_EXT_SPIRANGE              16
        !           350: #define SADB_X_EXT_KMPRIVATE           17
        !           351: #define SADB_X_EXT_POLICY              18
        !           352: #define SADB_X_EXT_SA2                 19
        !           353: /* The next four entries are for setting up NAT Traversal */
        !           354: #define SADB_X_EXT_NAT_T_TYPE          20
        !           355: #define SADB_X_EXT_NAT_T_SPORT         21
        !           356: #define SADB_X_EXT_NAT_T_DPORT         22
        !           357: #define SADB_X_EXT_NAT_T_OA            23
        !           358: #define SADB_X_EXT_SEC_CTX             24
        !           359: /* Used with MIGRATE to pass @ to IKE for negotiation */
        !           360: #define SADB_X_EXT_KMADDRESS           25
        !           361: #define SADB_EXT_MAX                   25
        !           362: 
        !           363: /* Identity Extension values */
        !           364: #define SADB_IDENTTYPE_RESERVED        0
        !           365: #define SADB_IDENTTYPE_PREFIX  1
        !           366: #define SADB_IDENTTYPE_FQDN    2
        !           367: #define SADB_IDENTTYPE_USERFQDN        3
        !           368: #define SADB_IDENTTYPE_MAX     3
        !           369: 
        !           370: #endif /* !(_LINUX_PFKEY2_H) */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>