diff options
Diffstat (limited to 'lib/orber/src/orber_iiop.hrl')
-rw-r--r-- | lib/orber/src/orber_iiop.hrl | 1015 |
1 files changed, 1015 insertions, 0 deletions
diff --git a/lib/orber/src/orber_iiop.hrl b/lib/orber/src/orber_iiop.hrl new file mode 100644 index 0000000000..7a30af63e4 --- /dev/null +++ b/lib/orber/src/orber_iiop.hrl @@ -0,0 +1,1015 @@ +%%-------------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1997-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%---------------------------------------------------------------------- +%% File: orber_iiop.hrl +%% +%%---------------------------------------------------------------------- +-ifndef(orber_iiop_hrl). +-define(orber_iiop_hrl, true). + +-include_lib("orber/include/corba.hrl"). + +%% The identifiers which indicates if a fixed value has a negative or +%% positive scale. +-define(FIXED_NEGATIVE, 13). +-define(FIXED_POSITIVE, 12). + +%% Used instead of IFR-id's in TypeCode definitions for internal data types. +-define(SYSTEM_TYPE, 0). + +%% Major version of GIOP protocol which are supported +-define(GIOP_MAJOR, 1). + +%% Minor version of GIOP protocol which are supported +-define(GIOP_MINOR, 0). + +%% Major version of IIOP protocol which are supported +-define(IIOP_MAJOR, 1). + +%% Minor version of IIOP protocol which are supported +-define(IIOP_MINOR, 0). + +%% Fragment flags for the flags bitfield in GIOP message headers +-define(GIOP_BYTE_ORDER_MSB, 0). +-define(GIOP_BYTE_ORDER_LSB, 1). + +%% Fragment flags for the flags bitfield in GIOP message headers +-define(GIOP_MORE_FRAGMENTS_FALSE, 0). +-define(GIOP_MORE_FRAGMENTS_TRUE, 1). + +%% GIOP Message Types +-define(GIOP_MSG_REQUEST, 0). +-define(GIOP_MSG_REPLY, 1). +-define(GIOP_MSG_CANCEL_REQUEST, 2). +-define(GIOP_MSG_LOCATE_REQUEST, 3). +-define(GIOP_MSG_LOCATE_REPLY, 4). +-define(GIOP_MSG_CLOSE_CONNECTION, 5). +-define(GIOP_MSG_MESSAGE_ERROR, 6). +-define(GIOP_MSG_FRAGMENT, 7). + +%% PROFILE_ID's +-define(TAG_INTERNET_IOP, 0). +-define(TAG_MULTIPLE_COMPONENTS, 1). +-define(TAG_SCCP_IOP, 2). + + +%% COMPONENT_ID's +-define(TAG_ORB_TYPE, 0). +-define(TAG_CODE_SETS, 1). +-define(TAG_POLICIES, 2). +-define(TAG_ALTERNATE_IIOP_ADDRESS, 3). +-define(TAG_COMPLETE_OBJECT_KEY, 5). +-define(TAG_ENDPOINT_ID_POSITION, 6). +-define(TAG_LOCATION_POLICY, 12). +-define(TAG_ASSOCIATION_OPTIONS, 13). +-define(TAG_SEC_NAME, 14). +-define(TAG_SPKM_1_SEC_MECH, 15). +-define(TAG_SPKM_2_SEC_MECH, 16). +-define(TAG_KerberosV5_SEC_MECH, 17). +-define(TAG_CSI_ECMA_Secret_SEC_MECH, 18). +-define(TAG_CSI_ECMA_Hybrid_SEC_MECH, 19). +-define(TAG_SSL_SEC_TRANS, 20). +-define(TAG_CSI_ECMA_Public_SEC_MECH, 21). +-define(TAG_GENERIC_SEC_MECH, 22). +-define(TAG_FIREWALL_TRANS, 23). +-define(TAG_SCCP_CONTACT_INFO, 24). +-define(TAG_JAVA_CODEBASE, 25). +-define(TAG_TRANSACTION_POLICY, 26). +-define(TAG_FT_GROUP, 27). +-define(TAG_FT_PRIMARY, 28). +-define(TAG_FT_HEARTBEAT_ENABLED, 29). +-define(TAG_MESSAGE_ROUTERS, 30). +-define(TAG_OTS_POLICY, 31). +-define(TAG_INV_POLICY, 32). +-define(TAG_CSI_SEC_MECH_LIST, 33). +-define(TAG_NULL_TAG, 34). +-define(TAG_SECIOP_SEC_TRANS, 35). +-define(TAG_TLS_SEC_TRANS, 36). +-define(TAG_DCE_STRING_BINDING, 100). +-define(TAG_DCE_BINDING_NAME, 101). +-define(TAG_DCE_NO_PIPES, 102). +-define(TAG_DCE_SEC_MECH, 103). +-define(TAG_INET_SEC_TRANS, 123). + +%% COMPONENT_ID strings +-define(TAG_ORB_TYPE_STR, "TAG_ORB_TYPE"). +-define(TAG_CODE_SETS_STR, "TAG_CODE_SETS"). +-define(TAG_POLICIES_STR, "TAG_POLICIES"). +-define(TAG_ALTERNATE_IIOP_ADDRESS_STR, "TAG_ALTERNATE_IIOP_ADDRESS"). +-define(TAG_COMPLETE_OBJECT_KEY_STR, "TAG_COMPLETE_OBJECT_KEY"). +-define(TAG_ENDPOINT_ID_POSITION_STR, "TAG_ENDPOINT_ID_POSITION"). +-define(TAG_LOCATION_POLICY_STR, "TAG_LOCATION_POLICY"). +-define(TAG_ASSOCIATION_OPTIONS_STR, "TAG_ASSOCIATION_OPTIONS"). +-define(TAG_SEC_NAME_STR, "TAG_SEC_NAME"). +-define(TAG_SPKM_1_SEC_MECH_STR, "TAG_SPKM_1_SEC_MECH"). +-define(TAG_SPKM_2_SEC_MECH_STR, "TAG_SPKM_2_SEC_MECH"). +-define(TAG_KerberosV5_SEC_MECH_STR, "TAG_KerberosV5_SEC_MECH"). +-define(TAG_CSI_ECMA_Secret_SEC_MECH_STR, "TAG_CSI_ECMA_Secret_SEC_MECH"). +-define(TAG_CSI_ECMA_Hybrid_SEC_MECH_STR, "TAG_CSI_ECMA_Hybrid_SEC_MECH"). +-define(TAG_SSL_SEC_TRANS_STR, "TAG_SSL_SEC_TRANS"). +-define(TAG_CSI_ECMA_Public_SEC_MECH_STR, "(TAG_CSI_ECMA_Public_SEC_MECH"). +-define(TAG_GENERIC_SEC_MECH_STR, "TAG_GENERIC_SEC_MECH"). +-define(TAG_FIREWALL_TRANS_STR, "TAG_FIREWALL_TRANS"). +-define(TAG_SCCP_CONTACT_INFO_STR, "TAG_SCCP_CONTACT_INFO"). +-define(TAG_JAVA_CODEBASE_STR, "TAG_JAVA_CODEBASE"). +-define(TAG_TRANSACTION_POLICY_STR, "TAG_TRANSACTION_POLICY"). +-define(TAG_FT_GROUP_STR, "TAG_FT_GROUP"). +-define(TAG_FT_PRIMARY_STR, "TAG_FT_PRIMARY"). +-define(TAG_FT_HEARTBEAT_ENABLED_STR, "TAG_FT_HEARTBEAT_ENABLED"). +-define(TAG_MESSAGE_ROUTERS_STR, "TAG_MESSAGE_ROUTERS"). +-define(TAG_OTS_POLICY_STR, "TAG_OTS_POLICY"). +-define(TAG_INV_POLICY_STR, "TAG_INV_POLICY"). +-define(TAG_CSI_SEC_MECH_LIST_STR, "TAG_CSI_SEC_MECH_LIST"). +-define(TAG_NULL_TAG_STR, "TAG_NULL_TAG"). +-define(TAG_SECIOP_SEC_TRANS_STR, "TAG_SECIOP_SEC_TRANS"). +-define(TAG_TLS_SEC_TRANS_STR, "TAG_TLS_SEC_TRANS"). +-define(TAG_DCE_STRING_BINDING_STR, "TAG_DCE_STRING_BINDING"). +-define(TAG_DCE_BINDING_NAME_STR, "TAG_DCE_BINDING_NAME"). +-define(TAG_DCE_NO_PIPES_STR, "TAG_DCE_NO_PIPES"). +-define(TAG_DCE_SEC_MECH_STR, "TAG_DCE_SEC_MECH"). +-define(TAG_INET_SEC_TRANS_STR, "TAG_INET_SEC_TRANS"). + +%% GIOP header size +-define(GIOP_HEADER_SIZE, 12). + +%% CODESET's we support. +%% Latin-1. This CodeSet is default if no information exists in the IOR. +-define(ISO8859_1_ID, 16#00010001). + +%% UTF-16, UCS Transformation Format 16-bit form +-define(UTF_16_ID, 16#00010109). + +%% X/Open UTF-8; UCS Transformation Format 8 (UTF-8) +-define(UTF_8_ID, 16#05010001). + +%% The limited UTF-16 without the surrogate mechanism is called UCS-2. +%% The two-byte subset which is identical with the original Unicode. +%% UCS-2, Level 1. Used by JDK-1.3 as native wchar. +-define(UCS_2_ID, 16#00010100). + +%% ISO 646:1991 IRV (International Reference Version). +%% Used by JavaIDL as Native Char (JDK-1.3). A.k.a PCS. +-define(ISO646_IRV_ID, 16#00010020). + +%% Fallback is *not* the same thing as default!! +-define(FALLBACK_CHAR, 16#05010001). +-define(FALLBACK_WCHAR, 16#00010109). + +%% This is used when the wchar codeset is unknown. +-define(UNSUPPORTED_WCHAR, 0). + +%% Integer limits +-define(SHORTMIN, -32768). +-define(SHORTMAX, 32767). +-define(USHORTMIN, 0). +-define(USHORTMAX, 65535). +-define(LONGMIN, -2147483648). +-define(LONGMAX, 2147483647). +-define(ULONGMIN, 0). +-define(ULONGMAX, 4294967295). +-define(LONGLONGMIN, -9223372036854775808). +-define(LONGLONGMAX, 9223372036854775807). +-define(ULONGLONGMIN, 0). +-define(ULONGLONGMAX, 18446744073709551615). + + +-define(ORBER_GENERIC_CTX, {'tk_sequence', 'tk_octet', 0}). + + +%%---------------------------------------------------------------------- +%% GIOP Message Header +%% +%% magic: identifies the GIOP message headers, array of four characters. +%% giop_version: contains the version number of the giop protocol being +%% used in the message. +%% byte_order: indicating the byte order being used in subsequent +%% elements of the message. +%% 0 - big-endian byte ordering, 1 - little-endian byte ordering +%% fragments: true if more fragments follow, otherwise false. +%% message_type: indicating the type of the message +%% message_size: gives the length of the message following the message +%% headerin octets. +%%---------------------------------------------------------------------- +-record(giop_message, {magic, + giop_version, + byte_order, + fragments = false, + message_type, + message_size, + message}). + + + +%%---------------------------------------------------------------------- +%% Request Message Header +%% +%% service_context: contains ORB service data being passed from client to server. +%% (IOP::ServiceContextList) +%% request_id: id used to assosciate reply messages with request messages. +%% response_expected: true if the request is expected to have a reply message. +%% object_key: identifies the object wich is the target of the invocation. +%% operation: contains the name of the operation being invoked. +%% requesting_principal: contains a value that identifying the requesting +%% principal. +%%---------------------------------------------------------------------- +-record(request_header, {service_context, request_id, response_expected, object_key, operation, requesting_principal}). + + + +%%---------------------------------------------------------------------- +%% Reply Message Header +%% +%% service_context: contains ORB service data being passed from client to server. +%% (IOP::ServiceContextList) +%% request_id: id used to assosciate reply messages with request messages. +%% reply_status: indicates the completion status of the request +%%---------------------------------------------------------------------- +-record(reply_header, {service_context, request_id, reply_status}). + + + +%%---------------------------------------------------------------------- +%% Cancel Request Message Header +%% +%% request_id: id used to assosciate reply messages with request messages. +%%---------------------------------------------------------------------- +-record(cancel_request_header, {request_id}). + + + +%%---------------------------------------------------------------------- +%% Locate Request Message Header +%% +%% request_id: id used to assosciate reply messages with request messages. +%% object_key: identifies the object being located (octet sequence). +%%---------------------------------------------------------------------- +-record(locate_request_header, {request_id, object_key}). + + + +%%---------------------------------------------------------------------- +%% Locate Reply Message Header +%% +%% request_id: id used to assosciate reply messages with request messages. +%% locate_status: indicates the completion status of the locate request +%%---------------------------------------------------------------------- +-record(locate_reply_header, {request_id, locate_status}). + + + +%%---------------------------------------------------------------------- +%% Profile Body +%% +%% iiop_version: describes the version of IIOP that the agent at the +%% specified adress is prepared to receive. +%% host: identifies the internet host to which the GIOP messages +%% for the specified object may be sent. +%% port: contains the TCP?IP port number where the target agnet is listening +%% for connection requests. +%% object_key: is an opaque value supplied by the agent producing the IOR. +%%---------------------------------------------------------------------- +-record(profile_body, {iiop_version,host,port,object_key}). + +%%---------------------------------------------------------------------- +%% Version +%% +%% major: major version number of iiop protocol +%% minor: minor version number of iiop protocol. +%% +%% When an agnet generates profiles specifying a particular version, +%% it must be able to accept messages complying with the specified +%% version or any porevious minor version. +%%---------------------------------------------------------------------- +-record(version, {major,minor}). + +%%---------------------------------------------------------------------- +%% Fragment Message Header +%% +%% request_id: +%%---------------------------------------------------------------------- +-record(fragment_header, {request_id}). + + +%%---------------------------------------------------------------------- +%% ORB_FLAGS macros. Used in the local object references {_,_,_,_,_,Flags}. +%% +%%---------------------------------------------------------------------- + +%% Definition of flag positions: +-define(ORB_SEC_ATTRIBUTES, 16#01). +-define(ORB_CONTEXT, 16#02). +-define(ORB_TYPECHECK, 16#04). +-define(ORB_NO_SECURITY, 16#08). +-define(ORB_SURVIVE_EXIT, 16#10). +-define(ORB_USE_PI, 16#20). + +-define(ORB_INIT_FLAGS, 16#00). + +%%---------------------------------------------------------------------- +%% Flags used as configuration parameters (application env). +%% +%%---------------------------------------------------------------------- +-define(ORB_ENV_EXCLUDE_CODESET_COMPONENT, 16#01). %% FIXED!! +-define(ORB_ENV_LOCAL_TYPECHECKING, 16#02). %% FIXED!! +-define(ORB_ENV_HOSTNAME_IN_IOR, 16#04). %% FIXED!! +-define(ORB_ENV_ENABLE_NAT, 16#08). %% FIXED!! +-define(ORB_ENV_PARTIAL_SECURITY, 16#10). %% FIXED FOR NOW!! INTERNAL +-define(ORB_ENV_USE_PI, 16#20). %% FIXED!! +-define(ORB_ENV_USE_FT, 16#40). %% WILL PROBABLY BE FIXED!! +-define(ORB_ENV_LIGHT_IFR, 16#80). %% FIXED!! +-define(ORB_ENV_USE_IPV6, 16#100). %% FIXED!! +-define(ORB_ENV_SURVIVE_EXIT, 16#200). %% FIXED!! +-define(ORB_ENV_USE_ACL_INCOMING, 16#400). %% FIXED!! +-define(ORB_ENV_USE_ACL_OUTGOING, 16#800). %% FIXED!! +-define(ORB_ENV_LOCAL_INTERFACE, 16#1000). %% FIXED!! + +-define(ORB_ENV_USE_BI_DIR_IIOP, 16#2000). %% CAN BE CHANGED +-define(ORB_ENV_USE_CSIV2, 16#4000). %% CAN BE CHANGED +-define(ORB_ENV_EXCLUDE_CODESET_CTX, 16#8000). %% CAN BE CHANGED + + +-define(ORB_ENV_INIT_FLAGS, 16#00). + +-define(ORB_ENV_FLAGS, + [{?ORB_ENV_EXCLUDE_CODESET_CTX, "Exclude CodeSet Ctx"}, + {?ORB_ENV_LOCAL_TYPECHECKING, "Local Typechecking"}, + {?ORB_ENV_HOSTNAME_IN_IOR, "Use Hostname in IOR"}, + {?ORB_ENV_EXCLUDE_CODESET_COMPONENT, "Exclude CodeSet Component"}, + {?ORB_ENV_ENABLE_NAT, "NAT Enabled"}, + {?ORB_ENV_USE_CSIV2, "CSIv2 Activated"}, + {?ORB_ENV_USE_FT, "Fault Tolerance Activated"}, + {?ORB_ENV_USE_IPV6, "IPv6 Activated"}, + {?ORB_ENV_SURVIVE_EXIT, "EXIT Tolerance Activated"}, + {?ORB_ENV_USE_PI, "Local Interceptors"}, + {?ORB_ENV_LIGHT_IFR, "Light IFR"}, + {?ORB_ENV_USE_BI_DIR_IIOP, "Use BiDirIIOP"}, + {?ORB_ENV_USE_ACL_INCOMING, "Use ACL for Incoming Connections"}, + {?ORB_ENV_USE_ACL_OUTGOING, "Use ACL for Outgoing Connections"}, + {?ORB_ENV_LOCAL_INTERFACE, "Use the Proxy Interface in Exported IOR:s"}]). + + +%%---------------------------------------------------------------------- +%% Definition of flag operations +%% +%%---------------------------------------------------------------------- +%% USAGE: Boolean = ?ORB_FLAG_TEST(Flags, ?ORB_SEC_ATTRIBUTES) +-define(ORB_FLAG_TEST(_F1, _I1), ((_F1 band _I1) == _I1)). + +%% USAGE: NewFlags = ?ORB_SET_TRUE(Flags, ?ORB_CONTEXT) +-define(ORB_SET_TRUE(_F2, _I2), (_I2 bor _F2)). + +%% USAGE: NewFlags = ?ORB_SET_FALSE(Flags, ?ORB_CONTEXT) +-define(ORB_SET_FALSE(_F3, _I3), ((_I3 bxor 16#ff) band _F3)). + +%% USAGE: NewFlags = ?ORB_SET_FALSE_LIST(Flags, [?ORB_SEC_ATTRIBUTES, ?ORB_SOME]) +-define(ORB_SET_FALSE_LIST(_F4, _IList1), + lists:foldl(fun(_I4, _F5) -> + ((_I4 bxor 16#ff) band _F5) + end, + _F4, _IList1)). + +%% USAGE: NewFlags = ?ORB_SET_TRUE_LIST(Flags, [?ORB_SEC_ATTRIBUTES, ?ORB_SOME]) +-define(ORB_SET_TRUE_LIST(_F6, _IList2), + lists:foldl(fun(_I6, _F7) -> + (_I6 bor _F7) + end, + _F6, _IList2)). + +%% USAGE: Boolean = ?ORB_FLAG_TEST_LIST(Flags, [?ORB_CONTEXT, ?ORB_THING]) +-define(ORB_FLAG_TEST_LIST(_F8, _IList3), + lists:all(fun(_I7) -> + ((_F8 band _I7) == _I7) + end, + _IList3)). + +%%---------------------------------------------------------------------- +%% IOR +%% +%%---------------------------------------------------------------------- +-record('IOP_IOR', {type_id, profiles}). +-record('IOP_TaggedProfile', {tag, profile_data}). +-record('IIOP_ProfileBody_1_0', {iiop_version, + host, + port, + object_key}). +-record('IIOP_ProfileBody_1_1', {iiop_version, + host, + port, + object_key, + components}). + +-record('GIOP_Version', {major, minor}). + +-record('IIOP_Version', {major, minor}). + +-record('SSLIOP_SSL', {target_supports, target_requires, port}). + +-record('IOP_TaggedComponent', {tag, component_data}). + +-record('GIOP_TargetAddress', {label, value}). + +-record('GIOP_IORAddressingInfo', {selected_profile_index, ior}). + + +%% +%% Nil object reference +%% +-define(ORBER_NIL_OBJREF, #'IOP_IOR' {type_id = "", profiles = []}). + +-define(IOR_TYPEDEF, {'tk_struct', ?SYSTEM_TYPE, 'IOP_IOR', + [{"type_id", {'tk_string', 0}}, + {"profiles", {'tk_sequence', {'tk_struct', ?SYSTEM_TYPE, + 'IOP_TaggedProfile', + [{"tag", 'tk_ulong'}, + {"profile_data", + {'tk_sequence', 'tk_octet', 0}}]}, 0}}]}). + +-define(GIOP_VERSION, {'tk_struct', ?SYSTEM_TYPE, 'GIOP_Version', + [{"major", 'tk_octet'}, + {"minor", 'tk_octet'}]}). + +-define(IIOP_VERSION, {'tk_struct', ?SYSTEM_TYPE, 'IIOP_Version', + [{"major vsn", 'tk_octet'}, + {"minor vsn", 'tk_octet'}]}). +-define(IOP_TAGGEDCOMPONENT, {'tk_struct', ?SYSTEM_TYPE, + 'IOP_TaggedComponent', + [{"tag", 'tk_ulong'}, + {"component_data", + {'tk_sequence', + 'tk_octet', 0}}]}). +-define(IOP_TAGGEDCOMPONENT_SEQ, {'tk_sequence', ?IOP_TAGGEDCOMPONENT, 0}). + +-define(PROFILEBODY_1_0_TYPEDEF, {'tk_struct', ?SYSTEM_TYPE, 'IIOP_ProfileBody_1_0', + [{"iiop_version", ?IIOP_VERSION }, + {"host", {'tk_string', 0}}, + {"port", 'tk_ushort'}, + {"object_key", {'tk_sequence', 'tk_octet', 0}}]}). + +-define(PROFILEBODY_1_1_TYPEDEF, {'tk_struct', ?SYSTEM_TYPE, 'IIOP_ProfileBody_1_1', + [{"iiop_version",?IIOP_VERSION }, + {"host", {'tk_string', 0}}, + {"port", 'tk_ushort'}, + {"object_key", {'tk_sequence', 'tk_octet', 0}} + {"components", ?IOP_TAGGEDCOMPONENT_SEQ}]}). + +-define(PROFILEBODY_1_2_TYPEDEF, {'tk_struct', ?SYSTEM_TYPE, 'IIOP_ProfileBody_1_1', + [{"iiop_version",?IIOP_VERSION }, + {"host", {'tk_string', 0}}, + {"port", 'tk_ushort'}, + {"object_key", {'tk_sequence', 'tk_octet', 0}} + {"components", ?IOP_TAGGEDCOMPONENT_SEQ}]}). + +-define(SSLIOP_SSL, {'tk_struct', ?SYSTEM_TYPE, 'SSLIOP_SSL', + [{"target_supports", 'tk_ushort'}, + {"target_requires", 'tk_ushort'}, + {"port", 'tk_ushort'}]}). + +-define(GIOP_KeyAddr, 0). +-define(GIOP_ProfileAddr, 1). +-define(GIOP_ReferenceAddr, 2). + +-define(TARGETADDRESS, {'tk_union', ?SYSTEM_TYPE, 'GIOP_TargetAddress', 'tk_short', -1, + [{?GIOP_KeyAddr, "object_key", {'tk_sequence', 'tk_octet', 0}}, + {?GIOP_ProfileAddr, "profile", {'tk_struct', ?SYSTEM_TYPE, + 'IOP_TaggedProfile', + [{"tag", 'tk_ulong'}, + {"profile_data", + {'tk_sequence', 'tk_octet', 0}}]}}, + {?GIOP_ReferenceAddr, "ior", {'tk_struct', ?SYSTEM_TYPE, + 'GIOP_IORAddressingInfo', + [{"selected_profile_index", 'tk_ulong'}, + {"ior", ?IOR_TYPEDEF}]}}]}). + +% Zero or more instances of the TAG_ALTERNATE_IIOP_ADDRESS component type +% may be included in a version 1.2 TAG_INTERNET_IOP Profile. +-record('ALTERNATE_IIOP_ADDRESS', {'HostID', 'Port'}). +-define(ALTERNATE_IIOP_ADDRESS, {'tk_struct', ?SYSTEM_TYPE, + 'ALTERNATE_IIOP_ADDRESS', + [{"HostID", {'tk_string', 0}}, + {"Port", 'tk_ushort'}]}). +% The TAG_ORB_TYPE component can appear at most once in any IOR profile. For +% profiles supporting IIOP 1.1 or greater, it is optionally present. +-define(ORB_TYPE, 'tk_ulong'). + +-record('CONV_FRAME_CodeSetComponent', {native_code_set, conversion_code_sets}). +-record('CONV_FRAME_CodeSetComponentInfo', {'ForCharData', 'ForWcharData'}). +-define(CONV_FRAME_CODESETCOMPONENT, {'tk_struct', ?SYSTEM_TYPE, + 'CONV_FRAME_CodeSetComponent', + [{"native_code_set", 'tk_ulong'}, + {"conversion_code_sets", + {'tk_sequence', 'tk_ulong', 0}}]}). +-define(CONV_FRAME_CODESETCOMPONENTINFO, {'tk_struct', ?SYSTEM_TYPE, + 'CONV_FRAME_CodeSetComponentInfo', + [{"ForCharData", + ?CONV_FRAME_CODESETCOMPONENT}, + {"ForWcharData", + ?CONV_FRAME_CODESETCOMPONENT}]}). + + + + +-define(DEFAULT_FOR_CHAR, #'CONV_FRAME_CodeSetComponent'{native_code_set=?ISO8859_1_ID, + conversion_code_sets=[]}). +-define(DEFAULT_FOR_WCHAR, #'CONV_FRAME_CodeSetComponent'{native_code_set=?UTF_16_ID, + conversion_code_sets=[]}). +-define(DEFAULT_CODESETS, + #'CONV_FRAME_CodeSetComponentInfo'{'ForCharData' = ?DEFAULT_FOR_CHAR, + 'ForWcharData' = ?DEFAULT_FOR_WCHAR}). + +%% Fragmentation - IIOP-1.1 & 1.2 +-record('GIOP_FragmentHeader_1_2', {request_id}). + +-define(GIOP_FragmentHeader_1_2, {'tk_struct', ?SYSTEM_TYPE, + 'GIOP_FragmentHeader_1_2', + [{"request_id", 'tk_ulong'}]}). + +%%------ MISC Definitions ------- +%% TimeBase::TimeT (TimeBase.idl) is defined as +%% typedef unsigned long long TimeT; +-define(TimeBase_TimeT, 'tk_ulonglong'). + +%%------ Fault Tolerant Definitions ------- + +%% Specification for Interoperable Object Group References +-define(FT_FTDomainId, {'tk_string', 0}). +-define(FT_ObjectGroupId, 'tk_ulonglong'). +-define(FT_ObjectGroupRefVersion, 'tk_ulong'). +%% A GIOP::Version of 1.0 indicates that the implementation is compliant +%% with the CORBA-2.6 specification. +%% tag = TAG_FT_GROUP +-record('FT_TagFTGroupTaggedComponent', {version = #'GIOP_Version'{major = 1, + minor = 0}, + ft_domain_id, object_group_id, + object_group_ref_version}). +-define(FT_TagFTGroupTaggedComponent, {'tk_struct', ?SYSTEM_TYPE, 'FT_TagFTGroupTaggedComponent', + [{"version", ?GIOP_VERSION}, + {"ft_domain_id", ?FT_FTDomainId}, + {"object_group_id", ?FT_ObjectGroupId}, + {"object_group_ref_version", ?FT_ObjectGroupRefVersion}]}). + +%% tag = TAG_FT_PRIMARY; +-record('FT_TagFTPrimaryTaggedComponent', {primary}). +-define(FT_TagFTPrimaryTaggedComponent, {'tk_struct', ?SYSTEM_TYPE, 'FT_TagFTPrimaryTaggedComponent', + [{"primary", 'tk_boolean'}]}). + + +%% Specification for Most Recent Object Group Reference +%% context_id = FT_GROUP_VERSION; +-record('FT_FTGroupVersionServiceContext', {object_group_ref_version}). +-define(FT_FTGroupVersionServiceContext, {'tk_struct', ?SYSTEM_TYPE, 'FT_FTGroupVersionServiceContext', + [{"object_group_ref_version", ?FT_ObjectGroupRefVersion}]}). + +%% Specification for Transparent Reinvocation +-define(FT_PolicyType_REQUEST_DURATION_POLICY, 47). + +%% context_id = FT_REQUEST +-record('FT_FTRequestServiceContext', {client_id, retention_id, expiration_time}). +-define(FT_FTRequestServiceContext, {'tk_struct', ?SYSTEM_TYPE, 'FT_FTRequestServiceContext', + [{"client_id", {'tk_string', 0}}, + {"retention_id", 'tk_long'}, + {"expiration_time", ?TimeBase_TimeT}]}). + +%% Specification for Transport Heartbeats +-define(FT_PolicyType_HEARTBEAT_POLICY, 48). +-define(FT_PolicyType_HEARTBEAT_ENABLED_POLICY, 49). + +%% tag = TAG_FT_HEARTBEAT_ENABLED; +-record('FT_TagFTHeartbeatEnabledTaggedComponent', {heartbeat_enabled}). +-define(FT_TagFTHeartbeatEnabledTaggedComponent, {'tk_struct', ?SYSTEM_TYPE, 'FT_TagFTHeartbeatEnabledTaggedComponent', + [{"heartbeat_enabled", 'tk_boolean'}]}). + + +%%------ CSI stuff - required by the SAS protocol. ------- +%% This constant defines the current level we support. +-define(CSIv2_MAX_TARGET_REQUIRES, 16#488). + +%% NOTE! The OMG VMCID is incorrect in the SAS specification, should be +%% OMGVMCID = 0x4f4d0000; +-define(CSI_OMGVMCID, ?CORBA_OMGVMCID). + +%% ASN.1 Encoding of an OBJECT IDENTIFIER +-define(CSI_OID, {'tk_sequence', 'tk_octet', 0}). +-define(CSI_OIDList, {'tk_sequence', ?CSI_OID, 0}). + +%% An X509CertificateChain contains an ASN.1 BER encoded SEQUENCE +%% [1..MAX] OF X.509 certificates encapsulated in a sequence of octets. The +%% subject:s certificate shall come first in the list. Each following +%% certificate shall directly certify the one preceding it. The ASN.1 +%% representation of Certificate is as defined in [IETF RFC 2459]. +-define(CSI_X509CertificateChain, {'tk_sequence', 'tk_octet', 0}). + +%% an X.501 type name or Distinguished Name encapsulated in a sequence of +%% octets containing the ASN.1 encoding. +-define(CSI_X501DistinguishedName, {'tk_sequence', 'tk_octet', 0}). + +%% UTF-8 Encoding of String +-define(CSI_UTF8String, {'tk_sequence', 'tk_octet', 0}). + +%% A sequence of octets containing a GSStoken. Initial context tokens are +%% ASN.1 encoded as defined in [IETF RFC 2743] Section 3.1, +%% "Mechanism-Independent token Format", pp. 81-82. Initial context tokens +%% contain an ASN.1 tag followed by a token length, a mechanism identifier, +%% and a mechanism-specific token (i.e. a GSSUP::InitialContextToken). The +%% encoding of all other GSS tokens (e.g. error tokens and final context +%% tokens) is mechanism dependent. +-define(CSI_GSSToken, {'tk_sequence', 'tk_octet', 0}). + +%% An encoding of a GSS Mechanism-Independent Exported Name Object as +%% defined in [IETF RFC 2743] Section 3.2, "GSS Mechanism-Independent +%% Exported Name Object Format," p. 84. +-define(CSI_GSS_NT_ExportedName, {'tk_sequence', 'tk_octet', 0}). +-define(CSI_GSS_NT_ExportedNameList, {'tk_sequence', ?CSI_GSS_NT_ExportedName, 0}). + +%% The MsgType enumeration defines the complete set of service context +%% message types used by the CSI context management protocols, including +%% those message types pertaining only to the stateful application of the +%% protocols (to insure proper alignment of the identifiers between +%% stateless and stateful implementations). Specifically, the +%% MTMessageInContext is not sent by stateless clients (although it may +%% be received by stateless targets). +-define(CSI_MsgType, 'tk_short'). +-define(CSI_MsgType_MTEstablishContext, 0). +-define(CSI_MsgType_MTCompleteEstablishContext, 1). +-define(CSI_MsgType_MTContextError, 4). +-define(CSI_MsgType_MTMessageInContext, 5). + +%% The ContextId type is used carry session identifiers. A stateless +%% application of the service context protocol is indicated by a session +%% identifier value of 0. +-define(CSI_ContextId, 'tk_ulonglong'). + +%% The AuthorizationElementType defines the contents and encoding of +%% the_element field of the AuthorizationElement. +%% The high order 20-bits of each AuthorizationElementType constant +%% shall contain the Vendor Minor Codeset ID (VMCID) of the +%% organization that defined the element type. The low order 12 bits +%% shall contain the organization-scoped element type identifier. The +%% high-order 20 bits of all element types defined by the OMG shall +%% contain the VMCID allocated to the OMG (that is, 0x4F4D0). +-define(CSI_AuthorizationElementType, 'tk_ulong'). + +%% An AuthorizationElementType of X509AttributeCertChain indicates that +%% the_element field of the AuthorizationElement contains an ASN.1 BER +%% SEQUENCE composed of an (X.509) AttributeCertificate followed by a +%% SEQUENCE OF (X.509) Certificate. The two-part SEQUENCE is encapsulated +%% in an octet stream. The chain of identity certificates is provided +%% to certify the attribute certificate. Each certificate in the chain +%% shall directly certify the one preceding it. The first certificate +%% in the chain shall certify the attribute certificate. The ASN.1 +%% representation of (X.509) Certificate is as defined in [IETF RFC 2459]. +%% The ASN.1 representation of (X.509) AtributeCertificate is as defined +%% in [IETF ID PKIXAC]. +-define(CSI_X509AttributeCertChain, (?CSI_OMGVMCID bor 1)). +-define(CSI_AuthorizationElementContents, {'tk_sequence', 'tk_octet', 0}). + +%% The AuthorizationElement contains one element of an authorization token. +%% Each element of an authorization token is logically a PAC. +%% The AuthorizationToken is made up of a sequence of AuthorizationElements +%% --- NOTE --- +%% OMG only defines 'CSI_X509AttributeCertChain' so we use it as default value. +-record('CSI_AuthorizationElement', {the_type = ?CSI_X509AttributeCertChain, + the_element = []}). +-define(CSIIOP_AuthorizationElement, {'tk_struct', ?SYSTEM_TYPE, 'CSI_AuthorizationElement', + [{"the_type", ?CSI_AuthorizationElementType}, + {"the_element", ?CSI_AuthorizationElementContents}]}). +-define(CSI_AuthorizationToken, {'tk_sequence', ?CSIIOP_AuthorizationElement, 0}). + +%% Additional standard identity token types shall only be defined by the +%% OMG. All IdentityTokenType constants shall be a power of 2. +-define(CSI_IdentityTokenType, 'tk_ulong'). +-define(CSI_IdentityTokenType_ITTAbsent, 0). +-define(CSI_IdentityTokenType_ITTAnonymous, 1). +-define(CSI_IdentityTokenType_ITTPrincipalName, 2). +-define(CSI_IdentityTokenType_ITTX509CertChain, 4). +-define(CSI_IdentityTokenType_ITTDistinguishedName, 8). + +-define(CSI_IdentityExtension, {'tk_sequence', 'tk_octet', 0}). +-record('CSI_IdentityToken', {label, value}). +-define(CSI_IdentityToken, + {'tk_union', ?SYSTEM_TYPE, 'CSI_IdentityToken', + ?CSI_IdentityTokenType, 5, + [{?CSI_IdentityTokenType_ITTAbsent, "absent", 'tk_boolean'}, + {?CSI_IdentityTokenType_ITTAnonymous, "anonymous", 'tk_boolean'}, + {?CSI_IdentityTokenType_ITTPrincipalName, "principal_name", ?CSI_GSS_NT_ExportedName}, + {?CSI_IdentityTokenType_ITTX509CertChain, "certificate_chain", ?CSI_X509CertificateChain}, + {?CSI_IdentityTokenType_ITTDistinguishedName, "dn", ?CSI_X501DistinguishedName}, + {default, "id", ?CSI_IdentityExtension}]}). + +-record('CSI_EstablishContext', {client_context_id, authorization_token, + identity_token, client_authentication_token}). +-define(CSI_EstablishContext, {'tk_struct', ?SYSTEM_TYPE, 'CSI_EstablishContext', + [{"client_context_id", ?CSI_ContextId}, + {"authorization_token", ?CSI_AuthorizationToken}, + {"identity_token", ?CSI_IdentityToken}, + {"client_authentication_token", ?CSI_GSSToken}]}). + +-record('CSI_CompleteEstablishContext', {client_context_id, context_stateful, + final_context_token}). +-define(CSI_CompleteEstablishContext, {'tk_struct', ?SYSTEM_TYPE, 'CSI_CompleteEstablishContext', + [{"client_context_id", ?CSI_ContextId}, + {"context_stateful", 'tk_boolean'}, + {"final_context_token", ?CSI_GSSToken}]}). + +-record('CSI_ContextError', {client_context_id, major_status, + minor_status, error_token}). +-define(CSI_ContextError, {'tk_struct', ?SYSTEM_TYPE, 'CSI_ContextError', + [{"client_context_id", ?CSI_ContextId}, + {"major_status", 'tk_long'}, + {"minor_status", 'tk_long'}, + {"error_token", ?CSI_GSSToken}]}). + +% Not sent by stateless clients. If received by a stateless server, a +% ContextError message should be returned, indicating the session does +% not exist. +-record('CSI_MessageInContext', {client_context_id, discard_context}). +-define(CSI_MessageInContext, {'tk_struct', ?SYSTEM_TYPE, 'CSI_MessageInContext', + [{"client_context_id", ?CSI_ContextId}, + {"discard_context", 'tk_boolean'}]}). + +-record('CSI_SASContextBody', {label, value}). +-define(CSI_SASContextBody, + {'tk_union', ?SYSTEM_TYPE, 'CSI_SASContextBody', ?CSI_MsgType, -1, + [{?CSI_MsgType_MTEstablishContext, "establish_msg", ?CSI_EstablishContext}, + {?CSI_MsgType_MTCompleteEstablishContext, "complete_msg", ?CSI_CompleteEstablishContext}, + {?CSI_MsgType_MTContextError, "error_msg", ?CSI_ContextError}, + {?CSI_MsgType_MTMessageInContext, "in_context_msg", ?CSI_MessageInContext}]}). + +%% The following type represents the string representation of an ASN.1 +%% OBJECT IDENTIFIER (OID). OIDs are represented by the string "oid:" +%% followed by the integer base 10 representation of the OID separated +%% by dots. For example, the OID corresponding to the OMG is represented +%% as: "oid:2.23.130" +-define(CSI_StringOID, {'tk_string', 0}). + + +%% The GSS Object Identifier for the KRB5 mechanism is: +%% { iso(1) member-body(2) United States(840) mit(113554) infosys(1) +%% gssapi(2) krb5(2) } +%% Type ?CSI_StringOID +-define(CSI_KRB5MechOID, "oid:1.2.840.113554.1.2.2"). + +%% The GSS Object Identifier for name objects of the Mechanism-independent +%% Exported Name Object type is: +%% { iso(1) org(3) dod(6) internet(1) security(5) nametypes(6) +%% gss-api-exported-name(4) } +%% Type ?CSI_StringOID +-define(CSI_GSS_NT_Export_Name_OID, "oid:1.3.6.1.5.6.4"). + +%% The GSS Object Identifier for the scoped-username name form is: +%% { iso-itu-t (2) international-organization (23) omg (130) security (1) +%% naming (2) scoped-username(1) } +%% Type ?CSI_StringOID +-define(CSI_GSS_NT_Scoped_Username_OID, "oid:2.23.130.1.2.1"). + +%%------ GSSUP stuff - required by the SAS protocol. ------- +%% The GSS Object Identifier allocated for the username/password mechanism is defined +%% below. +%% { iso-itu-t (2) international-organization (23) omg (130) +%% security (1) authentication (1) gssup-mechanism (1) } +%% Type ?CSI_StringOID +-define(GSSUP_GSSUPMechOID, "oid:2.23.130.1.1.1"). + +%% The following structure defines the inner contents of the +%% username password initial context token. This structure is +%% CDR encapsulated and appended at the end of the +%% username/password GSS (initial context) Token. +-record('GSSUP_InitialContextToken', {username, password, target_name}). +-define(GSSUP_InitialContextToken, {'tk_struct', ?SYSTEM_TYPE, 'GSSUP_InitialContextToken', + [{"username", ?CSI_UTF8String}, + {"password", ?CSI_UTF8String}, + {"target_name", ?CSI_GSS_NT_ExportedName}]}). + +-define(GSSUP_ErrorCode, 'tk_ulong'). + +%% GSSUP Mechanism-Specific Error Token +-record('GSSUP_ErrorToken', {error_code}). +-define(GSSUP_ErrorToken, {'tk_struct', ?SYSTEM_TYPE, 'GSSUP_ErrorToken', + [{"error_code", ?GSSUP_ErrorCode}]}). + +%% The context validator has chosen not to reveal the GSSUP +%% specific cause of the failure. +%% Type ?GSSUP_ErrorCode +-define(GSSUP_GSS_UP_S_G_UNSPECIFIED, 1). + +%% The user identified in the username field of the +%% GSSUP::InitialContextToken is unknown to the target. +%% Type ?GSSUP_ErrorCode +-define(GSSUP_GSS_UP_S_G_NOUSER, 2). + +%% The password supplied in the GSSUP::InitialContextToken was +%% incorrect. +%% Type ?GSSUP_ErrorCode +-define(GSSUP_GSS_UP_S_G_BAD_PASSWORD, 3). + +%% The target_name supplied in the GSSUP::InitialContextToken does +%% not match a target_name in a mechanism definition of the target. +%% Type ?GSSUP_ErrorCode +-define(GSSUP_GSS_UP_S_G_BAD_TARGET, 4). + + +%%----- CSIIOP stuff - required by the SAS protocol. ----- + +% AssociationOptions +-define(CSIIOP_AssociationOptions, 'tk_ushort'). +%% AssociationOptions - constant definitions +-define(CSIIOP_AssociationOptions_NoProtection, 1). +-define(CSIIOP_AssociationOptions_Integrity, 2). +-define(CSIIOP_AssociationOptions_Confidentiality, 4). +-define(CSIIOP_AssociationOptions_DetectReplay, 8). +-define(CSIIOP_AssociationOptions_DetectMisordering, 16). +-define(CSIIOP_AssociationOptions_EstablishTrustInTarget, 32). +-define(CSIIOP_AssociationOptions_EstablishTrustInClient, 64). +-define(CSIIOP_AssociationOptions_NoDelegation, 128). +-define(CSIIOP_AssociationOptions_SimpleDelegation, 256). +-define(CSIIOP_AssociationOptions_CompositeDelegation, 512). +-define(CSIIOP_AssociationOptions_IdentityAssertion, 1024). +-define(CSIIOP_AssociationOptions_DelegationByClient, 2048). + +%% The high order 20-bits of each ServiceConfigurationSyntax constant +%% shall contain the Vendor Minor Codeset ID (VMCID) of the +%% organization that defined the syntax. The low order 12 bits shall +%% contain the organization-scoped syntax identifier. The high-order 20 +%% bits of all syntaxes defined by the OMG shall contain the VMCID +%% allocated to the OMG (that is, 0x4F4D0). +%% NOTE! The OMG VMCID is incorrect in the SAS specification, should be +%% OMGVMCID = 0x4f4d0000; +-define(CSIIOP_ServiceConfigurationSyntax, 'tk_ulong'). +-define(CSIIOP_ServiceConfigurationSyntax_SCS_GeneralNames, (?CSI_OMGVMCID bor 0)). +-define(CSIIOP_ServiceConfigurationSyntax_SCS_GSSExportedName, (?CSI_OMGVMCID bor 1)). + +-define(CSIIOP_ServiceSpecificName, {'tk_sequence', 'tk_octet', 0}). + +%% The name field of the ServiceConfiguration structure identifies a +%% privilege authority in the format identified in the syntax field. If the +%% syntax is SCS_GeneralNames, the name field contains an ASN.1 (BER) +%% SEQUENCE [1..MAX] OF GeneralName, as defined by the type GeneralNames in +%% [IETF RFC 2459]. If the syntax is SCS_GSSExportedName, the name field +%% contains a GSS exported name encoded according to the rules in +%% [IETF RFC 2743] Section 3.2, "Mechanism-Independent Exported Name +%% Object Format," p. 84 (CORBA-2.6) +-record('CSIIOP_ServiceConfiguration', {syntax, name}). +-define(CSIIOP_ServiceConfiguration, {'tk_struct', ?SYSTEM_TYPE, 'CSIIOP_ServiceConfiguration', + [{"syntax", ?CSIIOP_ServiceConfigurationSyntax}, + {"name", ?CSIIOP_ServiceSpecificName}]}). +-define(CSIIOP_ServiceConfigurationList, {'tk_sequence', ?CSIIOP_ServiceConfiguration, 0}). + +%% The body of the TAG_NULL_TAG component is a sequence of octets of +%% length 0. + +%% type used to define AS layer functionality within a compound mechanism +%% definition +-record('CSIIOP_AS_ContextSec', {target_supports = 0, target_requires = 0, + client_authentication_mech, target_name}). +-define(CSIIOP_AS_ContextSec, {'tk_struct', ?SYSTEM_TYPE, 'CSIIOP_AS_ContextSec', + [{"target_supports", ?CSIIOP_AssociationOptions}, + {"target_requires", ?CSIIOP_AssociationOptions}, + {"client_authentication_mech", ?CSI_OID}, + {"target_name", ?CSI_GSS_NT_ExportedName}]}). + +%% type used to define SAS layer functionality within a compound mechanism +%% definition +-record('CSIIOP_SAS_ContextSec', {target_supports = 0, target_requires = 0, + privilege_authorities, + supported_naming_mechanisms, + supported_identity_types}). +-define(CSIIOP_SAS_ContextSec, {'tk_struct', ?SYSTEM_TYPE, 'CSIIOP_SAS_ContextSec', + [{"target_supports", ?CSIIOP_AssociationOptions}, + {"target_requires", ?CSIIOP_AssociationOptions}, + {"privilege_authorities", ?CSIIOP_ServiceConfigurationList}, + {"supported_naming_mechanisms", ?CSI_OIDList}, + {"supported_identity_types", ?CSI_IdentityTokenType}]}). + +%% Type used in the body of a TAG_CSI_SEC_MECH_LIST component to describe a +%% compound mechanism +-record('CSIIOP_CompoundSecMech', {target_requires = 0, transport_mech, + as_context_mech, sas_context_mech}). +-define(CSIIOP_CompoundSecMech, {'tk_struct', ?SYSTEM_TYPE, 'CSIIOP_CompoundSecMech', + [{"target_requires", ?CSIIOP_AssociationOptions}, + {"transport_mech", ?IOP_TAGGEDCOMPONENT}, + {"as_context_mech", ?CSIIOP_AS_ContextSec}, + {"sas_context_mech", ?CSIIOP_SAS_ContextSec}]}). +-define(CSIIOP_CompoundSecMechanisms, {'tk_sequence', ?CSIIOP_CompoundSecMech, 0}). + +%% type corresponding to the body of a TAG_CSI_SEC_MECH_LIST component +-record('CSIIOP_CompoundSecMechList', {stateful = false, mechanism_list}). +-define(CSIIOP_CompoundSecMechList, {'tk_struct', ?SYSTEM_TYPE, 'CSIIOP_CompoundSecMechList', + [{"stateful", 'tk_boolean'}, + {"mechanism_list", ?CSIIOP_CompoundSecMechanisms}]}). +%% CSIIOP::TransportAddress +-record('CSIIOP_TransportAddress', {host_name, port}). +-define(CSIIOP_TransportAddress, {'tk_struct', ?SYSTEM_TYPE, 'CSIIOP_TransportAddress', + [{"host_name", {'tk_string', 0}}, + {"port", 'tk_ushort'}]}). +-define(CSIIOP_TransportAddressList, {'tk_sequence', ?CSIIOP_TransportAddress, 0}). + +%% Tagged component (TAG_TLS_SEC_TRANS) for configuring TLS/SSL as a CSIv2 +%% transport mechanism. +-record('CSIIOP_TLS_SEC_TRANS', {target_supports, target_requires, addresses}). +-define(CSIIOP_TLS_SEC_TRANS, {'tk_struct', ?SYSTEM_TYPE, 'CSIIOP_TLS_SEC_TRANS', + [{"target_supports", ?CSIIOP_AssociationOptions}, + {"target_requires", ?CSIIOP_AssociationOptions}, + {"addresses", ?CSIIOP_TransportAddressList}]}). + +%% Tagged component (TAG_SECIOP_SEC_TRANS) for configuring SECIOP as a CSIv2 +%% transport mechanism +-record('CSIIOP_SECIOP_SEC_TRANS', {target_supports = 0, target_requires = 0, mech_oid, + target_name, addresses}). +-define(CSIIOP_SECIOP_SEC_TRANS, {'tk_struct', ?SYSTEM_TYPE, 'CSIIOP_SECIOP_SEC_TRANS', + [{"target_supports", ?CSIIOP_AssociationOptions}, + {"target_requires", ?CSIIOP_AssociationOptions}, + {"mech_oid", ?CSI_OID}, + {"target_name", ?CSI_GSS_NT_ExportedName}, + {"addresses", ?CSIIOP_TransportAddressList}]}). + + +%%-- ServiceContext ID's ------------ +%% Describes what type of context included, i.e., +%% typedef unsigned long ServiceId; +%% struct ServiceContext { +%% ServiceId context_id; +%% sequence <octet> context_data; +%% }; + +%% The record is defined in include/corba.hrl. +%%-record('IOP_ServiceContext', {context_id, context_data}). +-define(IOP_SERVICECONTEXT, {'tk_sequence', + {'tk_struct', ?SYSTEM_TYPE, 'IOP_ServiceContext', + [{"context_id", 'tk_ulong'}, + {"context_data", + {'tk_sequence', 'tk_octet', 0}}]}, 0}). + +-record('CONV_FRAME_CodeSetContext', {char_data, wchar_data}). +-define(CONV_FRAME_CODESETCONTEXT, {'tk_struct', ?SYSTEM_TYPE, 'CONV_FRAME_CodeSetContext', + [{"char_data", 'tk_ulong'}, + {"wchar_data", 'tk_ulong'}]}). + + +-record('IIOP_ListenPoint', {host, port}). +-define(IIOP_LISTENPOINT, {'tk_struct', ?SYSTEM_TYPE, 'IIOP_ListenPoint', + [{"host", {'tk_string', 0}}, + {"port", 'tk_ushort'}]}). + +-record('IIOP_BiDirIIOPServiceContext', {listen_points}). +-define(IIOP_BIDIRIIOPSERVICECONTEXT, + {'tk_struct', ?SYSTEM_TYPE, 'IIOP_BiDirIIOPServiceContext', + [{"listen_points", {'tk_sequence', ?IIOP_LISTENPOINT, 0}}]}). + +-define(IOP_TransactionService, 0). +-define(IOP_CodeSets, 1). +-define(IOP_ChainBypassCheck, 2). +-define(IOP_ChainBypassInfo, 3). +-define(IOP_LogicalThreadId, 4). +-define(IOP_BI_DIR_IIOP, 5). +-define(IOP_SendingContextRunTime, 6). +-define(IOP_INVOCATION_POLICIES, 7). +-define(IOP_FORWARDED_IDENTITY, 8). +-define(IOP_UnknownExceptionInfo, 9). +-define(IOP_RTCorbaPriority, 10). +-define(IOP_RTCorbaPriorityRange, 11). +-define(IOP_FT_GROUP_VERSION, 12). +-define(IOP_FT_REQUEST, 13). +-define(IOP_ExceptionDetailMessage, 14). +-define(IOP_SecurityAttributeService, 15). + + + +%%---------------------------------------------------------------------- +%% host_data +%%---------------------------------------------------------------------- +-record(host_data, {protocol = normal, ssl_data, version, csiv2_mech, + csiv2_statefull = false, csiv2_addresses = [], + charset = ?ISO8859_1_ID, wcharset = ?UTF_16_ID, + ft_heartbeat = false, ft_primary = false, ft_domain, + ft_group, ft_ref_version}). + +%%---------------------------------------------------------------------- +%% giop_env +%%---------------------------------------------------------------------- +-record(giop_env, {interceptors, type, version, bytes, ctx = [], + request_id, op, parameters = [], tc, response_expected, + objkey, reply_status, result, flags, host, iiop_port, + iiop_ssl_port, domain, partial_security}). + +-endif. + +%%---------------------------------------------------------------------- +%% END OF MODULE +%%---------------------------------------------------------------------- |