1299 lines
34 KiB
C
1299 lines
34 KiB
C
/*
|
|
* suppserv.h
|
|
*
|
|
* Copyright (C) 2006, Nadi Sarrar
|
|
* Nadi Sarrar <nadi@beronet.com>
|
|
*
|
|
* Portions of this file are based on the mISDN sources
|
|
* by Karsten Keil.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*
|
|
*/
|
|
|
|
#ifndef __SUPPSERV_H__
|
|
#define __SUPPSERV_H__
|
|
|
|
#define AST_MISDN_ENHANCEMENTS 1 /* Compile the mISDN user with Asterisk enhancements */
|
|
|
|
#include <asm/types.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* ------------------------------------------------------------------- */
|
|
|
|
/*
|
|
* Structs for Facility Messages
|
|
*/
|
|
|
|
#define FAC_OID_BASE(Base) ((Base) * 0x100)
|
|
enum FacOIDBase {
|
|
FacOIDBase_Local, /* localValue base (Non-OID) (Must be first) */
|
|
|
|
FacOIDBase_CCBS,
|
|
FacOIDBase_CCNR,
|
|
FacOIDBase_StatusRequest,
|
|
FacOIDBase_ECT,
|
|
FacOIDBase_CCBS_T,
|
|
FacOIDBase_CCNR_T,
|
|
|
|
/* Must be last in the list */
|
|
FacOIDBase_Last
|
|
};
|
|
|
|
/* Facility operation-value function code */
|
|
enum Operation {
|
|
/* No operation */
|
|
Fac_None = 0xffff,
|
|
Fac_ERROR = 0xfffe,
|
|
Fac_RESULT = 0xfffd,
|
|
Fac_REJECT = 0xfffc,
|
|
/*
|
|
* Malicious Call Identification Operation Request
|
|
*/
|
|
Fac_MaliciousCallId = FAC_OID_BASE(FacOIDBase_Local) + 3,
|
|
/* 3PTY */
|
|
Fac_Begin3PTY = FAC_OID_BASE(FacOIDBase_Local) + 4,
|
|
Fac_End3PTY = FAC_OID_BASE(FacOIDBase_Local) + 5,
|
|
/*
|
|
* localValue's from Diversion-Operations
|
|
* {ccitt identified-organization etsi(0) 207 operations-and-errors(1)}
|
|
*/
|
|
Fac_ActivationDiversion = FAC_OID_BASE(FacOIDBase_Local) + 7,
|
|
Fac_DeactivationDiversion = FAC_OID_BASE(FacOIDBase_Local) + 8,
|
|
Fac_ActivationStatusNotificationDiv = FAC_OID_BASE(FacOIDBase_Local) + 9,
|
|
Fac_DeactivationStatusNotificationDiv = FAC_OID_BASE(FacOIDBase_Local) + 10,
|
|
Fac_InterrogationDiversion = FAC_OID_BASE(FacOIDBase_Local) + 11,
|
|
Fac_DiversionInformation = FAC_OID_BASE(FacOIDBase_Local) + 12,
|
|
Fac_CallDeflection = FAC_OID_BASE(FacOIDBase_Local) + 13,
|
|
Fac_CallRerouteing = FAC_OID_BASE(FacOIDBase_Local) + 14,
|
|
Fac_DivertingLegInformation2 = FAC_OID_BASE(FacOIDBase_Local) + 15,
|
|
Fac_InterrogateServedUserNumbers = FAC_OID_BASE(FacOIDBase_Local) + 17,
|
|
Fac_DivertingLegInformation1 = FAC_OID_BASE(FacOIDBase_Local) + 18,
|
|
Fac_DivertingLegInformation3 = FAC_OID_BASE(FacOIDBase_Local) + 19,
|
|
|
|
/*
|
|
* localValue's from Advice-of-Charge-Operations
|
|
* {ccitt identified-organization etsi (0) 182 operations-and-errors (1)}
|
|
*
|
|
* Advice-Of-Charge-at-call-Setup(AOCS)
|
|
* Advice-Of-Charge-During-the-call(AOCD)
|
|
* Advice-Of-Charge-at-the-End-of-the-call(AOCE)
|
|
*/
|
|
Fac_ChargingRequest = FAC_OID_BASE(FacOIDBase_Local) + 30,
|
|
Fac_AOCSCurrency = FAC_OID_BASE(FacOIDBase_Local) + 31,
|
|
Fac_AOCSSpecialArr = FAC_OID_BASE(FacOIDBase_Local) + 32,
|
|
Fac_AOCDCurrency = FAC_OID_BASE(FacOIDBase_Local) + 33,
|
|
Fac_AOCDChargingUnit = FAC_OID_BASE(FacOIDBase_Local) + 34,
|
|
Fac_AOCECurrency = FAC_OID_BASE(FacOIDBase_Local) + 35,
|
|
Fac_AOCEChargingUnit = FAC_OID_BASE(FacOIDBase_Local) + 36,
|
|
|
|
/*
|
|
* localValue's from Explicit-Call-Transfer-Operations-and-Errors
|
|
* {ccitt identified-organization etsi(0) 369 operations-and-errors(1)}
|
|
*/
|
|
Fac_EctExecute = FAC_OID_BASE(FacOIDBase_Local) + 6,
|
|
|
|
/*
|
|
* globalValue's (OIDs) from Explicit-Call-Transfer-Operations-and-Errors
|
|
* {ccitt identified-organization etsi(0) 369 operations-and-errors(1)}
|
|
*/
|
|
Fac_ExplicitEctExecute = FAC_OID_BASE(FacOIDBase_ECT) + 1,
|
|
Fac_RequestSubaddress = FAC_OID_BASE(FacOIDBase_ECT) + 2,
|
|
Fac_SubaddressTransfer = FAC_OID_BASE(FacOIDBase_ECT) + 3,
|
|
Fac_EctLinkIdRequest = FAC_OID_BASE(FacOIDBase_ECT) + 4,
|
|
Fac_EctInform = FAC_OID_BASE(FacOIDBase_ECT) + 5,
|
|
Fac_EctLoopTest = FAC_OID_BASE(FacOIDBase_ECT) + 6,
|
|
|
|
/*
|
|
* globalValue's (OIDs) from Status-Request-Procedure
|
|
* {itu-t identified-organization etsi(0) 196 status-request-procedure(9)}
|
|
*/
|
|
Fac_StatusRequest = FAC_OID_BASE(FacOIDBase_StatusRequest) + 1,
|
|
|
|
/*
|
|
* globalValue's (OIDs) from CCBS-Operations-and-Errors
|
|
* {ccitt identified-organization etsi(0) 359 operations-and-errors(1)}
|
|
*/
|
|
Fac_CallInfoRetain = FAC_OID_BASE(FacOIDBase_CCBS) + 1,
|
|
Fac_CCBSRequest = FAC_OID_BASE(FacOIDBase_CCBS) + 2,
|
|
Fac_CCBSDeactivate = FAC_OID_BASE(FacOIDBase_CCBS) + 3,
|
|
Fac_CCBSInterrogate = FAC_OID_BASE(FacOIDBase_CCBS) + 4,
|
|
Fac_CCBSErase = FAC_OID_BASE(FacOIDBase_CCBS) + 5,
|
|
Fac_CCBSRemoteUserFree = FAC_OID_BASE(FacOIDBase_CCBS) + 6,
|
|
Fac_CCBSCall = FAC_OID_BASE(FacOIDBase_CCBS) + 7,
|
|
Fac_CCBSStatusRequest = FAC_OID_BASE(FacOIDBase_CCBS) + 8,
|
|
Fac_CCBSBFree = FAC_OID_BASE(FacOIDBase_CCBS) + 9,
|
|
Fac_EraseCallLinkageID = FAC_OID_BASE(FacOIDBase_CCBS) + 10,
|
|
Fac_CCBSStopAlerting = FAC_OID_BASE(FacOIDBase_CCBS) + 11,
|
|
|
|
/*
|
|
* globalValue's (OIDs) from CCBS-private-networks-Operations-and-Errors
|
|
* {ccitt identified-organization etsi(0) 359 private-networks-operations-and-errors(2)}
|
|
*/
|
|
Fac_CCBS_T_Request = FAC_OID_BASE(FacOIDBase_CCBS_T) + 1,
|
|
Fac_CCBS_T_Call = FAC_OID_BASE(FacOIDBase_CCBS_T) + 2,
|
|
Fac_CCBS_T_Suspend = FAC_OID_BASE(FacOIDBase_CCBS_T) + 3,
|
|
Fac_CCBS_T_Resume = FAC_OID_BASE(FacOIDBase_CCBS_T) + 4,
|
|
Fac_CCBS_T_RemoteUserFree = FAC_OID_BASE(FacOIDBase_CCBS_T) + 5,
|
|
Fac_CCBS_T_Available = FAC_OID_BASE(FacOIDBase_CCBS_T) + 6,
|
|
|
|
/*
|
|
* globalValue's (OIDs) from CCNR-Operations-and-Errors
|
|
* {ccitt identified-organization etsi(0) 1065 operations-and-errors(1)}
|
|
*/
|
|
Fac_CCNRRequest = FAC_OID_BASE(FacOIDBase_CCNR) + 1,
|
|
Fac_CCNRInterrogate = FAC_OID_BASE(FacOIDBase_CCNR) + 2,
|
|
|
|
/*
|
|
* globalValue's (OIDs) from CCNR-private-networks-Operations-and-Errors
|
|
* {ccitt identified-organization etsi(0) 1065 private-networks-operations-and-errors(2)}
|
|
*/
|
|
Fac_CCNR_T_Request = FAC_OID_BASE(FacOIDBase_CCNR_T) + 1,
|
|
};
|
|
|
|
enum FacErrorCode {
|
|
FacError_None = 0xFFFF, /* No error occurred */
|
|
FacError_Unknown = 0xFFFE, /* Unknown OID error code */
|
|
|
|
/*
|
|
* localValue Errors from General-Errors
|
|
* {ccitt identified-organization etsi(0) 196 general-errors(2)}
|
|
*/
|
|
FacError_Gen_NotSubscribed = FAC_OID_BASE(FacOIDBase_Local) + 0,
|
|
FacError_Gen_NotAvailable = FAC_OID_BASE(FacOIDBase_Local) + 3,
|
|
FacError_Gen_NotImplemented = FAC_OID_BASE(FacOIDBase_Local) + 4,
|
|
FacError_Gen_InvalidServedUserNr = FAC_OID_BASE(FacOIDBase_Local) + 6,
|
|
FacError_Gen_InvalidCallState = FAC_OID_BASE(FacOIDBase_Local) + 7,
|
|
FacError_Gen_BasicServiceNotProvided = FAC_OID_BASE(FacOIDBase_Local) + 8,
|
|
FacError_Gen_NotIncomingCall = FAC_OID_BASE(FacOIDBase_Local) + 9,
|
|
FacError_Gen_SupplementaryServiceInteractionNotAllowed = FAC_OID_BASE(FacOIDBase_Local) + 10,
|
|
FacError_Gen_ResourceUnavailable = FAC_OID_BASE(FacOIDBase_Local) + 11,
|
|
|
|
/*
|
|
* localValue Errors from Diversion-Operations
|
|
* {ccitt identified-organization etsi(0) 207 operations-and-errors(1)}
|
|
*/
|
|
FacError_Div_InvalidDivertedToNr = FAC_OID_BASE(FacOIDBase_Local) + 12,
|
|
FacError_Div_SpecialServiceNr = FAC_OID_BASE(FacOIDBase_Local) + 14,
|
|
FacError_Div_DiversionToServedUserNr = FAC_OID_BASE(FacOIDBase_Local) + 15,
|
|
FacError_Div_IncomingCallAccepted = FAC_OID_BASE(FacOIDBase_Local) + 23,
|
|
FacError_Div_NumberOfDiversionsExceeded = FAC_OID_BASE(FacOIDBase_Local) + 24,
|
|
FacError_Div_NotActivated = FAC_OID_BASE(FacOIDBase_Local) + 46,
|
|
FacError_Div_RequestAlreadyAccepted = FAC_OID_BASE(FacOIDBase_Local) + 48,
|
|
|
|
/*
|
|
* localValue Errors from Advice-of-Charge-Operations
|
|
* {ccitt identified-organization etsi (0) 182 operations-and-errors (1)}
|
|
*/
|
|
FacError_AOC_NoChargingInfoAvailable = FAC_OID_BASE(FacOIDBase_Local) + 26,
|
|
|
|
/*
|
|
* globalValue Errors (OIDs) from CCBS-Operations-and-Errors
|
|
* {ccitt identified-organization etsi(0) 359 operations-and-errors(1)}
|
|
*/
|
|
FacError_CCBS_InvalidCallLinkageID = FAC_OID_BASE(FacOIDBase_CCBS) + 20,
|
|
FacError_CCBS_InvalidCCBSReference = FAC_OID_BASE(FacOIDBase_CCBS) + 21,
|
|
FacError_CCBS_LongTermDenial = FAC_OID_BASE(FacOIDBase_CCBS) + 22,
|
|
FacError_CCBS_ShortTermDenial = FAC_OID_BASE(FacOIDBase_CCBS) + 23,
|
|
FacError_CCBS_IsAlreadyActivated = FAC_OID_BASE(FacOIDBase_CCBS) + 24,
|
|
FacError_CCBS_AlreadyAccepted = FAC_OID_BASE(FacOIDBase_CCBS) + 25,
|
|
FacError_CCBS_OutgoingCCBSQueueFull = FAC_OID_BASE(FacOIDBase_CCBS) + 26,
|
|
FacError_CCBS_CallFailureReasonNotBusy = FAC_OID_BASE(FacOIDBase_CCBS) + 27,
|
|
FacError_CCBS_NotReadyForCall = FAC_OID_BASE(FacOIDBase_CCBS) + 28,
|
|
|
|
/*
|
|
* globalValue Errors (OIDs) from CCBS-private-networks-Operations-and-Errors
|
|
* {ccitt identified-organization etsi(0) 359 private-networks-operations-and-errors(2)}
|
|
*/
|
|
FacError_CCBS_T_LongTermDenial = FAC_OID_BASE(FacOIDBase_CCBS_T) + 20,
|
|
FacError_CCBS_T_ShortTermDenial = FAC_OID_BASE(FacOIDBase_CCBS_T) + 21,
|
|
|
|
/*
|
|
* globalValue Errors (OIDs) from Explicit-Call-Transfer-Operations-and-Errors
|
|
* {ccitt identified-organization etsi(0) 369 operations-and-errors(1)}
|
|
*/
|
|
FacError_ECT_LinkIdNotAssignedByNetwork = FAC_OID_BASE(FacOIDBase_ECT) + 21,
|
|
};
|
|
|
|
#define FAC_REJECT_BASE(Base) ((Base) * 0x10)
|
|
enum FacRejectBase {
|
|
FacRejectBase_General,
|
|
FacRejectBase_Invoke,
|
|
FacRejectBase_Result,
|
|
FacRejectBase_Error,
|
|
|
|
/* Must be last in the list */
|
|
FacRejectBase_Last
|
|
};
|
|
|
|
/*
|
|
* From Facility-Information-Element-Components
|
|
* {itu-t identified-organization etsi(0) 196 facility-information-element-component(3)}
|
|
*/
|
|
enum FacRejectCode {
|
|
FacReject_None = 0xFFFF, /* Not rejected */
|
|
FacReject_Unknown = 0xFFFE, /* Unknown reject code */
|
|
|
|
FacReject_Gen_UnrecognizedComponent = FAC_REJECT_BASE(FacRejectBase_General) + 0,
|
|
FacReject_Gen_MistypedComponent = FAC_REJECT_BASE(FacRejectBase_General) + 1,
|
|
FacReject_Gen_BadlyStructuredComponent = FAC_REJECT_BASE(FacRejectBase_General) + 2,
|
|
|
|
FacReject_Inv_DuplicateInvocation = FAC_REJECT_BASE(FacRejectBase_Invoke) + 0,
|
|
FacReject_Inv_UnrecognizedOperation = FAC_REJECT_BASE(FacRejectBase_Invoke) + 1,
|
|
FacReject_Inv_MistypedArgument = FAC_REJECT_BASE(FacRejectBase_Invoke) + 2,
|
|
FacReject_Inv_ResourceLimitation = FAC_REJECT_BASE(FacRejectBase_Invoke) + 3,
|
|
FacReject_Inv_InitiatorReleasing = FAC_REJECT_BASE(FacRejectBase_Invoke) + 4,
|
|
FacReject_Inv_UnrecognizedLinkedID = FAC_REJECT_BASE(FacRejectBase_Invoke) + 5,
|
|
FacReject_Inv_LinkedResponseUnexpected = FAC_REJECT_BASE(FacRejectBase_Invoke) + 6,
|
|
FacReject_Inv_UnexpectedChildOperation = FAC_REJECT_BASE(FacRejectBase_Invoke) + 7,
|
|
|
|
FacReject_Res_UnrecognizedInvocation = FAC_REJECT_BASE(FacRejectBase_Result) + 0,
|
|
FacReject_Res_ResultResponseUnexpected = FAC_REJECT_BASE(FacRejectBase_Result) + 1,
|
|
FacReject_Res_MistypedResult = FAC_REJECT_BASE(FacRejectBase_Result) + 2,
|
|
|
|
FacReject_Err_UnrecognizedInvocation = FAC_REJECT_BASE(FacRejectBase_Error) + 0,
|
|
FacReject_Err_ErrorResponseUnexpected = FAC_REJECT_BASE(FacRejectBase_Error) + 1,
|
|
FacReject_Err_UnrecognizedError = FAC_REJECT_BASE(FacRejectBase_Error) + 2,
|
|
FacReject_Err_UnexpectedError = FAC_REJECT_BASE(FacRejectBase_Error) + 3,
|
|
FacReject_Err_MistypedParameter = FAC_REJECT_BASE(FacRejectBase_Error) + 4,
|
|
};
|
|
|
|
struct FacREJECT {
|
|
/* TRUE if InvokeID is valid and was/will-be in the facility ie */
|
|
__u16 InvokeIDPresent;
|
|
|
|
__s16 InvokeID;
|
|
|
|
/*! \see enum FacRejectCode */
|
|
__u16 Code;
|
|
};
|
|
|
|
struct ChargingAssociation {
|
|
__u8 chargeNumber[30];
|
|
__s32 chargeIdentifier;
|
|
};
|
|
|
|
/* This structure does not capture all information correctly */
|
|
struct FacAOCChargingUnit {
|
|
__u16 chargeNotAvailable;
|
|
__u16 freeOfCharge;
|
|
__u32 recordedUnits;
|
|
__u32 typeOfChargingInfo;
|
|
__u32 billingId;
|
|
__u8 chargeNumber[50];
|
|
struct ChargingAssociation chargeAssoc;
|
|
};
|
|
|
|
struct FacAOCCurrency {
|
|
__u16 chargeNotAvailable;
|
|
__u16 freeOfCharge;
|
|
__u8 currency[10 + 1];
|
|
__u32 currencyAmount;
|
|
__u32 multiplier;
|
|
__u32 typeOfChargingInfo;
|
|
__u32 billingId;
|
|
struct ChargingAssociation chargeAssoc;
|
|
};
|
|
|
|
struct FacAOCSDurationCurrency {
|
|
__u8 currency[10+1];
|
|
__u16 currencyAmount;
|
|
__u8 multiplier;
|
|
__u8 typeOfCharging;
|
|
__u16 durLengthTimeUnit;
|
|
__u8 durLengthTimeScale;
|
|
__u8 granLengthTimeUnit;
|
|
__u8 granLengthTimeScale;
|
|
};
|
|
|
|
struct FacAOCSFlatRateCurrency {
|
|
__u8 currency[10+1];
|
|
__u16 currencyAmount;
|
|
__u8 multiplier;
|
|
};
|
|
|
|
struct FacAOCSCurrencyInfo {
|
|
__u8 chargedItem;
|
|
__u8 currencyType;
|
|
struct FacAOCSDurationCurrency durationCurrency;
|
|
struct FacAOCSFlatRateCurrency FlatRateCurrency;
|
|
};
|
|
|
|
struct FacAOCSCurrencyInfoList {
|
|
__u8 currencyInfoCount;
|
|
struct FacAOCSCurrencyInfo currencyInfo[4];
|
|
};
|
|
|
|
|
|
struct Q931_BearerCapability {
|
|
__u8 Length;
|
|
|
|
/*
|
|
* We mostly just need to store the contents so we will defer
|
|
* decoding/encoding.
|
|
*/
|
|
__u8 Contents[12];
|
|
};
|
|
|
|
struct Q931_HighLayerCompatibility {
|
|
/* Compatibility present if length is nonzero */
|
|
__u8 Length;
|
|
|
|
/*
|
|
* We mostly just need to store the contents so we will defer
|
|
* decoding/encoding.
|
|
*/
|
|
__u8 Contents[5];
|
|
};
|
|
|
|
struct Q931_LowLayerCompatibility {
|
|
/* Compatibility present if length is nonzero */
|
|
__u8 Length;
|
|
|
|
/*
|
|
* We mostly just need to store the contents so we will defer
|
|
* decoding/encoding.
|
|
*/
|
|
__u8 Contents[18];
|
|
};
|
|
|
|
struct Q931_UserUserInformation {
|
|
/* User-User information present if length is nonzero */
|
|
__u8 Length;
|
|
|
|
/*
|
|
* The network dependent maximum is either 35 or 131 octets
|
|
* in non-USER-INFORMATION messages.
|
|
*/
|
|
__u8 Contents[131];
|
|
};
|
|
|
|
/* The BC, HLC (optional) and LLC (optional) information */
|
|
struct Q931_Bc_Hlc_Llc {
|
|
/* Bearer Capability */
|
|
struct Q931_BearerCapability Bc;
|
|
|
|
/* Low Layer Compatibility (Optional) */
|
|
struct Q931_LowLayerCompatibility Llc;
|
|
|
|
/* High Layer Compatibility (Optional) */
|
|
struct Q931_HighLayerCompatibility Hlc;
|
|
};
|
|
|
|
/* The BC, HLC (optional), LLC (optional), and User-user (optional) information */
|
|
struct Q931_Bc_Hlc_Llc_Uu {
|
|
/* Bearer Capability */
|
|
struct Q931_BearerCapability Bc;
|
|
|
|
/* Low Layer Compatibility (Optional) */
|
|
struct Q931_LowLayerCompatibility Llc;
|
|
|
|
/* High Layer Compatibility (Optional) */
|
|
struct Q931_HighLayerCompatibility Hlc;
|
|
|
|
/* User-User Information (Optional) */
|
|
struct Q931_UserUserInformation UserInfo;
|
|
};
|
|
|
|
struct FacPartyNumber {
|
|
/*
|
|
* Party numbering plan
|
|
* unknown(0),
|
|
* public(1) - The numbering plan is according to ITU-T E.164,
|
|
* nsapEncoded(2),
|
|
* data(3) - Reserved,
|
|
* telex(4) - Reserved,
|
|
* private(5),
|
|
* nationalStandard(8) - Reserved
|
|
*/
|
|
__u8 Type;
|
|
|
|
/*
|
|
* Valid for public and private party number types
|
|
* public:
|
|
* unknown(0),
|
|
* internationalNumber(1),
|
|
* nationalNumber(2),
|
|
* networkSpecificNumber(3) - Reserved
|
|
* subscriberNumber(4) - Reserved
|
|
* abbreviatedNumber(6)
|
|
* private:
|
|
* unknown(0),
|
|
* level2RegionalNumber(1),
|
|
* level1RegionalNumber(2)
|
|
* pTNSpecificNumber(3)
|
|
* localNumber(4),
|
|
* abbreviatedNumber(6)
|
|
*/
|
|
__u8 TypeOfNumber;
|
|
|
|
/* Number present if length is nonzero */
|
|
__u8 LengthOfNumber;
|
|
__u8 Number[20 + 1];
|
|
};
|
|
|
|
struct FacPartySubaddress {
|
|
/* Subaddress type UserSpecified(0), NSAP(1) */
|
|
__u8 Type;
|
|
|
|
/* Subaddress present if length is nonzero */
|
|
__u8 Length;
|
|
|
|
union {
|
|
/* Specified according to ITU-T Recommendation X.213 */
|
|
__u8 Nsap[20 + 1];
|
|
|
|
/* Use of this formatting is not recommended */
|
|
struct {
|
|
/* TRUE if OddCount present */
|
|
__u8 OddCountPresent;
|
|
|
|
/*
|
|
* TRUE if odd number of BCD digits
|
|
* Used when the coding of subaddress is BCD.
|
|
*/
|
|
__u8 OddCount;
|
|
__u8 Information[20 + 1];
|
|
} UserSpecified;
|
|
} u;
|
|
};
|
|
|
|
struct FacAddress {
|
|
struct FacPartyNumber Party;
|
|
|
|
/* Subaddress (Optional) */
|
|
struct FacPartySubaddress Subaddress;
|
|
};
|
|
|
|
struct FacAddressScreened {
|
|
struct FacPartyNumber Party;
|
|
|
|
/* Subaddress (Optional) */
|
|
struct FacPartySubaddress Subaddress;
|
|
|
|
/*
|
|
* userProvidedNotScreened(0),
|
|
* userProvidedVerifiedAndPassed(1),
|
|
* userProvidedVerifiedAndFailed(2), -- Not used, value reserved
|
|
* networkProvided(3)
|
|
*/
|
|
__u8 ScreeningIndicator;
|
|
};
|
|
|
|
struct FacPresentedNumberUnscreened {
|
|
/*
|
|
* Number presentation type:
|
|
* presentationAllowedNumber(0),
|
|
* presentationRestricted(1),
|
|
* numberNotAvailableDueToInterworking(2),
|
|
* presentationRestrictedNumber(3)
|
|
*/
|
|
__u8 Type;
|
|
struct FacPartyNumber Unscreened;
|
|
};
|
|
|
|
struct FacPresentedAddressScreened {
|
|
/*
|
|
* Address presentation type:
|
|
* presentationAllowedAddress(0),
|
|
* presentationRestricted(1),
|
|
* numberNotAvailableDueToInterworking(2),
|
|
* presentationRestrictedAddress(3)
|
|
*/
|
|
__u8 Type;
|
|
struct FacAddressScreened Address;
|
|
};
|
|
|
|
struct FacCallInformation {
|
|
/* The BC, HLC (optional) and LLC (optional) information */
|
|
struct Q931_Bc_Hlc_Llc Q931ie;
|
|
|
|
/* Address of B */
|
|
struct FacAddress AddressOfB;
|
|
|
|
/* Subaddress of A (Optional) */
|
|
struct FacPartySubaddress SubaddressOfA;
|
|
|
|
/* CCBS Record ID */
|
|
__u8 CCBSReference;
|
|
};
|
|
|
|
struct FacStatusRequest {
|
|
/* The BC, HLC (optional) and LLC (optional) information */
|
|
struct Q931_Bc_Hlc_Llc Q931ie;
|
|
|
|
/* allBasicServices(0), oneOrMoreBasicServices(1) */
|
|
__u8 CompatibilityMode;
|
|
};
|
|
|
|
struct FacStatusRequest_RES {
|
|
/* compatibleAndFree(0), compatibleAndBusy(1), incompatible(2) */
|
|
__u8 Status;
|
|
};
|
|
|
|
struct FacCallInfoRetain {
|
|
/* Call Linkage Record ID */
|
|
__u8 CallLinkageID;
|
|
};
|
|
|
|
struct FacEraseCallLinkageID {
|
|
/* Call Linkage Record ID */
|
|
__u8 CallLinkageID;
|
|
};
|
|
|
|
struct FacCCBSRequest {
|
|
/* Call Linkage Record ID */
|
|
__u8 CallLinkageID;
|
|
};
|
|
|
|
struct FacCCBSRequest_RES {
|
|
/* globalRecall(0), specificRecall(1) */
|
|
__u8 RecallMode;
|
|
|
|
/* CCBS Record ID */
|
|
__u8 CCBSReference;
|
|
};
|
|
|
|
struct FacCCBSDeactivate {
|
|
/* CCBS Record ID */
|
|
__u8 CCBSReference;
|
|
};
|
|
|
|
struct FacCCBSInterrogate {
|
|
/* Party A number (Optional) */
|
|
struct FacPartyNumber AParty;
|
|
|
|
/* TRUE if CCBSReference present */
|
|
__u8 CCBSReferencePresent;
|
|
|
|
/* CCBS Record ID */
|
|
__u8 CCBSReference;
|
|
};
|
|
|
|
struct FacCCBSInterrogate_RES {
|
|
struct FacCallInformation CallDetails[5];
|
|
|
|
/* Number of CallDetails records present */
|
|
__u8 NumRecords;
|
|
|
|
/* globalRecall(0), specificRecall(1) */
|
|
__u8 RecallMode;
|
|
};
|
|
|
|
struct FacCCBSErase {
|
|
/* The BC, HLC (optional) and LLC (optional) information */
|
|
struct Q931_Bc_Hlc_Llc Q931ie;
|
|
|
|
/* Address of B */
|
|
struct FacAddress AddressOfB;
|
|
|
|
/* globalRecall(0), specificRecall(1) */
|
|
__u8 RecallMode;
|
|
|
|
/* CCBS Record ID */
|
|
__u8 CCBSReference;
|
|
|
|
/*
|
|
* CCBS Erase reason
|
|
* normal-unspecified(0),
|
|
* t-CCBS2-timeout(1),
|
|
* t-CCBS3-timeout(2),
|
|
* basic-call-failed(3)
|
|
*/
|
|
__u8 Reason;
|
|
};
|
|
|
|
struct FacCCBSRemoteUserFree {
|
|
/* The BC, HLC (optional) and LLC (optional) information */
|
|
struct Q931_Bc_Hlc_Llc Q931ie;
|
|
|
|
/* Address of B */
|
|
struct FacAddress AddressOfB;
|
|
|
|
/* globalRecall(0), specificRecall(1) */
|
|
__u8 RecallMode;
|
|
|
|
/* CCBS Record ID */
|
|
__u8 CCBSReference;
|
|
};
|
|
|
|
struct FacCCBSCall {
|
|
/* CCBS Record ID */
|
|
__u8 CCBSReference;
|
|
};
|
|
|
|
struct FacCCBSStatusRequest {
|
|
/* The BC, HLC (optional) and LLC (optional) information */
|
|
struct Q931_Bc_Hlc_Llc Q931ie;
|
|
|
|
/* globalRecall(0), specificRecall(1) */
|
|
__u8 RecallMode;
|
|
|
|
/* CCBS Record ID */
|
|
__u8 CCBSReference;
|
|
};
|
|
|
|
struct FacCCBSStatusRequest_RES {
|
|
/* TRUE if User A is free */
|
|
__u8 Free;
|
|
};
|
|
|
|
struct FacCCBSBFree {
|
|
/* The BC, HLC (optional) and LLC (optional) information */
|
|
struct Q931_Bc_Hlc_Llc Q931ie;
|
|
|
|
/* Address of B */
|
|
struct FacAddress AddressOfB;
|
|
|
|
/* globalRecall(0), specificRecall(1) */
|
|
__u8 RecallMode;
|
|
|
|
/* CCBS Record ID */
|
|
__u8 CCBSReference;
|
|
};
|
|
|
|
struct FacCCBSStopAlerting {
|
|
/* CCBS Record ID */
|
|
__u8 CCBSReference;
|
|
};
|
|
|
|
struct FacCCBS_T_Request {
|
|
/* The BC, HLC (optional) and LLC (optional) information */
|
|
struct Q931_Bc_Hlc_Llc Q931ie;
|
|
|
|
/* Address of B */
|
|
struct FacAddress Destination;
|
|
|
|
/* Caller-ID Address (Present if Originating.Party.LengthOfNumber is nonzero) */
|
|
struct FacAddress Originating;
|
|
|
|
/* TRUE if the PresentationAllowedIndicator is present */
|
|
__u8 PresentationAllowedIndicatorPresent;
|
|
|
|
/* TRUE if presentation is allowed for the originating address */
|
|
__u8 PresentationAllowedIndicator;
|
|
|
|
/* TRUE if User A's CCBS request is continued if user B is busy again. */
|
|
__u8 RetentionSupported;
|
|
};
|
|
|
|
struct FacCCBS_T_Request_RES {
|
|
/* TRUE if User A's CCBS request is continued if user B is busy again. */
|
|
__u8 RetentionSupported;
|
|
};
|
|
|
|
struct FacExplicitEctExecute {
|
|
__s16 LinkID;
|
|
};
|
|
|
|
struct FacSubaddressTransfer {
|
|
/* Transferred to subaddress */
|
|
struct FacPartySubaddress Subaddress;
|
|
};
|
|
|
|
struct FacEctLinkIdRequest_RES {
|
|
__s16 LinkID;
|
|
};
|
|
|
|
struct FacEctInform {
|
|
/* Redirection Number (Optional) */
|
|
struct FacPresentedNumberUnscreened Redirection;
|
|
|
|
/* TRUE if the Redirection Number is present */
|
|
__u8 RedirectionPresent;
|
|
|
|
/* alerting(0), active(1) */
|
|
__u8 Status;
|
|
};
|
|
|
|
struct FacEctLoopTest {
|
|
__s8 CallTransferID;
|
|
};
|
|
|
|
struct FacEctLoopTest_RES {
|
|
/*
|
|
* insufficientInformation(0),
|
|
* noLoopExists(1),
|
|
* simultaneousTransfer(2)
|
|
*/
|
|
__u8 LoopResult;
|
|
};
|
|
|
|
struct FacActivationDiversion {
|
|
/* Forwarded to address */
|
|
struct FacAddress ForwardedTo;
|
|
|
|
/* Forward all numbers if not present. */
|
|
struct FacPartyNumber ServedUser;
|
|
|
|
/* cfu(0), cfb(1), cfnr(2) */
|
|
__u8 Procedure;
|
|
|
|
/*
|
|
* allServices(0),
|
|
* speech(1),
|
|
* unrestrictedDigitalInformation(2),
|
|
* audio3k1Hz(3),
|
|
* unrestrictedDigitalInformationWithTonesAndAnnouncements(4),
|
|
* multirate(5),
|
|
* telephony3k1Hz(32),
|
|
* teletex(33),
|
|
* telefaxGroup4Class1(34),
|
|
* videotexSyntaxBased(35),
|
|
* videotelephony(36),
|
|
* telefaxGroup2-3(37),
|
|
* telephony7kHz(38),
|
|
* euroFileTransfer(39),
|
|
* fileTransferAndAccessManagement(40),
|
|
* videoconference(41),
|
|
* audioGraphicConference(42)
|
|
*/
|
|
__u8 BasicService;
|
|
};
|
|
|
|
struct FacDeactivationDiversion {
|
|
/* Forward all numbers if not present. */
|
|
struct FacPartyNumber ServedUser;
|
|
|
|
/* cfu(0), cfb(1), cfnr(2) */
|
|
__u8 Procedure;
|
|
|
|
/*
|
|
* allServices(0),
|
|
* speech(1),
|
|
* unrestrictedDigitalInformation(2),
|
|
* audio3k1Hz(3),
|
|
* unrestrictedDigitalInformationWithTonesAndAnnouncements(4),
|
|
* multirate(5),
|
|
* telephony3k1Hz(32),
|
|
* teletex(33),
|
|
* telefaxGroup4Class1(34),
|
|
* videotexSyntaxBased(35),
|
|
* videotelephony(36),
|
|
* telefaxGroup2-3(37),
|
|
* telephony7kHz(38),
|
|
* euroFileTransfer(39),
|
|
* fileTransferAndAccessManagement(40),
|
|
* videoconference(41),
|
|
* audioGraphicConference(42)
|
|
*/
|
|
__u8 BasicService;
|
|
};
|
|
|
|
struct FacActivationStatusNotificationDiv {
|
|
/* Forwarded to address */
|
|
struct FacAddress ForwardedTo;
|
|
|
|
/* Forward all numbers if not present. */
|
|
struct FacPartyNumber ServedUser;
|
|
|
|
/* cfu(0), cfb(1), cfnr(2) */
|
|
__u8 Procedure;
|
|
|
|
/*
|
|
* allServices(0),
|
|
* speech(1),
|
|
* unrestrictedDigitalInformation(2),
|
|
* audio3k1Hz(3),
|
|
* unrestrictedDigitalInformationWithTonesAndAnnouncements(4),
|
|
* multirate(5),
|
|
* telephony3k1Hz(32),
|
|
* teletex(33),
|
|
* telefaxGroup4Class1(34),
|
|
* videotexSyntaxBased(35),
|
|
* videotelephony(36),
|
|
* telefaxGroup2-3(37),
|
|
* telephony7kHz(38),
|
|
* euroFileTransfer(39),
|
|
* fileTransferAndAccessManagement(40),
|
|
* videoconference(41),
|
|
* audioGraphicConference(42)
|
|
*/
|
|
__u8 BasicService;
|
|
};
|
|
|
|
struct FacDeactivationStatusNotificationDiv {
|
|
/* Forward all numbers if not present. */
|
|
struct FacPartyNumber ServedUser;
|
|
|
|
/* cfu(0), cfb(1), cfnr(2) */
|
|
__u8 Procedure;
|
|
|
|
/*
|
|
* allServices(0),
|
|
* speech(1),
|
|
* unrestrictedDigitalInformation(2),
|
|
* audio3k1Hz(3),
|
|
* unrestrictedDigitalInformationWithTonesAndAnnouncements(4),
|
|
* multirate(5),
|
|
* telephony3k1Hz(32),
|
|
* teletex(33),
|
|
* telefaxGroup4Class1(34),
|
|
* videotexSyntaxBased(35),
|
|
* videotelephony(36),
|
|
* telefaxGroup2-3(37),
|
|
* telephony7kHz(38),
|
|
* euroFileTransfer(39),
|
|
* fileTransferAndAccessManagement(40),
|
|
* videoconference(41),
|
|
* audioGraphicConference(42)
|
|
*/
|
|
__u8 BasicService;
|
|
};
|
|
|
|
struct FacInterrogationDiversion {
|
|
/* Forward all numbers if not present. */
|
|
struct FacPartyNumber ServedUser;
|
|
|
|
/* cfu(0), cfb(1), cfnr(2) */
|
|
__u8 Procedure;
|
|
|
|
/*
|
|
* DEFAULT allServices
|
|
*
|
|
* allServices(0),
|
|
* speech(1),
|
|
* unrestrictedDigitalInformation(2),
|
|
* audio3k1Hz(3),
|
|
* unrestrictedDigitalInformationWithTonesAndAnnouncements(4),
|
|
* multirate(5),
|
|
* telephony3k1Hz(32),
|
|
* teletex(33),
|
|
* telefaxGroup4Class1(34),
|
|
* videotexSyntaxBased(35),
|
|
* videotelephony(36),
|
|
* telefaxGroup2-3(37),
|
|
* telephony7kHz(38),
|
|
* euroFileTransfer(39),
|
|
* fileTransferAndAccessManagement(40),
|
|
* videoconference(41),
|
|
* audioGraphicConference(42)
|
|
*/
|
|
__u8 BasicService;
|
|
};
|
|
|
|
struct FacForwardingRecord {
|
|
/* Forwarded to address */
|
|
struct FacAddress ForwardedTo;
|
|
|
|
/* Forward all numbers if not present. */
|
|
struct FacPartyNumber ServedUser;
|
|
|
|
/* cfu(0), cfb(1), cfnr(2) */
|
|
__u8 Procedure;
|
|
|
|
/*
|
|
* allServices(0),
|
|
* speech(1),
|
|
* unrestrictedDigitalInformation(2),
|
|
* audio3k1Hz(3),
|
|
* unrestrictedDigitalInformationWithTonesAndAnnouncements(4),
|
|
* multirate(5),
|
|
* telephony3k1Hz(32),
|
|
* teletex(33),
|
|
* telefaxGroup4Class1(34),
|
|
* videotexSyntaxBased(35),
|
|
* videotelephony(36),
|
|
* telefaxGroup2-3(37),
|
|
* telephony7kHz(38),
|
|
* euroFileTransfer(39),
|
|
* fileTransferAndAccessManagement(40),
|
|
* videoconference(41),
|
|
* audioGraphicConference(42)
|
|
*/
|
|
__u8 BasicService;
|
|
};
|
|
|
|
struct FacForwardingList {
|
|
/* SET SIZE (0..29) OF Forwarding Records */
|
|
struct FacForwardingRecord List[29];
|
|
|
|
/* Number of Forwarding records present */
|
|
__u8 NumRecords;
|
|
};
|
|
|
|
struct FacDiversionInformation {
|
|
/* Served user subaddress (Optional) */
|
|
struct FacPartySubaddress ServedUserSubaddress;
|
|
|
|
/* Calling address (Optional) */
|
|
struct FacPresentedAddressScreened CallingAddress;
|
|
|
|
/* Original called number (Optional) */
|
|
struct FacPresentedNumberUnscreened OriginalCalled;
|
|
|
|
/* Last diverting number (Optional) */
|
|
struct FacPresentedNumberUnscreened LastDiverting;
|
|
|
|
/* User-User information embedded in Q.931 IE (Optional) */
|
|
struct Q931_UserUserInformation UserInfo;
|
|
|
|
/*
|
|
* Last diverting reason (Optional)
|
|
*
|
|
* unknown(0),
|
|
* cfu(1),
|
|
* cfb(2),
|
|
* cfnr(3),
|
|
* cdAlerting(4),
|
|
* cdImmediate(5)
|
|
*/
|
|
__u8 LastDivertingReason;
|
|
|
|
/* TRUE if CallingAddress is present */
|
|
__u8 CallingAddressPresent;
|
|
|
|
/* TRUE if OriginalCalled is present */
|
|
__u8 OriginalCalledPresent;
|
|
|
|
/* TRUE if LastDiverting is present */
|
|
__u8 LastDivertingPresent;
|
|
|
|
/* TRUE if LastDivertingReason is present */
|
|
__u8 LastDivertingReasonPresent;
|
|
|
|
/*
|
|
* unknown(0),
|
|
* cfu(1),
|
|
* cfb(2),
|
|
* cfnr(3),
|
|
* cdAlerting(4),
|
|
* cdImmediate(5)
|
|
*/
|
|
__u8 DiversionReason;
|
|
|
|
/*
|
|
* allServices(0),
|
|
* speech(1),
|
|
* unrestrictedDigitalInformation(2),
|
|
* audio3k1Hz(3),
|
|
* unrestrictedDigitalInformationWithTonesAndAnnouncements(4),
|
|
* multirate(5),
|
|
* telephony3k1Hz(32),
|
|
* teletex(33),
|
|
* telefaxGroup4Class1(34),
|
|
* videotexSyntaxBased(35),
|
|
* videotelephony(36),
|
|
* telefaxGroup2-3(37),
|
|
* telephony7kHz(38),
|
|
* euroFileTransfer(39),
|
|
* fileTransferAndAccessManagement(40),
|
|
* videoconference(41),
|
|
* audioGraphicConference(42)
|
|
*/
|
|
__u8 BasicService;
|
|
};
|
|
|
|
struct FacCallDeflection {
|
|
/* Deflection address (Deflected-To address) */
|
|
struct FacAddress Deflection;
|
|
|
|
/* TRUE if PresentationAllowedToDivertedToUser is present */
|
|
__u8 PresentationAllowedToDivertedToUserPresent;
|
|
|
|
/* TRUE if presentation is allowed (Optional) */
|
|
__u8 PresentationAllowedToDivertedToUser;
|
|
};
|
|
|
|
struct FacCallRerouteing {
|
|
struct FacAddress CalledAddress;
|
|
|
|
/* The BC, HLC (optional), LLC (optional), and User-user (optional) information */
|
|
struct Q931_Bc_Hlc_Llc_Uu Q931ie;
|
|
|
|
/* Last rerouting number */
|
|
struct FacPresentedNumberUnscreened LastRerouting;
|
|
|
|
/* Calling party subaddress (Optional) */
|
|
struct FacPartySubaddress CallingPartySubaddress;
|
|
|
|
/*
|
|
* unknown(0),
|
|
* cfu(1),
|
|
* cfb(2),
|
|
* cfnr(3),
|
|
* cdAlerting(4),
|
|
* cdImmediate(5)
|
|
*/
|
|
__u8 ReroutingReason;
|
|
|
|
/* Range 1-5 */
|
|
__u8 ReroutingCounter;
|
|
|
|
/*
|
|
* DEFAULT noNotification
|
|
*
|
|
* noNotification(0),
|
|
* notificationWithoutDivertedToNr(1),
|
|
* notificationWithDivertedToNr(2)
|
|
*/
|
|
__u8 SubscriptionOption;
|
|
};
|
|
|
|
struct FacServedUserNumberList {
|
|
/* SET SIZE (0..99) OF Served user numbers */
|
|
struct FacPartyNumber List[99];
|
|
|
|
/* Number of Served user numbers present */
|
|
__u8 NumRecords;
|
|
};
|
|
|
|
struct FacDivertingLegInformation1 {
|
|
/* Diverted to number (Optional) */
|
|
struct FacPresentedNumberUnscreened DivertedTo;
|
|
|
|
/* TRUE if DivertedTo is present */
|
|
__u8 DivertedToPresent;
|
|
|
|
/*
|
|
* unknown(0),
|
|
* cfu(1),
|
|
* cfb(2),
|
|
* cfnr(3),
|
|
* cdAlerting(4),
|
|
* cdImmediate(5)
|
|
*/
|
|
__u8 DiversionReason;
|
|
|
|
/*
|
|
* noNotification(0),
|
|
* notificationWithoutDivertedToNr(1),
|
|
* notificationWithDivertedToNr(2)
|
|
*/
|
|
__u8 SubscriptionOption;
|
|
};
|
|
|
|
struct FacDivertingLegInformation2 {
|
|
/* Diverting number (Optional) */
|
|
struct FacPresentedNumberUnscreened Diverting;
|
|
|
|
/* Original called number (Optional) */
|
|
struct FacPresentedNumberUnscreened OriginalCalled;
|
|
|
|
/* TRUE if Diverting is present */
|
|
__u8 DivertingPresent;
|
|
|
|
/* TRUE if OriginalCalled is present */
|
|
__u8 OriginalCalledPresent;
|
|
|
|
/*
|
|
* unknown(0),
|
|
* cfu(1),
|
|
* cfb(2),
|
|
* cfnr(3),
|
|
* cdAlerting(4),
|
|
* cdImmediate(5)
|
|
*/
|
|
__u8 DiversionReason;
|
|
|
|
/* Range 1-5 */
|
|
__u8 DiversionCounter;
|
|
};
|
|
|
|
struct FacDivertingLegInformation3 {
|
|
/* TRUE if presentation is allowed */
|
|
__u8 PresentationAllowedIndicator;
|
|
};
|
|
|
|
typedef enum {
|
|
CompInvoke = 1,
|
|
CompReturnResult = 2,
|
|
CompReturnError = 3,
|
|
CompReject = 4,
|
|
} asn1Component;
|
|
|
|
typedef enum {
|
|
GeneralP = 0,
|
|
InvokeP = 1,
|
|
ReturnResultP = 2,
|
|
ReturnErrorP = 3,
|
|
} asn1Problem;
|
|
|
|
struct ChargeNumber {
|
|
char *number;
|
|
int *identifier;
|
|
};
|
|
|
|
struct asn1Invoke {
|
|
__s16 invokeId;
|
|
__u16 operationValue;
|
|
union {
|
|
struct FacAOCChargingUnit AOCchu;
|
|
struct FacAOCCurrency AOCcur;
|
|
struct FacAOCSCurrencyInfoList AOCcuril;
|
|
|
|
struct FacStatusRequest StatusRequest;
|
|
|
|
/* CCBS/CCNR support */
|
|
struct FacCallInfoRetain CallInfoRetain;
|
|
struct FacEraseCallLinkageID EraseCallLinkageID;
|
|
struct FacCCBSDeactivate CCBSDeactivate;
|
|
struct FacCCBSErase CCBSErase;
|
|
struct FacCCBSRemoteUserFree CCBSRemoteUserFree;
|
|
struct FacCCBSCall CCBSCall;
|
|
struct FacCCBSStatusRequest CCBSStatusRequest;
|
|
struct FacCCBSBFree CCBSBFree;
|
|
struct FacCCBSStopAlerting CCBSStopAlerting;
|
|
|
|
/* CCBS support */
|
|
struct FacCCBSRequest CCBSRequest;
|
|
struct FacCCBSInterrogate CCBSInterrogate;
|
|
|
|
/* CCNR support */
|
|
struct FacCCBSRequest CCNRRequest;
|
|
struct FacCCBSInterrogate CCNRInterrogate;
|
|
|
|
/* CCBS-T support */
|
|
struct FacCCBS_T_Request CCBS_T_Request;
|
|
|
|
/* CCNR-T support */
|
|
struct FacCCBS_T_Request CCNR_T_Request;
|
|
|
|
/* ECT support */
|
|
struct FacExplicitEctExecute ExplicitEctExecute;
|
|
struct FacSubaddressTransfer SubaddressTransfer;
|
|
struct FacEctInform EctInform;
|
|
struct FacEctLoopTest EctLoopTest;
|
|
|
|
/* Diversion support */
|
|
struct FacActivationDiversion ActivationDiversion;
|
|
struct FacDeactivationDiversion DeactivationDiversion;
|
|
struct FacActivationStatusNotificationDiv ActivationStatusNotificationDiv;
|
|
struct FacDeactivationStatusNotificationDiv DeactivationStatusNotificationDiv;
|
|
struct FacInterrogationDiversion InterrogationDiversion;
|
|
struct FacDiversionInformation DiversionInformation;
|
|
struct FacCallDeflection CallDeflection;
|
|
struct FacCallRerouteing CallRerouteing;
|
|
struct FacDivertingLegInformation1 DivertingLegInformation1;
|
|
struct FacDivertingLegInformation2 DivertingLegInformation2;
|
|
struct FacDivertingLegInformation3 DivertingLegInformation3;
|
|
} o;
|
|
};
|
|
|
|
struct asn1ReturnResult {
|
|
__s16 invokeId;
|
|
int operationValuePresent;
|
|
unsigned int operationValue;
|
|
union {
|
|
struct FacStatusRequest_RES StatusRequest;
|
|
|
|
/* CCBS/CCNR support */
|
|
struct FacCCBSStatusRequest_RES CCBSStatusRequest;
|
|
|
|
/* CCBS support */
|
|
struct FacCCBSRequest_RES CCBSRequest;
|
|
struct FacCCBSInterrogate_RES CCBSInterrogate;
|
|
|
|
/* CCNR support */
|
|
struct FacCCBSRequest_RES CCNRRequest;
|
|
struct FacCCBSInterrogate_RES CCNRInterrogate;
|
|
|
|
/* CCBS-T support */
|
|
struct FacCCBS_T_Request_RES CCBS_T_Request;
|
|
|
|
/* CCNR-T support */
|
|
struct FacCCBS_T_Request_RES CCNR_T_Request;
|
|
|
|
/* ECT support */
|
|
struct FacEctLinkIdRequest_RES EctLinkIdRequest;
|
|
struct FacEctLoopTest_RES EctLoopTest;
|
|
|
|
/* Diversion support */
|
|
struct FacForwardingList InterrogationDiversion;
|
|
struct FacServedUserNumberList InterrogateServedUserNumbers;
|
|
} o;
|
|
};
|
|
|
|
struct asn1Oid {
|
|
/* Number of subidentifier values in OID list */
|
|
__u16 numValues;
|
|
|
|
/*
|
|
* OID subidentifier value list
|
|
* Note the first value is really the first two OID subidentifiers.
|
|
* They are compressed using this formula:
|
|
* First_Value = (First_Subidentifier * 40) + Second_Subidentifier
|
|
*/
|
|
__u16 value[10];
|
|
};
|
|
|
|
struct asn1OidConvert {
|
|
enum FacOIDBase baseCode;
|
|
struct asn1Oid oid;
|
|
};
|
|
|
|
struct asn1ReturnError {
|
|
__s16 invokeId;
|
|
/*! \see enum FacErrorCode */
|
|
__u16 errorValue;
|
|
};
|
|
|
|
struct asn1Reject {
|
|
int invokeIdPresent;
|
|
int invokeId;
|
|
asn1Problem problem;
|
|
unsigned int problemValue;
|
|
};
|
|
|
|
struct asn1_parm {
|
|
int Valid;
|
|
asn1Component comp;
|
|
union {
|
|
struct asn1Invoke inv;
|
|
struct asn1ReturnResult retResult;
|
|
struct asn1ReturnError retError;
|
|
struct asn1Reject reject;
|
|
} u;
|
|
};
|
|
|
|
/*
|
|
* encodeFac(__u8 *dest, struct FacParm *fac)
|
|
*
|
|
* encode the facility (fac) into the buffer (dest)
|
|
*
|
|
* parameter:
|
|
* dest - destination buffer
|
|
* fac - facility to encode
|
|
*
|
|
* returns:
|
|
* length of the encoded facility, or -1 on error
|
|
*/
|
|
extern int encodeFac(__u8 * dest, struct asn1_parm *apm);
|
|
|
|
/*
|
|
* decodeFac(__u8 *src, struct FacParm *fac)
|
|
*
|
|
* decode the facility (src) and write the result to (fac)
|
|
*
|
|
* parameter:
|
|
* src - encoded facility
|
|
* fac - where to store the result
|
|
*
|
|
* returns:
|
|
* 0 on success, -1 on error
|
|
*/
|
|
extern int decodeFac(__u8 * src, struct asn1_parm *apm);
|
|
|
|
/* ------------------------------------------------------------------- */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* __SUPPSERV_H__ */
|
|
/* ------------------------------------------------------------------- *//* end suppserv.h */
|