%%--------------------------------------------------------------------
%%
%% %CopyrightBegin%
%%
%% Copyright Ericsson AB 1997-2017. All Rights Reserved.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions 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 address 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
%%----------------------------------------------------------------------