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>