/****************************************************************************/ /* */ /* **** COPYRIGHT NOTICE **** */ /* */ /* */ /* Copyright (c) Digital Equipment Corporation, 1994 */ /* */ /* All Rights Reserved. Unpublished rights reserved under the */ /* copyright laws of the United States. */ /* */ /* The software contained on this media is proprietary to and */ /* embodies the confidential technology of Digital Equipment */ /* Corporation. Possession, use, duplication or dissemination */ /* of the software and media is authorized only pursuant to a */ /* valid written license from Digital Equipment Corporation. */ /* */ /* */ /* The information in this software is subject to change without notice */ /* and should not be construed as a commitment by DIGITAL EQUIPMENT */ /* CORPORATION. */ /* */ /* DIGITAL assumes no responsibility for the use or reliability of its */ /* software on equipment which is not supplied by DIGITAL. */ /* */ /* */ /****************************************************************************/ /****************************************************************************** ** ** FACILITY: DECss7 - Signalling System 7 ** ** ENVIRONMENT: OSF/1 ** ** MODULE NAME: ss7mgttoolsapi.h ** ** DESCRIPTION: ** ** This module declares routine entrypoints and associated data ** structures which collectively define the DECss7 Application ** Programming Interface for management tools. ** ** REMARK: Usage: #include ** ******************************************************************************/ #ifdef __unix__ #include #else #ifdef __cplusplus #ifndef _BEGIN_CPLUSPLUS #define _BEGIN_CPLUSPLUS extern "C" { #endif #ifndef _END_CPLUSPLUS #define _END_CPLUSPLUS } #endif #else #ifndef _BEGIN_CPLUSPLUS #define _BEGIN_CPLUSPLUS #endif #ifndef _END_CPLUSPLUS #define _END_CPLUSPLUS #endif #endif /* __cplusplus */ #endif /* __unix__ */ #ifndef _SS7MGTTOOLSAPI_H_ #define _SS7MGTTOOLSAPI_H_ _BEGIN_CPLUSPLUS #ifdef WIN32 #include "ss7_mgt_k_common.h" #else #include "ss7_mgt_k_common_.h" #endif #ifndef _SS7_BOOLEAN_T_ #define _SS7_BOOLEAN_T_ typedef unsigned char ss7_boolean_t; enum {SS7_K_FALSE=0, SS7_K_TRUE}; #endif /**************************************************************************** * * CONSTANTS USED BY API ROUTINES AND TYPES * ****************************************************************************/ #define SS7_K_INPUT_LIST_MAX_LEN 2000 /*Maximum length of an input-list*/ #define SS7_K_NB_MAX_ATTRIB_BY_GROUP 255 /*Number max of attributes by group and entity*/ #define SS7_K_OCTET_STRING_ATTRIB_MAX_LEN 512 /*Max length of string attrib. if tag is octet string*/ #define SS7_K_VISIBLE_STRING_ATTRIB_MAX_LEN 64 /*Max length of string attrib. if tag is visible string*/ /**************************************************************************** * * TYPES USED BY API ROUTINES * ****************************************************************************/ /***********************************************************/ /* */ /* Type used to encode input-list: */ /* */ /***********************************************************/ typedef struct { unsigned int group; unsigned int identifier; } ss7_attribute_reference_t; struct ss7_int_value_s { int value; }; struct ss7_real_value_s { float value; }; struct ss7_string_value_s { unsigned int length; char value[SS7_K_STRING_ATT_VALUE_MAX_LEN]; }; union ss7_tag_dep_att_info_req_u { struct ss7_int_value_s int_tag; struct ss7_real_value_s real_tag; struct ss7_string_value_s string_tag; }; typedef struct { unsigned int identifier; unsigned int tag; union ss7_tag_dep_att_info_req_u tag_dependent_value; } ss7_attribute_value_t; typedef union { char affected_pc[4]; unsigned int user_status; } ss7_primitive_info_t; /***********************************************************/ /* */ /* Type used to decode output-list: */ /* */ /***********************************************************/ /******************************************************************** * ss7_node_name_t: * Contains a FEP or BEP node name encoded as a string. ********************************************************************/ typedef struct { char name[SS7_K_NODE_NAME_MAX_LEN]; unsigned int length; }ss7_node_name_t; struct ss7_class_s { unsigned int name; unsigned int instance; }; /******************************************************************** * struct ss7_entity_name_s: * Contains the informations included into the entity_name component. * Examples: * -FEP FEP1 MTP3 LINKSET 1 LINK 2: * subsystem_code = SS7_K_FEP_SUBSYSTEM * subsystem_instance.name = FEP1 * subsystem_instance.length = 4 * class_array[0].name = SS7_K_MTP3 * class_array[0].instance = 0 * class_array[1].name = SS7_K_LINKSET * class_array[1].instance = 1 * class_array[2].name = SS7_K_LINK * class_array[2].instance =2 * class_number = 3 * entity_is_user_appl = SS7_K_FALSE * -For a USER_APPL instance: BEP BEP1 USER_APPL TUP * subsystem_code = SS7_K_BEP_SUBSYSTEM * subsystem_instance.name = BEP1 * subsystem_instance.length = 4 * class_number = 0 * entity_is_user_appl = SS7_K_TRUE * user_appl_instance = TUP (always on 8 bytes) * ********************************************************************/ struct ss7_entity_name_s { unsigned int subsystem_code; ss7_node_name_t subsystem_instance; struct ss7_class_s class_array[SS7_K_NB_MAX_CLASS_LEVEL]; unsigned int class_number; ss7_boolean_t entity_is_user_appl; char user_appl_instance[SS7_K_USER_APPL_INST_MAX_LEN]; }; /******************************************************************** * struct ss7_timestamp_s: * Contains the informations included into the timestamp component. ********************************************************************/ struct ss7_timestamp_s { char value[8]; }; /******************************************************************** * struct ss7_string_event_arg_value_s: * Contains the event argument value when the value is of string type. ********************************************************************/ struct ss7_string_event_arg_value_s { unsigned int length; char value[SS7_K_STRING_EVENT_ARG_MAX_LEN]; }; /******************************************************************************* * union ss7_tag_dep_event_arg_u: * Contains the event argument value included into the event_argument component. * This value is tag dependent. ********************************************************************************/ union ss7_tag_dep_event_arg_u { struct ss7_int_value_s int_tag; struct ss7_string_event_arg_value_s string_tag; }; /******************************************************************** * struct ss7_sccp_message_s: * Contains the informations included into the sccp_message component. ********************************************************************/ struct ss7_sccp_message_s { ss7_boolean_t affected_ssn_is_present; ss7_boolean_t affected_pc_is_present; ss7_boolean_t user_status_is_present; ss7_boolean_t pc_status_is_present; ss7_boolean_t smi_is_present; unsigned int primitive_type; unsigned int affected_ssn; unsigned int user_status; unsigned int pc_status; unsigned int smi; char affected_pc[4]; }; /******************************************************************* * struct ss7_test_s: * Includes the informations associated Text component. ********************************************************************/ struct ss7_text_s { unsigned int length; char value[SS7_K_TEXT_MAX_LEN]; }; /******************************************************************* * struct ss7_request_status_s: * Includes the informations associated to one of the following components: * create_status, addrem_status, action_status, delete_status. ********************************************************************/ struct ss7_request_status_s { unsigned int status; ss7_boolean_t content_is_present; unsigned int content; }; struct ss7_string_value_ol_s { unsigned int length; char *value; }; union ss7_tag_dep_att_info_rsp_u { struct ss7_int_value_s int_tag; struct ss7_real_value_s real_tag; struct ss7_string_value_ol_s string_tag; }; /******************************************************************* * struct ss7_attribute_info_s: * Contains the informations associated to one attribute included into one of the * following components: Create_att_status_list, Modify_att_status_list, * Addrem_att_status_list, Show_att_status_list or Event_att_status_list. ********************************************************************/ struct ss7_attribute_info_s { unsigned int identifier; unsigned int status; unsigned int group; ss7_boolean_t value_is_present; unsigned int value_tag; union ss7_tag_dep_att_info_rsp_u tag_dependent_value; }; /******************************************************************** * union ss7_tag_dep_inst_code_u: * Contains the tag dependent instance code value. ********************************************************************/ union ss7_tag_dep_inst_code_u { struct ss7_int_value_s int_tag; struct ss7_string_value_s string_tag; }; /*********************************************************************** * struct ss7_event_report_s: * Contains the informations included into an event report output_list. ************************************************************************/ struct ss7_event_report_s { struct ss7_entity_name_s entity_name; unsigned int event_id; struct ss7_timestamp_s timestamp; ss7_boolean_t event_argument_is_present; unsigned int event_argument_tag; union ss7_tag_dep_event_arg_u event_argument; unsigned int event_severity; }; /********************************************************************** * struct ss7_sccp_report_s: * Contains the informations included into an sccp report output_list. ***********************************************************************/ struct ss7_sccp_report_s { struct ss7_entity_name_s entity_name; struct ss7_sccp_message_s sccp_message; struct ss7_timestamp_s timestamp; }; /********************************************************************************* * struct ss7_response_s: * Contains the informations included into a request response output_list. * Remark: * attribute_info_array corresponds to one of the following components: * Create_att_status_list, Modify_att_status_list, * Show_att_status_list, Event_att_status_list or Addrem_att_status_list. ***********************************************************************************/ struct ss7_response_s { ss7_boolean_t timestamp_is_present; ss7_boolean_t entity_name_is_present; ss7_boolean_t class_code_is_present; ss7_boolean_t instance_code_is_present; ss7_boolean_t text_is_present; ss7_boolean_t bad_group_is_present; ss7_boolean_t role_code_is_present; ss7_boolean_t asso_option_is_present; ss7_boolean_t association_id_is_present; ss7_boolean_t request_status_is_present; ss7_boolean_t attribute_array_is_present; unsigned int response_code; unsigned int role_code; unsigned int asso_option; unsigned int association_id; struct ss7_timestamp_s timestamp; struct ss7_entity_name_s entity_name; unsigned int class_code; unsigned int instance_code_tag; union ss7_tag_dep_inst_code_u instance_code; struct ss7_text_s text; struct ss7_request_status_s request_status; unsigned int bad_group; unsigned int attribute_number; struct ss7_attribute_info_s *attribute_array[SS7_K_NB_MAX_ATTRIB_BY_REQUEST]; }; /********************************************************************************* * typedef struct ss7_process_name_t: * Contains the service application name. ***********************************************************************************/ typedef struct { char name[SS7_K_PROCESS_NAME_MAX_LEN]; unsigned int length; } ss7_process_name_t ; /********************************************************************************* * struct ss7_process_status_indic_s: * Contains the informations included into a process status indications * output_list. ***********************************************************************************/ struct ss7_process_status_indic_s { unsigned int process_status; unsigned int process_type; ss7_node_name_t node_name; ss7_boolean_t process_name_is_present; ss7_process_name_t process_name; struct ss7_timestamp_s timestamp; }; /********************************************************************************* * struct ss7_last_process_status_indic_s: * Contains the informations included into a last process status indications * output_list. ***********************************************************************************/ struct ss7_last_process_status_indic_s { unsigned int process_type; ss7_node_name_t node_name; struct ss7_timestamp_s timestamp; }; /*********************************************************************** * struct ss7_command_notification_s: * Contains the informations included into a command notification * output_list. ************************************************************************/ struct ss7_command_notification_s { struct ss7_entity_name_s entity_name; unsigned int directive_type; struct ss7_timestamp_s timestamp; ss7_boolean_t attribute_array_is_present; unsigned int attribute_number; struct ss7_attribute_info_s *attribute_array[SS7_K_NB_MAX_ATTRIB_BY_REQUEST]; }; /************************************************************************** * typedef struct ss7_decoded_output_list_t: * Contains the informations included into an output_list. The output-list * can be either an event report, an sccp report, a request response, * a process indication or a last process indication. ***************************************************************************/ typedef struct { unsigned int output_list_type; struct ss7_event_report_s* event_report; struct ss7_sccp_report_s* sccp_report; struct ss7_response_s* response; struct ss7_process_status_indic_s* process_status_indic; struct ss7_last_process_status_indic_s* last_process_status_indic; struct ss7_command_notification_s* command_notif; } ss7_decoded_output_list_t; /***********************************************************/ /* */ /* Type used to consolidate answers: */ /* */ /***********************************************************/ typedef struct { struct ss7_response_s *response; ss7_node_name_t operational_node_array[SS7_K_NODE_MAX_NB]; unsigned int number_of_operational_node; ss7_node_name_t non_operational_node_array[SS7_K_NODE_MAX_NB]; unsigned int number_of_non_operational_node; } ss7_consolidated_data_t; /**************************************************************************** * * ROUTINE PROTOTYPES * ****************************************************************************/ void ss7_mgt_free_encoded_il ( unsigned char **input_list_address ); unsigned int ss7_mgt_encode_il_with_att_ref ( unsigned long directive, ss7_attribute_reference_t attribute_array[], unsigned long number_of_attributes, unsigned char **input_list_address, unsigned long *input_list_length ); unsigned int ss7_mgt_encode_il_with_att_val ( unsigned long directive, ss7_attribute_value_t attribute_array[], unsigned long number_of_attributes, unsigned char **input_list_address, unsigned long *input_list_length ); unsigned int ss7_mgt_encode_il_send_sccp_p ( unsigned long primitive_type, ss7_primitive_info_t primitive_info, unsigned char **input_list_address, unsigned long *input_list_length ); unsigned int ss7_mgt_decode_ol ( unsigned char *output_list_address, ss7_decoded_output_list_t **decoded_output_list ); void ss7_mgt_free_decoded_ol ( ss7_decoded_output_list_t **decoded_output_list ); unsigned int ss7_mgt_is_last_answer ( unsigned char *output_list_address, unsigned long *answer_sequence ); void ss7_mgt_free_conso_answer ( ss7_consolidated_data_t **consolidated_data ); unsigned int ss7_mgt_conso_answer ( unsigned char* output_list_address_array[], unsigned long number_of_output_list, ss7_consolidated_data_t **consolidated_data ); /**************************************************************************** * * MACRO ACCESSING TO DATA INCLUDED INTO A DECODED OUTPUT_LIST * ****************************************************************************/ #define SS7_GET_OUTPUT_LIST_TYPE(decoded_ol) decoded_ol->output_list_type /****************************************** * * ACCESS TO THE DECODED EVENT_REPORT FIELDS * *******************************************/ /*************************** EVENT_ARGUMENT COMPONENT ********************************/ #define SS7_EVT_EVENT_ARG_IS_PRESENT(decoded_ol)\ decoded_ol->event_report->event_argument_is_present #define SS7_EVT_GET_EVENT_ARG_TAG(decoded_ol)\ decoded_ol->event_report->event_argument_tag #define SS7_EVT_GET_STRING_EVENT_ARG_VALUE(decoded_ol)\ decoded_ol->event_report->event_argument.string_tag.value #define SS7_EVT_GET_STRING_EVENT_ARG_LEN(decoded_ol)\ decoded_ol->event_report->event_argument.string_tag.length #define SS7_EVT_GET_INT_EVENT_ARG_VALUE(decoded_ol)\ decoded_ol->event_report->event_argument.int_tag.value /*************************** ENTITY_NAME COMPONENT ********************************/ #define SS7_EVT_GET_ENTITY_SUBSYSTEM_CODE(decoded_ol)\ decoded_ol->event_report->entity_name.subsystem_code #define SS7_EVT_GET_ENTITY_SUBSYSTEM_INST_NAME(decoded_ol)\ decoded_ol->event_report->entity_name.subsystem_instance.name #define SS7_EVT_GET_ENTITY_SUBSYSTEM_INST_LEN(decoded_ol)\ decoded_ol->event_report->entity_name.subsystem_instance.length #define SS7_EVT_GET_ENTITY_CLASS_NAME(decoded_ol,index)\ decoded_ol->event_report->entity_name.class_array[index].name #define SS7_EVT_GET_ENTITY_CLASS_INST(decoded_ol,index)\ decoded_ol->event_report->entity_name.class_array[index].instance #define SS7_EVT_GET_ENTITY_CLASS_NUMBER(decoded_ol)\ decoded_ol->event_report->entity_name.class_number #define SS7_EVT_ENTITY_IS_USER_APPL(decoded_ol)\ decoded_ol->event_report->entity_name.entity_is_user_appl /*************************** EVENT_ID COMPONENT ******************************/ #define SS7_EVT_GET_EVENT_ID(decoded_ol) decoded_ol->event_report->event_id #define SS7_EVT_GET_EVENT_SEVERITY(decoded_ol) decoded_ol->event_report->event_severity /************************* EVENT_TIMESTAMP COMPONENT *****************************/ #define SS7_EVT_GET_TIMESTAMP(decoded_ol) decoded_ol->event_report->timestamp.value /***************************************** * * ACCESS TO THE DECODED SCCP_REPORT FIELDS * ******************************************/ /*************************** ENTITY_NAME COMPONENT ********************************/ #define SS7_SCC_GET_ENTITY_SUBSYSTEM_CODE(decoded_ol)\ decoded_ol->sccp_report->entity_name.subsystem_code #define SS7_SCC_GET_ENTITY_SUBSYSTEM_INST_NAME(decoded_ol)\ decoded_ol->sccp_report->entity_name.subsystem_instance.name #define SS7_SCC_GET_ENTITY_SUBSYSTEM_INST_LEN(decoded_ol)\ decoded_ol->sccp_report->entity_name.subsystem_instance.length #define SS7_SCC_GET_ENTITY_CLASS_NAME(decoded_ol,index)\ decoded_ol->sccp_report->entity_name.class_array[index].name #define SS7_SCC_GET_ENTITY_CLASS_INST(decoded_ol,index)\ decoded_ol->sccp_report->entity_name.class_array[index].instance #define SS7_SCC_GET_ENTITY_CLASS_NUMBER(decoded_ol)\ decoded_ol->sccp_report->entity_name.class_number /*************************** SCCP_MESSAGE COMPONENT ********************************/ #define SS7_SCC_GET_PRIMITIVE_TYPE(decoded_ol)\ decoded_ol->sccp_report->sccp_message.primitive_type #define SS7_SCC_AFFECTED_SSN_IS_PRESENT(decoded_ol)\ decoded_ol->sccp_report->sccp_message.affected_ssn_is_present #define SS7_SCC_GET_AFFECTED_SSN(decoded_ol)\ decoded_ol->sccp_report->sccp_message.affected_ssn #define SS7_SCC_AFFECTED_PC_IS_PRESENT(decoded_ol)\ decoded_ol->sccp_report->sccp_message.affected_pc_is_present #define SS7_SCC_GET_AFFECTED_PC(decoded_ol)\ decoded_ol->sccp_report->sccp_message.affected_pc #define SS7_SCC_USER_STATUS_IS_PRESENT(decoded_ol)\ decoded_ol->sccp_report->sccp_message.user_status_is_present #define SS7_SCC_GET_USER_STATUS(decoded_ol)\ decoded_ol->sccp_report->sccp_message.user_status #define SS7_SCC_PC_STATUS_IS_PRESENT(decoded_ol)\ decoded_ol->sccp_report->sccp_message.pc_status_is_present #define SS7_SCC_GET_PC_STATUS(decoded_ol)\ decoded_ol->sccp_report->sccp_message.pc_status #define SS7_SCC_SMI_IS_PRESENT(decoded_ol)\ decoded_ol->sccp_report->sccp_message.smi_is_present #define SS7_SCC_GET_SMI(decoded_ol)\ decoded_ol->sccp_report->sccp_message.smi /*********************** SCCP_REPORT_TIMESTAMP COMPONENT **************************/ #define SS7_SCC_GET_TIMESTAMP(decoded_ol) decoded_ol->sccp_report->timestamp.value /************************************** * * ACCESS TO THE DECODED RESPONSE FIELDS * ***************************************/ /************************** RESPONSE_CODE COMPONENT ******************************/ #define SS7_RSP_GET_RESPONSE_CODE(decoded_ol) decoded_ol->response->response_code /*************************** ENTITY_NAME COMPONENT ********************************/ #define SS7_RSP_ENTITY_NAME_IS_PRESENT(decoded_ol)\ decoded_ol->response->entity_name_is_present #define SS7_RSP_GET_ENTITY_SUBSYSTEM_CODE(decoded_ol)\ decoded_ol->response->entity_name.subsystem_code #define SS7_RSP_GET_ENTITY_SUBSYSTEM_INST_NAME(decoded_ol)\ decoded_ol->response->entity_name.subsystem_instance.name #define SS7_RSP_GET_ENTITY_SUBSYSTEM_INST_LEN(decoded_ol)\ decoded_ol->response->entity_name.subsystem_instance.length #define SS7_RSP_GET_ENTITY_CLASS_NAME(decoded_ol,index)\ decoded_ol->response->entity_name.class_array[index].name #define SS7_RSP_GET_ENTITY_CLASS_INST(decoded_ol,index)\ decoded_ol->response->entity_name.class_array[index].instance #define SS7_RSP_GET_ENTITY_CLASS_NUMBER(decoded_ol)\ decoded_ol->response->entity_name.class_number #define SS7_RSP_ENTITY_IS_USER_APPL(decoded_ol)\ decoded_ol->response->entity_name.entity_is_user_appl #define SS7_RSP_GET_USER_APPL_INSTANCE(decoded_ol)\ decoded_ol->response->entity_name.user_appl_instance /*************************** TIMESTAMP COMPONENT ********************************/ #define SS7_RSP_TIMESTAMP_IS_PRESENT(decoded_ol)\ decoded_ol->response->timestamp_is_present #define SS7_RSP_GET_TIMESTAMP(decoded_ol) decoded_ol->response->timestamp.value /*************************** CLASS_CODE COMPONENT ********************************/ #define SS7_RSP_CLASS_CODE_IS_PRESENT(decoded_ol)\ decoded_ol->response->class_code_is_present #define SS7_RSP_GET_CLASS_CODE(decoded_ol)\ decoded_ol->response->class_code /*************************** INSTANCE_CODE COMPONENT *******************************/ #define SS7_RSP_INSTANCE_CODE_IS_PRESENT(decoded_ol)\ decoded_ol->response->instance_code_is_present #define SS7_RSP_GET_INSTANCE_CODE_TAG(decoded_ol)\ decoded_ol->response->instance_code_tag #define SS7_RSP_GET_INT_INSTANCE_CODE_VALUE(decoded_ol)\ decoded_ol->response->instance_code.int_tag.value #define SS7_RSP_GET_STRING_INSTANCE_CODE_VALUE(decoded_ol)\ decoded_ol->response->instance_code.string_tag.value #define SS7_RSP_GET_STRING_INSTANCE_CODE_LEN(decoded_ol)\ decoded_ol->response->instance_code.string_tag.length /*************************** TEXT COMPONENT *******************************/ #define SS7_RSP_TEXT_IS_PRESENT(decoded_ol)\ decoded_ol->response->text_is_present #define SS7_RSP_GET_TEXT_VALUE(decoded_ol)\ decoded_ol->response->text.value #define SS7_RSP_GET_TEXT_LEN(decoded_ol)\ decoded_ol->response->text.length /*************************** BAD_GROUP COMPONENT ****************************/ #define SS7_RSP_BAD_GROUP_IS_PRESENT(decoded_ol)\ decoded_ol->response->bad_group_is_present #define SS7_RSP_GET_BAD_GROUP(decoded_ol)\ decoded_ol->response->bad_group /*************************** ROLE_CODE COMPONENT ****************************/ #define SS7_RSP_ROLE_CODE_IS_PRESENT(decoded_ol)\ decoded_ol->response->role_code_is_present #define SS7_RSP_GET_ROLE_CODE(decoded_ol)\ decoded_ol->response->role_code /*************************** ASSO_OPTION COMPONENT ****************************/ #define SS7_RSP_ASSO_OPTION_IS_PRESENT(decoded_ol)\ decoded_ol->response->asso_option_is_present #define SS7_RSP_GET_ASSO_OPTION(decoded_ol)\ decoded_ol->response->asso_option /********************** ASSOCIATION_ID COMPONENT ***************************/ #define SS7_RSP_ASSO_ID_IS_PRESENT(decoded_ol)\ decoded_ol->response->association_id_is_present #define SS7_RSP_GET_ASSO_ID(decoded_ol)\ decoded_ol->response->association_id /********************** REQUEST_STATUS COMPONENT ***************************/ #define SS7_RSP_REQ_STATUS_IS_PRESENT(decoded_ol)\ decoded_ol->response->request_status_is_present #define SS7_RSP_GET_REQ_STATUS(decoded_ol)\ decoded_ol->response->request_status.status #define SS7_RSP_REQ_STATUS_CONTENT_IS_PRESENT(decoded_ol)\ decoded_ol->response->request_status.content_is_present #define SS7_RSP_GET_REQ_STATUS_CONTENT(decoded_ol)\ decoded_ol->response->request_status.content /******************** ATTRIBUTE_ARRAY COMPONENT ************************/ #define SS7_RSP_ATTRIB_ARRAY_IS_PRESENT(decoded_ol)\ decoded_ol->response->attribute_array_is_present #define SS7_RSP_GET_ATTRIB_ID(decoded_ol, index)\ decoded_ol->response->attribute_array[index]->identifier #define SS7_RSP_GET_ATTRIB_STATUS(decoded_ol, index)\ decoded_ol->response->attribute_array[index]->status #define SS7_RSP_GET_ATTRIB_GROUP(decoded_ol, index)\ decoded_ol->response->attribute_array[index]->group #define SS7_RSP_ATTRIB_VALUE_IS_PRESENT(decoded_ol, index)\ decoded_ol->response->attribute_array[index]->value_is_present #define SS7_RSP_GET_ATTRIB_TAG(decoded_ol, index)\ decoded_ol->response->attribute_array[index]->value_tag #define SS7_RSP_GET_INT_ATTRIB_VALUE(decoded_ol, index)\ decoded_ol->response->attribute_array[index]->tag_dependent_value.int_tag.value #define SS7_RSP_GET_REAL_ATTRIB_VALUE(decoded_ol, index)\ decoded_ol->response->attribute_array[index]->tag_dependent_value.real_tag.value #define SS7_RSP_GET_STRING_ATTRIB_VALUE(decoded_ol, index)\ decoded_ol->response->attribute_array[index]->tag_dependent_value.string_tag.value #define SS7_RSP_GET_STRING_ATTRIB_LEN(decoded_ol, index)\ decoded_ol->response->attribute_array[index]->tag_dependent_value.string_tag.length #define SS7_RSP_GET_ATTRIB_NUMBER(decoded_ol)\ decoded_ol->response->attribute_number /************** ACCESSING FIELDS TO CONSOLIDATED DATA STRUCTURE ******************/ #define SS7_RSP_GET_OPER_NODE_NUMBER(consolidated_data)\ consolidated_data->number_of_operational_node #define SS7_RSP_GET_OPER_NODE_NAME(consolidated_data, index)\ consolidated_data->operational_node_array[index].name #define SS7_RSP_GET_OPER_NODE_LEN(consolidated_data, index)\ consolidated_data->operational_node_array[index].length #define SS7_RSP_GET_NON_OPER_NODE_NUMBER(consolidated_data)\ consolidated_data->number_of_non_operational_node #define SS7_RSP_GET_NON_OPER_NODE_NAME(consolidated_data, index)\ consolidated_data->non_operational_node_array[index].name #define SS7_RSP_GET_NON_OPER_NODE_LEN(consolidated_data, index)\ consolidated_data->non_operational_node_array[index].length /*Plus all the SS7_RSP_... macros defined previously*/ /****************************************** * * ACCESS TO THE DECODED PROCESS_STATUS_INDICATION FIELDS * *******************************************/ /*************************** PROCESS_STATUS COMPONENT ********************************/ #define SS7_PSI_GET_PROCESS_STATUS(decoded_ol)\ decoded_ol->process_status_indic->process_status /*************************** PROCESS_TYPE COMPONENT ********************************/ #define SS7_PSI_GET_PROCESS_TYPE(decoded_ol)\ decoded_ol->process_status_indic->process_type /*************************** NODE NAME COMPONENT ********************************/ #define SS7_PSI_GET_NODE_LEN(decoded_ol)\ decoded_ol->process_status_indic->node_name.length #define SS7_PSI_GET_NODE_NAME(decoded_ol)\ decoded_ol->process_status_indic->node_name.name /*************************** PROCESS NAME COMPONENT ********************************/ #define SS7_PSI_PROCESS_NAME_IS_PRESENT(decoded_ol)\ decoded_ol->process_status_indic->process_name_is_present #define SS7_PSI_GET_PROCESS_LEN(decoded_ol)\ decoded_ol->process_status_indic->process_name.length #define SS7_PSI_GET_PROCESS_NAME(decoded_ol)\ decoded_ol->process_status_indic->process_name.name /************************* TIMESTAMP COMPONENT *****************************/ #define SS7_PSI_GET_TIMESTAMP(decoded_ol) decoded_ol->process_status_indic->timestamp.value /****************************************** * * ACCESS TO THE DECODED LAST_PROCESS_STATUS_INDICATION FIELDS * *******************************************/ /*************************** PROCESS_TYPE COMPONENT ********************************/ #define SS7_LPSI_GET_PROCESS_TYPE(decoded_ol)\ decoded_ol->last_process_status_indic->process_type /*************************** NODE NAME COMPONENT ********************************/ #define SS7_LPSI_GET_NODE_LEN(decoded_ol)\ decoded_ol->last_process_status_indic->node_name.length #define SS7_LPSI_GET_NODE_NAME(decoded_ol)\ decoded_ol->last_process_status_indic->node_name.name /************************* TIMESTAMP COMPONENT *****************************/ #define SS7_LPSI_GET_TIMESTAMP(decoded_ol) decoded_ol->last_process_status_indic->timestamp.value /************************************************** * * ACCESS TO THE DECODED COMMAND_NOTIFICATION FIELDS * ***************************************************/ /*************************** ENTITY_NAME COMPONENT ********************************/ #define SS7_CNO_GET_ENTITY_SUBSYSTEM_CODE(decoded_ol)\ decoded_ol->command_notif->entity_name.subsystem_code #define SS7_CNO_GET_ENTITY_SUBSYSTEM_INST_NAME(decoded_ol)\ decoded_ol->command_notif->entity_name.subsystem_instance.name #define SS7_CNO_GET_ENTITY_SUBSYSTEM_INST_LEN(decoded_ol)\ decoded_ol->command_notif->entity_name.subsystem_instance.length #define SS7_CNO_GET_ENTITY_CLASS_NAME(decoded_ol,index)\ decoded_ol->command_notif->entity_name.class_array[index].name #define SS7_CNO_GET_ENTITY_CLASS_INST(decoded_ol,index)\ decoded_ol->command_notif->entity_name.class_array[index].instance #define SS7_CNO_GET_ENTITY_CLASS_NUMBER(decoded_ol)\ decoded_ol->command_notif->entity_name.class_number /*************************** DIRECTIVE_TYPE COMPONENT ******************************/ #define SS7_CNO_GET_DIRECTIVE_TYPE(decoded_ol) decoded_ol->command_notif->directive_type /************************* EVENT_TIMESTAMP COMPONENT *****************************/ #define SS7_CNO_GET_TIMESTAMP(decoded_ol) decoded_ol->command_notif->timestamp.value /******************** ATTRIBUTE_ARRAY COMPONENT ************************/ #define SS7_CNO_ATTRIB_ARRAY_IS_PRESENT(decoded_ol)\ decoded_ol->command_notif->attribute_array_is_present #define SS7_CNO_GET_ATTRIB_ID(decoded_ol, index)\ decoded_ol->command_notif->attribute_array[index]->identifier #define SS7_CNO_GET_ATTRIB_STATUS(decoded_ol, index)\ decoded_ol->command_notif->attribute_array[index]->status #define SS7_CNO_GET_ATTRIB_GROUP(decoded_ol, index)\ decoded_ol->command_notif->attribute_array[index]->group #define SS7_CNO_ATTRIB_VALUE_IS_PRESENT(decoded_ol, index)\ decoded_ol->command_notif->attribute_array[index]->value_is_present #define SS7_CNO_GET_ATTRIB_TAG(decoded_ol, index)\ decoded_ol->command_notif->attribute_array[index]->value_tag #define SS7_CNO_GET_INT_ATTRIB_VALUE(decoded_ol, index)\ decoded_ol->command_notif->attribute_array[index]->tag_dependent_value.int_tag.value #define SS7_CNO_GET_REAL_ATTRIB_VALUE(decoded_ol, index)\ decoded_ol->command_notif->attribute_array[index]->tag_dependent_value.real_tag.value #define SS7_CNO_GET_STRING_ATTRIB_VALUE(decoded_ol, index)\ decoded_ol->command_notif->attribute_array[index]->tag_dependent_value.string_tag.value #define SS7_CNO_GET_STRING_ATTRIB_LEN(decoded_ol, index)\ decoded_ol->command_notif->attribute_array[index]->tag_dependent_value.string_tag.length #define SS7_CNO_GET_ATTRIB_NUMBER(decoded_ol)\ decoded_ol->command_notif->attribute_number _END_CPLUSPLUS #endif /* _SS7MGTTOOLSAPI_H_ */