Return to transform_attribute.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / strongswan / src / libcharon / encoding / payloads |
1.1 misho 1: /* 2: * Copyright (C) 2005-2006 Martin Willi 3: * Copyright (C) 2005 Jan Hutter 4: * HSR Hochschule fuer Technik Rapperswil 5: * 6: * This program is free software; you can redistribute it and/or modify it 7: * under the terms of the GNU General Public License as published by the 8: * Free Software Foundation; either version 2 of the License, or (at your 9: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. 10: * 11: * This program is distributed in the hope that it will be useful, but 12: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 13: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14: * for more details. 15: */ 16: 17: /** 18: * @defgroup transform_attribute transform_attribute 19: * @{ @ingroup payloads 20: */ 21: 22: #ifndef TRANSFORM_ATTRIBUTE_H_ 23: #define TRANSFORM_ATTRIBUTE_H_ 24: 25: typedef enum transform_attribute_type_t transform_attribute_type_t; 26: typedef struct transform_attribute_t transform_attribute_t; 27: 28: #include <library.h> 29: #include <encoding/payloads/payload.h> 30: 31: /** 32: * Type of the attribute. 33: */ 34: enum transform_attribute_type_t { 35: /** IKEv1 Phase 1 attributes */ 36: TATTR_PH1_ENCRYPTION_ALGORITHM = 1, 37: TATTR_PH1_HASH_ALGORITHM = 2, 38: TATTR_PH1_AUTH_METHOD = 3, 39: TATTR_PH1_GROUP = 4, 40: TATTR_PH1_GROUP_TYPE = 5, 41: TATTR_PH1_GROUP_PRIME = 6, 42: TATTR_PH1_GROUP_GENONE = 7, 43: TATTR_PH1_GROUP_GENTWO = 8, 44: TATTR_PH1_GROUP_CURVE_A = 9, 45: TATTR_PH1_GROUP_CURVE_B = 10, 46: TATTR_PH1_LIFE_TYPE = 11, 47: TATTR_PH1_LIFE_DURATION = 12, 48: TATTR_PH1_PRF = 13, 49: TATTR_PH1_KEY_LENGTH = 14, 50: TATTR_PH1_FIELD_SIZE = 15, 51: TATTR_PH1_GROUP_ORDER = 16, 52: /** IKEv1 Phase 2 attributes */ 53: TATTR_PH2_SA_LIFE_TYPE = 1, 54: TATTR_PH2_SA_LIFE_DURATION = 2, 55: TATTR_PH2_GROUP = 3, 56: TATTR_PH2_ENCAP_MODE = 4, 57: TATTR_PH2_AUTH_ALGORITHM = 5, 58: TATTR_PH2_KEY_LENGTH = 6, 59: TATTR_PH2_KEY_ROUNDS = 7, 60: TATTR_PH2_COMP_DICT_SIZE = 8, 61: TATTR_PH2_COMP_PRIV_ALGORITHM = 9, 62: TATTR_PH2_ECN_TUNNEL = 10, 63: TATTR_PH2_EXT_SEQ_NUMBER = 11, 64: /* IKEv2 key length attribute */ 65: TATTR_IKEV2_KEY_LENGTH = 14, 66: /* undefined, private use attribute */ 67: TATTR_UNDEFINED = 16384, 68: }; 69: 70: /** 71: * Enum names for IKEv1 Phase 1 transform_attribute_type_t. 72: */ 73: extern enum_name_t *tattr_ph1_names; 74: 75: /** 76: * Enum names for IKEv1 Phase 2 transform_attribute_type_t. 77: */ 78: extern enum_name_t *tattr_ph2_names; 79: 80: /** 81: * Enum names for IKEv2 transform_attribute_type_t. 82: */ 83: extern enum_name_t *tattr_ikev2_names; 84: 85: 86: /** 87: * Class representing an IKEv1/IKEv2 TRANSFORM Attribute. 88: */ 89: struct transform_attribute_t { 90: 91: /** 92: * The payload_t interface. 93: */ 94: payload_t payload_interface; 95: 96: /** 97: * Returns the currently set value of the attribute. 98: * 99: * Returned data are not copied. 100: * 101: * @return chunk_t pointing to internal value 102: */ 103: chunk_t (*get_value_chunk) (transform_attribute_t *this); 104: 105: /** 106: * Returns the currently set value of the attribute. 107: * 108: * Returned data are not copied. 109: * 110: * @return value 111: */ 112: uint64_t (*get_value) (transform_attribute_t *this); 113: 114: /** 115: * get the type of the attribute. 116: * 117: * @return type of the value 118: */ 119: uint16_t (*get_attribute_type) (transform_attribute_t *this); 120: 121: /** 122: * Destroys an transform_attribute_t object. 123: */ 124: void (*destroy) (transform_attribute_t *this); 125: }; 126: 127: /** 128: * Creates an empty transform_attribute_t object. 129: * 130: * @param type PLV2_TRANSFORM_ATTRIBUTE or PLV1_TRANSFORM_ATTRIBUTE 131: * @return transform_attribute_t object 132: */ 133: transform_attribute_t *transform_attribute_create(payload_type_t type); 134: 135: /** 136: * Creates a two byte value or a larger attribute for a given attribute kind. 137: * 138: * @param type PLV2_TRANSFORM_ATTRIBUTE or PLV1_TRANSFORM_ATTRIBUTE 139: * @param kind attribute kind 140: * @param value fixed two byte value 141: * @return transform_attribute_t object 142: */ 143: transform_attribute_t *transform_attribute_create_value(payload_type_t type, 144: transform_attribute_type_t kind, uint64_t value); 145: 146: #endif /** TRANSFORM_ATTRIBUTE_H_ @}*/