Loading DiameterGx/ttcn/DiameterGx_Gx_TCFunctions.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -57,7 +57,7 @@ module DiameterGx_Gx_TCFunctions { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync //f_send_CCR(m_CCR_basic(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(),f_framedIpAddress6_send())); f_send_CCR(m_CCR_InitialRequest_allReqAVPs(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(),f_framedIpAddress6_send())); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync Loading DiameterGx/ttcn/DiameterGx_PIXITS.ttcn +63 −11 Original line number Diff line number Diff line Loading @@ -150,32 +150,84 @@ module DiameterGx_PIXITS */ modulepar octetstring PX_UE_framedIp6Address := 'ffffffff'O; /** @desc * avp_Data within CC_Request_Type_AVP is of enumerated type CC_Request_Ty_Type , */ modulepar CC_Request_Ty_Type PX_CC_REQUEST_TYPE := INITIAL_REQUEST_E; /** @desc charstring, PIXIT item A.1/ /** @desc UInt32, PIXIT item A.1/ * avp_Data within CC_Request_Number_AVP is of UInt32 type */ modulepar UInt32 PX_CC_REQUEST_NUMBER := 1; /** @desc charstring, PIXIT item A.1/ /** @desc enumerated type Subscription_Id_Ty_Type, PIXIT item A.1/ * avp_Data within Subscription_Id_Type_AVP is of enumerated type Subscription_Id_Ty_Type */ modulepar Subscription_Id_Ty_Type PX_SUBSCRIPTION_ID_TYPE := END_USER_IMSI_E; /** @desc charstring, PIXIT item A.1/ /** @desc UTF8String, PIXIT item A.1/ * avp_Data within Subscription_Id_AVP is of UTF8String type */ modulepar UTF8String PX_SUBSCRIPTION_ID_DATA := "SUBS_DATA"; /** @desc charstring, PIXIT item A.1/ /** @desc enumerated type IP_CAN_Type, PIXIT item A.1/ * avp_Data within IP_CAN_Type_AVP is of enumerated type IP_CAN_Type */ modulepar IP_CAN_Type PX_IP_CAN_TYPE := ThreeGPP_GPRS_E; /** @desc charstring, PIXIT item A.1/ /** @desc enumerated type RAT_Type, PIXIT item A.1/ * avp_Data within RAT_Type_AVP is of enumerated type RAT_Type */ modulepar RAT_Type PX_RAT_TYPE := WLAN_E; /** @desc UInt32, PIXIT item A.1/ * avp_Data within APN_Aggregate_Max_Bitrate_UL_AVP is of UInt32 type */ modulepar UInt32 PX_APN_AGGREGATE_MAX_BITRATE_UL_AVP_DATA := 100; /** @desc octetstring, PIXIT item A.1/ * avp_Data within ThreeGPP_MS_TimeZone_DATA is of octetstring type */ modulepar octetstring PX_3GPP_MS_TIMEZONE_DATA := '08'O; /** @desc UTF8String, PIXIT item A.1/ * avp_Data within Called_Station_Id_AVP is of UTF8String type */ modulepar UTF8String PX_CALLED_STATION_ID_DATA := "CALLED_STATION_ID_DATA"; /** @desc octetstring, PIXIT item A.1/ * avp_Data within PDN_Connection_ID_AVP is of octetstring type */ modulepar octetstring PX_PDN_CONNECTION_ID_DATA := '08'O; /** @desc enumerated type Bearer_Usage, PIXIT item A.1/ * avp_Data within Bearer_Usage_AVP is of enumerated type Bearer_Usage */ modulepar Bearer_Usage PX_BEARER_USAGE_DATA := IMS_SIGNALLING_E; /** @desc charstring, PIXIT item A.1/14 The ANCA (Access-Network-Charging-Address) in IPv4Addr format */ modulepar IPv4Addr PX_ANCA_ipv4 := {1,2,3,4}; /** @desc charstring, PIXIT item A.1/15 The ANCA (Access-Network-Charging-Address) in type IPv6Addr format */ modulepar IPv6Addr PX_ANCA_ipv6 := {1,2,3,4,5,6,7,8}; /** @desc octetstring, PIXIT item A.1/ * avp_Data within Access_Network_Charging_Identifier_Value_AVP is of octetstring type */ modulepar octetstring PX_ACCESS_NETWORK_CHARGING_IDENTIFIER_VALUE := '08'O; /** @desc octetstring, PIXIT item A.1/ * avp_Data within Routing_Rule_Identifier_AVP is of octetstring type */ modulepar octetstring PX_ROUTING_RULE_IDENTIFIER_VALUE := '08'O; /** @desc UInt32, PIXIT item A.1/ * avp_Data within Flow_Number_AVP is of UInt32 type */ modulepar UInt32 PX_FLOW_NUMBER_DATA := 100; } //end group DiameterCommonGxData } // end module DiameterGx_PIXITS No newline at end of file DiameterGx/ttcn/DiameterGx_Templates.ttcn +124 −13 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ module DiameterGx_Templates { //LibDiameter import from LibDiameter_TypesAndValues all; import from LibDiameter_Templates all; import from LibDiameter_Steps all; //DiameterGx import from DiameterGx_PIXITS all; Loading Loading @@ -135,17 +136,127 @@ module DiameterGx_Templates { guaranteed_Bitrate_DL := omit, bearer_Identifier := omit, allocation_Retention_Priority := omit, aPN_Aggregate_Max_Bitrate_UL := m_APN_Aggregate_Max_Bitrate_UL, aPN_Aggregate_Max_Bitrate_UL := m_APN_Aggregate_Max_Bitrate_UL(PX_APN_AGGREGATE_MAX_BITRATE_UL_AVP_DATA), aPN_Aggregate_Max_Bitrate_DL := omit, aVP_Type := omit } template APN_Aggregate_Max_Bitrate_UL_AVP m_APN_Aggregate_Max_Bitrate_UL:= template APN_Aggregate_Max_Bitrate_UL_AVP m_APN_Aggregate_Max_Bitrate_UL(UInt32 p_avpData):= { aVP_Header := m_aVP_HeaderVid(c_vendIdAPN_Aggregate_Max_Bitrate_UL_AVP, 4, omit), aVP_Data := 100//PX_APN_Aggregate_Max_Bitrate_UL_AVP_DATA aVP_Data := p_avpData }; template ThreeGPP_MS_TimeZone_AVP m_threeGPP_MS_TimeZone(octetstring p_avpData) := { aVP_Header := m_aVP_HeaderVid(c_vendIdThreeGPP_MS_TimeZone_AVP, lengthof(p_avpData), omit), aVP_Data := p_avpData }; template Called_Station_Id_AVP m_called_Station_Id(UTF8String p_avpData) := { aVP_Header := m_aVP_HeaderVid(c_vendIdCalled_Station_Id_AVP, lengthof(p_avpData), omit), aVP_Data := p_avpData }; template PDN_Connection_ID_AVP m_pDN_Connection_ID(octetstring p_avpData) := { aVP_Header := m_aVP_HeaderVid(c_vendIdPDN_Connection_ID_AVP, lengthof(p_avpData), omit), aVP_Data := p_avpData }; template Bearer_Usage_AVP m_bearer_Usage(Bearer_Usage p_avpData) := { aVP_Header := m_aVP_HeaderVid(c_vendIdBearer_Usage_AVP, 4, omit), aVP_Data := p_avpData } template (value) Access_Network_Charging_Address_AVP m_accessNetworkChargingAddress(template (value) Address p_avpData) := { aVP_Header := m_aVP_HeaderVid(c_vendIdAccess_Network_Charging_Address_AVP, f_IPAdressLength(), omit), aVP_Data := p_avpData }; template Access_Network_Charging_Identifier_Gx_AVP m_aNCI_Gx(Access_Network_Charging_Identifier_Value_AVP p_nciv) := { aVP_Header := m_aVP_HeaderVid(c_vendIdAccess_Network_Charging_Identifier_Gx_AVP, lengthof(encvalue(p_nciv)), omit), acc_Net_Charging_Id_Val := p_nciv, charging_Rule_Base_Name := omit, charging_Rule_Name := omit } template Access_Network_Charging_Identifier_Value_AVP m_aNCI_Value(octetstring p_avpData) := { aVP_Header := m_aVP_HeaderVid(c_vendIdAccess_Network_Charging_Identifier_Value_AVP, lengthof(p_avpData), omit), aVP_Data := p_avpData }; template Routing_Rule_Install_AVP m_routing_Rule_Install(Routing_Rule_Definition_AVP p_rrd) := { aVP_Header := m_aVP_HeaderVid(c_vendIdRouting_Rule_Install_AVP, lengthof(encvalue(p_rrd)), omit), routing_Rule_Definition := {p_rrd}, aVP_Type := omit } template Routing_Rule_Definition_AVP m_routing_Rule_Definition(Routing_Rule_Identifier_AVP p_rri, Routing_Filter_AVP p_rf) := { aVP_Header := m_aVP_HeaderVid(c_vendIdRouting_Rule_Definition_AVP, (lengthof(encvalue(p_rri))+lengthof(encvalue(p_rf))), omit), routing_Rule_Identifier := p_rri, routing_Filter := {p_rf}, precedence := omit, routing_IP_Address := omit, aVP_Type := omit } template Routing_Rule_Identifier_AVP m_routing_Rule_Identifier(octetstring p_avpData) := { aVP_Header := m_aVP_HeaderVid(c_vendIdRouting_Rule_Identifier_AVP, lengthof(p_avpData), omit), aVP_Data := p_avpData }; template Routing_Filter_AVP m_routing_Filter := { aVP_Header := m_aVP_HeaderVid(c_vendIdRouting_Filter_AVP, 12/*12-flow_direction*/+ lengthof(encvalue(m_flow_Description(m_iPFilterRule))), omit), flow_Description := m_flow_Description(m_iPFilterRule), flow_Direction := m_flow_Direction, toS_Traffic_Class := omit, security_Parameter_Index := omit, flow_Label := omit, aVP_Type := omit } template Flow_Description_AVP m_flow_Description(IPFilterRule_Type p_IPftr) := { aVP_Header := m_aVP_HeaderVid(c_vendIdFlow_Description_AVP, lengthof(encvalue(p_IPftr)), omit), aVP_Data := p_IPftr } template Flow_Direction_AVP m_flow_Direction := { aVP_Header := m_aVP_HeaderVid(c_vendIdFlow_Direction_AVP, 4, omit), aVP_Data := BIDIRECTIONAL_E } //TODO: Check have to be done during validation if IPFilterRule_Type is valid(it is not clear from RFC3588 if type structure is sufficient) template IPFilterRule_Type m_iPFilterRule := { action_ := "permit", direction := "out", proto := "ip", src := { ipno := 4, addr := "1.1.1.1", mask := omit }, dst := { ipno := 4, addr := "10.10.10.1", mask := omit }, ports := omit, options := omit } }//end group sendingTemplatesForAVPs group awaitingTemplatesForAVPs{ Loading Loading @@ -251,7 +362,7 @@ module DiameterGx_Templates { origin_Realm := p_originRealm, destination_Realm := p_destinationRealm, auth_Application_Id := m_authApplicationId(c_applIdGx), cC_Request_Type := m_cC_Request_Type(PX_CC_REQUEST_TYPE), cC_Request_Type := m_cC_Request_Type(INITIAL_REQUEST_E), cC_Request_Number := m_cC_Request_Number(PX_CC_REQUEST_NUMBER), subscription_Id := {m_subscription_Id(m_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE),m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA))}, framed_IP_Address := p_framedIpAddress, Loading Loading @@ -291,7 +402,7 @@ module DiameterGx_Templates { origin_Host := p_originHost, origin_Realm := p_originRealm, auth_Application_Id := m_authApplicationId(c_applIdGx), cC_Request_Type := m_cC_Request_Type(PX_CC_REQUEST_TYPE), cC_Request_Type := m_cC_Request_Type(INITIAL_REQUEST_E), cC_Request_Number := m_cC_Request_Number(PX_CC_REQUEST_NUMBER) } Loading @@ -316,7 +427,7 @@ module DiameterGx_Templates { group Gxmodified_request_templates_send { template CCR_MSG m_CCR_allRequiredAVPs(template Session_Id_AVP p_sessionId, template CCR_MSG m_CCR_InitialRequest_allReqAVPs(template Session_Id_AVP p_sessionId, template Origin_Host_AVP p_originHost, template Origin_Realm_AVP p_originRealm, template Destination_Realm_AVP p_destinationRealm, Loading @@ -324,13 +435,13 @@ module DiameterGx_Templates { template Framed_IPv6_Prefix_AVP p_framedIp6Address) modifies m_CCR_basic := { network_Request_Support := m_network_Request_Support(NETWORK_REQUEST_SUPPORTED_E), qoS_Information := m_qoS_Information_APN_AMBR_UL, threeGPP_MS_TimeZone := omit, called_Station_Id := omit, pDN_Connection_ID := omit, bearer_Usage := omit, access_Network_Charging_Address := omit, access_Network_Charging_Identifier_Gx := omit, routing_Rule_Install := omit threeGPP_MS_TimeZone := m_threeGPP_MS_TimeZone(PX_3GPP_MS_TIMEZONE_DATA), called_Station_Id := m_called_Station_Id(PX_CALLED_STATION_ID_DATA), pDN_Connection_ID := m_pDN_Connection_ID(PX_PDN_CONNECTION_ID_DATA), bearer_Usage := m_bearer_Usage(PX_BEARER_USAGE_DATA), access_Network_Charging_Address := m_accessNetworkChargingAddress(f_IPAdress(PX_ANCA_ipv4, PX_ANCA_ipv6)), access_Network_Charging_Identifier_Gx := {m_aNCI_Gx(m_aNCI_Value(PX_ACCESS_NETWORK_CHARGING_IDENTIFIER_VALUE))}, routing_Rule_Install := m_routing_Rule_Install(m_routing_Rule_Definition(m_routing_Rule_Identifier(PX_ROUTING_RULE_IDENTIFIER_VALUE),m_routing_Filter)) } Loading Loading
DiameterGx/ttcn/DiameterGx_Gx_TCFunctions.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -57,7 +57,7 @@ module DiameterGx_Gx_TCFunctions { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync //f_send_CCR(m_CCR_basic(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(),f_framedIpAddress6_send())); f_send_CCR(m_CCR_InitialRequest_allReqAVPs(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(),f_framedIpAddress6_send())); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync Loading
DiameterGx/ttcn/DiameterGx_PIXITS.ttcn +63 −11 Original line number Diff line number Diff line Loading @@ -150,32 +150,84 @@ module DiameterGx_PIXITS */ modulepar octetstring PX_UE_framedIp6Address := 'ffffffff'O; /** @desc * avp_Data within CC_Request_Type_AVP is of enumerated type CC_Request_Ty_Type , */ modulepar CC_Request_Ty_Type PX_CC_REQUEST_TYPE := INITIAL_REQUEST_E; /** @desc charstring, PIXIT item A.1/ /** @desc UInt32, PIXIT item A.1/ * avp_Data within CC_Request_Number_AVP is of UInt32 type */ modulepar UInt32 PX_CC_REQUEST_NUMBER := 1; /** @desc charstring, PIXIT item A.1/ /** @desc enumerated type Subscription_Id_Ty_Type, PIXIT item A.1/ * avp_Data within Subscription_Id_Type_AVP is of enumerated type Subscription_Id_Ty_Type */ modulepar Subscription_Id_Ty_Type PX_SUBSCRIPTION_ID_TYPE := END_USER_IMSI_E; /** @desc charstring, PIXIT item A.1/ /** @desc UTF8String, PIXIT item A.1/ * avp_Data within Subscription_Id_AVP is of UTF8String type */ modulepar UTF8String PX_SUBSCRIPTION_ID_DATA := "SUBS_DATA"; /** @desc charstring, PIXIT item A.1/ /** @desc enumerated type IP_CAN_Type, PIXIT item A.1/ * avp_Data within IP_CAN_Type_AVP is of enumerated type IP_CAN_Type */ modulepar IP_CAN_Type PX_IP_CAN_TYPE := ThreeGPP_GPRS_E; /** @desc charstring, PIXIT item A.1/ /** @desc enumerated type RAT_Type, PIXIT item A.1/ * avp_Data within RAT_Type_AVP is of enumerated type RAT_Type */ modulepar RAT_Type PX_RAT_TYPE := WLAN_E; /** @desc UInt32, PIXIT item A.1/ * avp_Data within APN_Aggregate_Max_Bitrate_UL_AVP is of UInt32 type */ modulepar UInt32 PX_APN_AGGREGATE_MAX_BITRATE_UL_AVP_DATA := 100; /** @desc octetstring, PIXIT item A.1/ * avp_Data within ThreeGPP_MS_TimeZone_DATA is of octetstring type */ modulepar octetstring PX_3GPP_MS_TIMEZONE_DATA := '08'O; /** @desc UTF8String, PIXIT item A.1/ * avp_Data within Called_Station_Id_AVP is of UTF8String type */ modulepar UTF8String PX_CALLED_STATION_ID_DATA := "CALLED_STATION_ID_DATA"; /** @desc octetstring, PIXIT item A.1/ * avp_Data within PDN_Connection_ID_AVP is of octetstring type */ modulepar octetstring PX_PDN_CONNECTION_ID_DATA := '08'O; /** @desc enumerated type Bearer_Usage, PIXIT item A.1/ * avp_Data within Bearer_Usage_AVP is of enumerated type Bearer_Usage */ modulepar Bearer_Usage PX_BEARER_USAGE_DATA := IMS_SIGNALLING_E; /** @desc charstring, PIXIT item A.1/14 The ANCA (Access-Network-Charging-Address) in IPv4Addr format */ modulepar IPv4Addr PX_ANCA_ipv4 := {1,2,3,4}; /** @desc charstring, PIXIT item A.1/15 The ANCA (Access-Network-Charging-Address) in type IPv6Addr format */ modulepar IPv6Addr PX_ANCA_ipv6 := {1,2,3,4,5,6,7,8}; /** @desc octetstring, PIXIT item A.1/ * avp_Data within Access_Network_Charging_Identifier_Value_AVP is of octetstring type */ modulepar octetstring PX_ACCESS_NETWORK_CHARGING_IDENTIFIER_VALUE := '08'O; /** @desc octetstring, PIXIT item A.1/ * avp_Data within Routing_Rule_Identifier_AVP is of octetstring type */ modulepar octetstring PX_ROUTING_RULE_IDENTIFIER_VALUE := '08'O; /** @desc UInt32, PIXIT item A.1/ * avp_Data within Flow_Number_AVP is of UInt32 type */ modulepar UInt32 PX_FLOW_NUMBER_DATA := 100; } //end group DiameterCommonGxData } // end module DiameterGx_PIXITS No newline at end of file
DiameterGx/ttcn/DiameterGx_Templates.ttcn +124 −13 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ module DiameterGx_Templates { //LibDiameter import from LibDiameter_TypesAndValues all; import from LibDiameter_Templates all; import from LibDiameter_Steps all; //DiameterGx import from DiameterGx_PIXITS all; Loading Loading @@ -135,17 +136,127 @@ module DiameterGx_Templates { guaranteed_Bitrate_DL := omit, bearer_Identifier := omit, allocation_Retention_Priority := omit, aPN_Aggregate_Max_Bitrate_UL := m_APN_Aggregate_Max_Bitrate_UL, aPN_Aggregate_Max_Bitrate_UL := m_APN_Aggregate_Max_Bitrate_UL(PX_APN_AGGREGATE_MAX_BITRATE_UL_AVP_DATA), aPN_Aggregate_Max_Bitrate_DL := omit, aVP_Type := omit } template APN_Aggregate_Max_Bitrate_UL_AVP m_APN_Aggregate_Max_Bitrate_UL:= template APN_Aggregate_Max_Bitrate_UL_AVP m_APN_Aggregate_Max_Bitrate_UL(UInt32 p_avpData):= { aVP_Header := m_aVP_HeaderVid(c_vendIdAPN_Aggregate_Max_Bitrate_UL_AVP, 4, omit), aVP_Data := 100//PX_APN_Aggregate_Max_Bitrate_UL_AVP_DATA aVP_Data := p_avpData }; template ThreeGPP_MS_TimeZone_AVP m_threeGPP_MS_TimeZone(octetstring p_avpData) := { aVP_Header := m_aVP_HeaderVid(c_vendIdThreeGPP_MS_TimeZone_AVP, lengthof(p_avpData), omit), aVP_Data := p_avpData }; template Called_Station_Id_AVP m_called_Station_Id(UTF8String p_avpData) := { aVP_Header := m_aVP_HeaderVid(c_vendIdCalled_Station_Id_AVP, lengthof(p_avpData), omit), aVP_Data := p_avpData }; template PDN_Connection_ID_AVP m_pDN_Connection_ID(octetstring p_avpData) := { aVP_Header := m_aVP_HeaderVid(c_vendIdPDN_Connection_ID_AVP, lengthof(p_avpData), omit), aVP_Data := p_avpData }; template Bearer_Usage_AVP m_bearer_Usage(Bearer_Usage p_avpData) := { aVP_Header := m_aVP_HeaderVid(c_vendIdBearer_Usage_AVP, 4, omit), aVP_Data := p_avpData } template (value) Access_Network_Charging_Address_AVP m_accessNetworkChargingAddress(template (value) Address p_avpData) := { aVP_Header := m_aVP_HeaderVid(c_vendIdAccess_Network_Charging_Address_AVP, f_IPAdressLength(), omit), aVP_Data := p_avpData }; template Access_Network_Charging_Identifier_Gx_AVP m_aNCI_Gx(Access_Network_Charging_Identifier_Value_AVP p_nciv) := { aVP_Header := m_aVP_HeaderVid(c_vendIdAccess_Network_Charging_Identifier_Gx_AVP, lengthof(encvalue(p_nciv)), omit), acc_Net_Charging_Id_Val := p_nciv, charging_Rule_Base_Name := omit, charging_Rule_Name := omit } template Access_Network_Charging_Identifier_Value_AVP m_aNCI_Value(octetstring p_avpData) := { aVP_Header := m_aVP_HeaderVid(c_vendIdAccess_Network_Charging_Identifier_Value_AVP, lengthof(p_avpData), omit), aVP_Data := p_avpData }; template Routing_Rule_Install_AVP m_routing_Rule_Install(Routing_Rule_Definition_AVP p_rrd) := { aVP_Header := m_aVP_HeaderVid(c_vendIdRouting_Rule_Install_AVP, lengthof(encvalue(p_rrd)), omit), routing_Rule_Definition := {p_rrd}, aVP_Type := omit } template Routing_Rule_Definition_AVP m_routing_Rule_Definition(Routing_Rule_Identifier_AVP p_rri, Routing_Filter_AVP p_rf) := { aVP_Header := m_aVP_HeaderVid(c_vendIdRouting_Rule_Definition_AVP, (lengthof(encvalue(p_rri))+lengthof(encvalue(p_rf))), omit), routing_Rule_Identifier := p_rri, routing_Filter := {p_rf}, precedence := omit, routing_IP_Address := omit, aVP_Type := omit } template Routing_Rule_Identifier_AVP m_routing_Rule_Identifier(octetstring p_avpData) := { aVP_Header := m_aVP_HeaderVid(c_vendIdRouting_Rule_Identifier_AVP, lengthof(p_avpData), omit), aVP_Data := p_avpData }; template Routing_Filter_AVP m_routing_Filter := { aVP_Header := m_aVP_HeaderVid(c_vendIdRouting_Filter_AVP, 12/*12-flow_direction*/+ lengthof(encvalue(m_flow_Description(m_iPFilterRule))), omit), flow_Description := m_flow_Description(m_iPFilterRule), flow_Direction := m_flow_Direction, toS_Traffic_Class := omit, security_Parameter_Index := omit, flow_Label := omit, aVP_Type := omit } template Flow_Description_AVP m_flow_Description(IPFilterRule_Type p_IPftr) := { aVP_Header := m_aVP_HeaderVid(c_vendIdFlow_Description_AVP, lengthof(encvalue(p_IPftr)), omit), aVP_Data := p_IPftr } template Flow_Direction_AVP m_flow_Direction := { aVP_Header := m_aVP_HeaderVid(c_vendIdFlow_Direction_AVP, 4, omit), aVP_Data := BIDIRECTIONAL_E } //TODO: Check have to be done during validation if IPFilterRule_Type is valid(it is not clear from RFC3588 if type structure is sufficient) template IPFilterRule_Type m_iPFilterRule := { action_ := "permit", direction := "out", proto := "ip", src := { ipno := 4, addr := "1.1.1.1", mask := omit }, dst := { ipno := 4, addr := "10.10.10.1", mask := omit }, ports := omit, options := omit } }//end group sendingTemplatesForAVPs group awaitingTemplatesForAVPs{ Loading Loading @@ -251,7 +362,7 @@ module DiameterGx_Templates { origin_Realm := p_originRealm, destination_Realm := p_destinationRealm, auth_Application_Id := m_authApplicationId(c_applIdGx), cC_Request_Type := m_cC_Request_Type(PX_CC_REQUEST_TYPE), cC_Request_Type := m_cC_Request_Type(INITIAL_REQUEST_E), cC_Request_Number := m_cC_Request_Number(PX_CC_REQUEST_NUMBER), subscription_Id := {m_subscription_Id(m_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE),m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA))}, framed_IP_Address := p_framedIpAddress, Loading Loading @@ -291,7 +402,7 @@ module DiameterGx_Templates { origin_Host := p_originHost, origin_Realm := p_originRealm, auth_Application_Id := m_authApplicationId(c_applIdGx), cC_Request_Type := m_cC_Request_Type(PX_CC_REQUEST_TYPE), cC_Request_Type := m_cC_Request_Type(INITIAL_REQUEST_E), cC_Request_Number := m_cC_Request_Number(PX_CC_REQUEST_NUMBER) } Loading @@ -316,7 +427,7 @@ module DiameterGx_Templates { group Gxmodified_request_templates_send { template CCR_MSG m_CCR_allRequiredAVPs(template Session_Id_AVP p_sessionId, template CCR_MSG m_CCR_InitialRequest_allReqAVPs(template Session_Id_AVP p_sessionId, template Origin_Host_AVP p_originHost, template Origin_Realm_AVP p_originRealm, template Destination_Realm_AVP p_destinationRealm, Loading @@ -324,13 +435,13 @@ module DiameterGx_Templates { template Framed_IPv6_Prefix_AVP p_framedIp6Address) modifies m_CCR_basic := { network_Request_Support := m_network_Request_Support(NETWORK_REQUEST_SUPPORTED_E), qoS_Information := m_qoS_Information_APN_AMBR_UL, threeGPP_MS_TimeZone := omit, called_Station_Id := omit, pDN_Connection_ID := omit, bearer_Usage := omit, access_Network_Charging_Address := omit, access_Network_Charging_Identifier_Gx := omit, routing_Rule_Install := omit threeGPP_MS_TimeZone := m_threeGPP_MS_TimeZone(PX_3GPP_MS_TIMEZONE_DATA), called_Station_Id := m_called_Station_Id(PX_CALLED_STATION_ID_DATA), pDN_Connection_ID := m_pDN_Connection_ID(PX_PDN_CONNECTION_ID_DATA), bearer_Usage := m_bearer_Usage(PX_BEARER_USAGE_DATA), access_Network_Charging_Address := m_accessNetworkChargingAddress(f_IPAdress(PX_ANCA_ipv4, PX_ANCA_ipv6)), access_Network_Charging_Identifier_Gx := {m_aNCI_Gx(m_aNCI_Value(PX_ACCESS_NETWORK_CHARGING_IDENTIFIER_VALUE))}, routing_Rule_Install := m_routing_Rule_Install(m_routing_Rule_Definition(m_routing_Rule_Identifier(PX_ROUTING_RULE_IDENTIFIER_VALUE),m_routing_Filter)) } Loading