#include <net/pfkeyv2.h>
net/pfkeyv2.h
$KAME: pfkeyv2.h,v 1.10 2000/03/22 07:04:20 sakane Exp $
136 macros · 20 structs
#define PFKEYV2_REVISION 199806L
#define SADB_X_PROMISC 11
#define SADB_X_PCHANGE 12
#define SADB_X_SPDUPDATE 13
#define SADB_X_SPDDELETE 15
by policy index
#define SADB_X_SPDACQUIRE 17
#define SADB_X_SPDDUMP 18
#define SADB_X_SPDFLUSH 19
#define SADB_X_SPDSETIDX 20
#define SADB_X_SPDEXPIRE 21
#define SADB_X_SPDDELETE2 22
by policy id
#define SADB_GETSASTAT 23
#define SADB_X_SPDENABLE 24
by policy id
#define SADB_X_SPDDISABLE 25
by policy id
XXX Additional SA Extension.
mode: tunnel or transport
reqid: to make SA unique nevertheless the address pair of SA are same.
Mainly it's for VPN.
size 16, align 4
XXX Policy Extension
sizeof(struct sadb_x_policy) == 16
size 16, align 4
When policy_type == IPSEC, it is followed by some of
the ipsec policy request.
[total length of ipsec policy requests]
= (sadb_x_policy_len * sizeof(uint64_t) - sizeof(struct
sadb_x_policy))
XXX IPsec Policy Request Extension
This structure is aligned 8 bytes.
size 8, align 2
| u_int16_t | sadb_x_ipsecrequest_len | structure length aligned to 8 bytes.
This value is true length of bytes.
Not in units of 64 bits. |
| u_int16_t | sadb_x_ipsecrequest_proto | See ipsec.h |
| u_int8_t | sadb_x_ipsecrequest_mode | See IPSEC_MODE_XX in ipsec.h. |
| u_int8_t | sadb_x_ipsecrequest_level | See IPSEC_LEVEL_XX in ipsec.h |
| u_int16_t | sadb_x_ipsecrequest_reqid | See ipsec.h |
size 24, align 8
| u_int16_t | sadb_session_id_len | |
| u_int16_t | sadb_session_id_exttype | |
| u_int64_t[2] | sadb_session_id_v | [0] is an arbitrary handle that means something only for requester
[1] is a global session id for lookups in the kernel and racoon. |
size 40, align 8
no need to align
#define SADB_EXT_RESERVED 0
#define SADB_EXT_LIFETIME_CURRENT 2
#define SADB_EXT_LIFETIME_HARD 3
#define SADB_EXT_LIFETIME_SOFT 4
#define SADB_EXT_ADDRESS_SRC 5
#define SADB_EXT_ADDRESS_DST 6
#define SADB_EXT_ADDRESS_PROXY 7
#define SADB_EXT_KEY_AUTH 8
#define SADB_EXT_KEY_ENCRYPT 9
#define SADB_EXT_IDENTITY_SRC 10
#define SADB_EXT_IDENTITY_DST 11
#define SADB_EXT_SENSITIVITY 12
#define SADB_EXT_PROPOSAL 13
#define SADB_EXT_SUPPORTED_AUTH 14
#define SADB_EXT_SUPPORTED_ENCRYPT 15
#define SADB_EXT_SPIRANGE 16
#define SADB_X_EXT_KMPRIVATE 17
#define SADB_X_EXT_POLICY 18
#define SADB_X_EXT_SA2 19
#define SADB_EXT_SESSION_ID 20
#define SADB_EXT_SASTAT 21
#define SADB_X_EXT_IPSECIF 22
#define SADB_X_EXT_ADDR_RANGE_SRC_START 23
#define SADB_X_EXT_ADDR_RANGE_SRC_END 24
#define SADB_X_EXT_ADDR_RANGE_DST_START 25
#define SADB_X_EXT_ADDR_RANGE_DST_END 26
#define SADB_EXT_MIGRATE_ADDRESS_SRC 27
#define SADB_EXT_MIGRATE_ADDRESS_DST 28
#define SADB_X_EXT_MIGRATE_IPSECIF 29
#define SADB_SATYPE_UNSPEC 0
#define SADB_SATYPE_ESP 3
#define SADB_SATYPE_RSVP 5
#define SADB_SATYPE_OSPFV2 6
#define SADB_SATYPE_RIPV2 7
#define SADB_SATYPE_MIP 8
#define SADB_X_SATYPE_IPCOMP 9
#define SADB_X_SATYPE_POLICY 10
#define SADB_SATYPE_MAX 11
#define SADB_SASTATE_LARVAL 0
#define SADB_SASTATE_MATURE 1
#define SADB_SASTATE_DYING 2
#define SADB_SASTATE_DEAD 3
#define SADB_SASTATE_MAX 3
#define SADB_SAFLAGS_PFS 1
RFC2367 numbers - meets RFC2407
#define SADB_AALG_NONE 0
#define SADB_AALG_MD5HMAC 1
2
#define SADB_AALG_SHA1HMAC 2
3
private allocations - based on RFC2407/IANA assignment
#define SADB_X_AALG_SHA2_256 6
5
#define SADB_X_AALG_SHA2_384 7
6
#define SADB_X_AALG_SHA2_512 8
7
private allocations should use 249-255 (RFC2407)
#define SADB_X_AALG_MD5 3
249
#define SADB_X_AALG_SHA 4
250
#define SADB_X_AALG_NULL 5
251
RFC2367 numbers - meets RFC2407
#define SADB_EALG_NONE 0
#define SADB_EALG_DESCBC 1
2
#define SADB_EALG_3DESCBC 2
3
#define SADB_EALG_NULL 3
11
private allocations - based on RFC2407/IANA assignment
#define SADB_X_EALG_CAST128CBC 5
6
#define SADB_X_EALG_BLOWFISHCBC 4
7
#define SADB_X_EALG_RIJNDAELCBC 12
#define SADB_X_EALG_AESCBC 12
#define SADB_X_EALG_AES 12
#define SADB_X_EALG_AES_GCM 13
#define SADB_X_EALG_CHACHA20POLY1305 14
#define SADB_X_EALG_AES_GMAC 15
#define SADB_X_CALG_NONE 0
#define SADB_X_CALG_OUI 1
#define SADB_X_CALG_DEFLATE 2
#define SADB_X_CALG_LZS 3
#define SADB_X_CALG_MAX 4
#define SADB_IDENTTYPE_RESERVED 0
#define SADB_IDENTTYPE_PREFIX 1
#define SADB_IDENTTYPE_FQDN 2
#define SADB_IDENTTYPE_USERFQDN 3
#define SADB_X_IDENTTYPE_ADDR 4
#define SADB_IDENTTYPE_MAX 4
`flags' in
sadb_sa structure holds followings
#define SADB_X_EXT_NONE 0x0000
i.e. new format.
#define SADB_X_EXT_OLD 0x0001
old format.
#define SADB_X_EXT_IV4B 0x0010
IV length of 4 bytes in use
#define SADB_X_EXT_DERIV 0x0020
DES derived
#define SADB_X_EXT_CYCSEQ 0x0040
allowing to cyclic sequence.
three of followings are exclusive flags each them
#define SADB_X_EXT_PSEQ 0x0000
sequencial padding for ESP
#define SADB_X_EXT_PRAND 0x0100
random padding for ESP
#define SADB_X_EXT_PZERO 0x0200
zero padding for ESP
#define SADB_X_EXT_PMASK 0x0300
mask for padding flag
#define SADB_X_EXT_IIV 0x0400
Implicit IV
#define SADB_X_EXT_RAWCPI 0x0080
use well known CPI (IPComp)
#define SADB_KEY_FLAGS_MAX 0x7fff
SPI size for PF_KEYv2
#define PFKEY_SPI_SIZE sizeof(u_int32_t)
Identifier for menber of lifetime structure
#define SADB_X_LIFETIME_ALLOCATIONS 0
#define SADB_X_LIFETIME_BYTES 1
#define SADB_X_LIFETIME_ADDTIME 2
#define SADB_X_LIFETIME_USETIME 3
The rate for SOFT lifetime against HARD one.
#define PFKEY_SOFT_LIFETIME_RATE 80
Utilities
#define PFKEY_ALIGN8(a) (1 + (((a) - 1) | (8 - 1)))
#define PFKEY_ADDR_PREFIX(ext) (((struct sadb_address *)(ext))->sadb_address_prefixlen)
#define PFKEY_ADDR_PROTO(ext) (((struct sadb_address *)(ext))->sadb_address_proto)
in 64bits
#define PFKEY_UNUNIT64(a) ((a) << 3)
#define PFKEY_UNIT64(a) ((a) >> 3)