aboutsummaryrefslogtreecommitdiffstats
path: root/lib/orber/src/orber_iiop.hrl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/orber/src/orber_iiop.hrl')
-rw-r--r--lib/orber/src/orber_iiop.hrl1015
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
+%%----------------------------------------------------------------------