Documentation
¶
Overview ¶
AVP struct, encoding/decoding functions
Code generated by gen.go DO NOT EDIT.
Definitions for common codes (e.g., Result-Code)
Diameter message struct, encoding/decoding logic
Index ¶
- Constants
- Variables
- func GetCommandNameFromCode(code uint32) string
- func ValidateSuccessfulResponse(msg *DiameterMessage) error
- type AVP
- type AVPData
- type Address
- type AppId
- type DiameterHeader
- type DiameterIdentity
- type DiameterMessage
- type DiameterURI
- type Enumerated
- type Float32
- type Float64
- type Grouped
- type IPFilterRule
- type Integer32
- type Integer64
- type OctetString
- type ResultCode
- type Time
- type UTF8String
- type Unsigned32
- type Unsigned64
- type VendorId
Constants ¶
const ( AVPHeaderLength = 8 AVPHeaderLengthWithV = 12 )
const ( MANDATORY_FLAG = 0x40 VENDOR_FLAG = 0x80 PROTECTED_FLAG = 0x20 )
AVP Flags
const ( AVP_CODE_LENGTH = 4 AVP_FLAGS_LENGTH = 1 AVP_LENGTH_LENGTH = 3 AVP_VENDOR_ID_LENGTH = 4 AVP_UNPROTECTED_LENGTH = 8 AVP_PROTECTED_LENGTH = 12 AVP_PROTECTION_LENGTH = 4 )
const ( AVP_USER_NAME = uint32(1) // Type: UTF8String AVP_USER_PASSWORD = uint32(2) // Type: OctetString AVP_CHAP_PASSWORD = uint32(3) // Type: OctetString AVP_NAS_IP_ADDRESS = uint32(4) // Type: OctetString AVP_NAS_PORT = uint32(5) // Type: Unsigned32 AVP_SERVICE_TYPE = uint32(6) // Type: Enumerated TODO: FIX AVP_FRAMED_PROTOCOL = uint32(7) // Type: Enumerated AVP_FRAMED_IP_ADDRESS = uint32(8) // Type: IPAddress AVP_FRAMED_IP_NETMASK = uint32(9) // Type: IPAddress AVP_FRAMED_ROUTING = uint32(10) // Type: Enumerated AVP_FILTER_ID = uint32(11) // Type: UTF8String AVP_FRAMED_MTU = uint32(12) // Type: Unsigned32 AVP_FRAMED_COMPRESSION = uint32(13) // Type: Enumerated AVP_LOGIN_IP_HOST = uint32(14) // Type: IPAddress AVP_LOGIN_SERVICE = uint32(15) // Type: Enumerated AVP_LOGIN_TCP_PORT = uint32(16) // Type: Unsigned32 AVP_REPLY_MESSAGE = uint32(18) // Type: UTF8String AVP_CALLBACK_NUMBER = uint32(19) // Type: UTF8String AVP_CALLBACK_ID = uint32(20) // Type: UTF8String AVP_FRAMED_ROUTE = uint32(22) // Type: UTF8String AVP_FRAMED_IPX_NETWORK = uint32(23) // Type: UTF8String AVP_STATE = uint32(24) // Type: OctetString AVP_CLASS = uint32(25) // Type: OctetString AVP_VENDOR_SPECIFIC = uint32(26) // Type: Unsigned32 AVP_SESSION_TIMEOUT = uint32(27) // Type: Unsigned32 AVP_IDLE_TIMEOUT = uint32(28) // Type: Unsigned32 AVP_TERMINATION_ACTION = uint32(29) // Type: Unsigned32 AVP_CALLED_STATION_ID = uint32(30) // Type: UTF8String AVP_CALLING_STATION_ID = uint32(31) // Type: UTF8String AVP_NAS_IDENTIFIER = uint32(32) // Type: OctetString AVP_PROXY_STATE = uint32(33) // Type: OctetString AVP_LOGIN_LAT_SERVICE = uint32(34) // Type: OctetString AVP_LOGIN_LAT_NODE = uint32(35) // Type: OctetString AVP_LOGIN_LAT_GROUP = uint32(36) // Type: OctetString AVP_FRAMED_APPLETALK_LINK = uint32(37) // Type: Unsigned32 AVP_FRAMED_APPLETALK_NETWORK = uint32(38) // Type: Unsigned32 AVP_FRAMED_APPLETALK_ZONE = uint32(39) // Type: OctetString AVP_ACCT_STATUS_TYPE = uint32(40) // Type: Unsigned32 AVP_ACCT_DELAY_TIME = uint32(41) // Type: Unsigned32 AVP_ACCT_INPUT_OCTETS = uint32(42) // Type: Unsigned32 AVP_ACCT_OUTPUT_OCTETS = uint32(43) // Type: Unsigned32 AVP_ACCT_SESSION_ID = uint32(44) // Type: OctetString AVP_ACCT_AUTHENTIC = uint32(45) // Type: Enumerated AVP_ACCT_SESSION_TIME = uint32(46) // Type: Unsigned32 AVP_ACCT_INPUT_PACKETS = uint32(47) // Type: Integer32 AVP_ACCT_OUTPUT_PACKETS = uint32(48) // Type: Integer32 AVP_ACCT_TERMINATE_CAUSE = uint32(49) // Type: Unsigned32 AVP_ACCOUNTING_MULTI_SESSION_ID = uint32(50) // Type: OctetString AVP_ACCT_LINK_COUNT = uint32(51) // Type: Unsigned32 AVP_ACCT_INPUT_GIGAWORDS = uint32(52) // Type: Integer32 AVP_ACCT_OUTPUT_GIGAWORDS = uint32(53) // Type: Integer32 AVP_EVENT_TIMESTAMP = uint32(55) // Type: Time AVP_EGRESS_VLANID = uint32(56) // Type: OctetString AVP_INGRESS_FILTERS = uint32(57) // Type: Enumerated AVP_EGRESS_VLAN_NAME = uint32(58) // Type: UTF8String AVP_USER_PRIORITY_TABLE = uint32(59) // Type: OctetString AVP_CHAP_CHALLENGE = uint32(60) // Type: OctetString AVP_NAS_PORT_TYPE = uint32(61) // Type: Enumerated AVP_PORT_LIMIT = uint32(62) // Type: Unsigned32 AVP_LOGIN_LAT_PORT = uint32(63) // Type: OctetString AVP_TUNNEL_TYPE = uint32(64) // Type: Enumerated AVP_TUNNEL_MEDIUM_TYPE = uint32(65) // Type: Enumerated AVP_ACCT_TUNNEL_CLIENT_ENDPOINT = uint32(66) // Type: UTF8String AVP_TUNNEL_SERVER_ENDPOINT = uint32(67) // Type: UTF8String AVP_ACCT_TUNNEL_CONNECTION_ID = uint32(68) // Type: OctetString AVP_TUNNEL_PASSWORD = uint32(69) // Type: OctetString AVP_ARAP_PASSWORD = uint32(70) // Type: OctetString AVP_ARAP_FEATURES = uint32(71) // Type: OctetString AVP_ARAP_ZONE_ACCESS = uint32(72) // Type: Enumerated AVP_ARAP_SECURITY = uint32(73) // Type: Unsigned32 AVP_ARAP_SECURITY_DATA = uint32(74) // Type: OctetString AVP_PASSWORD_RETRY = uint32(75) // Type: Unsigned32 AVP_PROMPT = uint32(76) // Type: Enumerated AVP_CONNECT_INFO = uint32(77) // Type: UTF8String AVP_CONFIGURATION_TOKEN = uint32(78) // Type: OctetString AVP_EAP_MESSAGE = uint32(79) // Type: OctetString AVP_SIGNATURE = uint32(80) // Type: OctetString AVP_TUNNEL_PRIVATE_GROUP_ID = uint32(81) // Type: OctetString AVP_TUNNEL_ASSIGNMENT_ID = uint32(82) // Type: OctetString AVP_TUNNEL_PREFERENCE = uint32(83) // Type: Unsigned32 AVP_ARAP_CHALLENGE_RESPONSE = uint32(84) // Type: OctetString AVP_ACCT_INTERIM_INTERVAL = uint32(85) // Type: Unsigned32 AVP_ACCT_TUNNEL_PACKETS_LOST = uint32(86) // Type: Unsigned32 AVP_NAS_PORT_ID = uint32(87) // Type: UTF8String AVP_FRAMED_POOL = uint32(88) // Type: OctetString AVP_CUI = uint32(89) // Type: UTF8String AVP_TUNNEL_CLIENT_AUTH_ID = uint32(90) // Type: UTF8String AVP_TUNNEL_SERVER_AUTH_ID = uint32(91) // Type: UTF8String AVP_NAS_FILTER_RULE = uint32(92) // Type: UTF8String AVP_ORIGINATING_LINE_INFO = uint32(94) // Type: OctetString AVP_NAS_IPV6_ADDRESS = uint32(95) // Type: OctetString AVP_FRAMED_INTERFACE_ID = uint32(96) // Type: Unsigned64 AVP_FRAMED_IPV6_PREFIX = uint32(97) // Type: OctetString AVP_LOGIN_IPV6_HOST = uint32(98) // Type: OctetString AVP_FRAMED_IPV6_ROUTE = uint32(99) // Type: UTF8String AVP_FRAMED_IPV6_POOL = uint32(100) // Type: OctetString AVP_ERROR_CAUSE = uint32(101) // Type: Integer32 AVP_EAP_KEY_NAME = uint32(102) // Type: UTF8String AVP_DIGEST_RESPONSE = uint32(103) // Type: UTF8String AVP_DIGEST_REALM = uint32(104) // Type: UTF8String AVP_DIGEST_NONCE = uint32(105) // Type: UTF8String AVP_DIGEST_RESPONSE_AUTH = uint32(106) // Type: UTF8String AVP_DIGEST_NEXTNONCE = uint32(107) // Type: UTF8String AVP_DIGEST_METHOD = uint32(108) // Type: UTF8String AVP_DIGEST_URI = uint32(109) // Type: UTF8String AVP_DIGEST_QOP = uint32(110) // Type: UTF8String AVP_DIGEST_ALGORITHM = uint32(111) // Type: UTF8String AVP_DIGEST_ENTITY_BODY_HASH = uint32(112) // Type: UTF8String AVP_DIGEST_DIGEST_CNONCE = uint32(113) // Type: UTF8String AVP_DIGEST_NONCE_COUNT = uint32(114) // Type: UTF8String AVP_DIGEST_USERNAME = uint32(115) // Type: UTF8String AVP_DIGEST_OPAQUE = uint32(116) // Type: UTF8String AVP_DIGEST_AUTH_PARAM = uint32(117) // Type: UTF8String AVP_DIGEST_AKA_AUTS = uint32(118) // Type: UTF8String AVP_DIGEST_DOMAIN = uint32(119) // Type: UTF8String AVP_DIGEST_STALE = uint32(120) // Type: UTF8String AVP_DIGEST_HA1 = uint32(121) // Type: UTF8String AVP_SIP_AOR = uint32(122) // Type: UTF8String AVP_DELEGATED_IPV6_PREFIX = uint32(123) // Type: OctetString AVP_MIP6_FEATURE_VECTOR = uint32(124) // Type: Unsigned64 AVP_MIP6_HOME_LINK_PREFIX = uint32(125) // Type: OctetString AVP_OPERATOR_NAME = uint32(126) // Type: OctetString AVP_LOCATION_INFORMATION = uint32(127) // Type: OctetString AVP_LOCATION_DATA = uint32(128) // Type: OctetString AVP_BASIC_LOCATION_POLICY_RULES = uint32(129) // Type: OctetString AVP_EXTENDED_LOCATION_POLICY_RULES = uint32(130) // Type: OctetString AVP_LOCATION_CAPABLE = uint32(131) // Type: OctetString AVP_REQUESTED_LOCATION_INFO = uint32(132) // Type: OctetString AVP_FRAMED_MANAGEMENT_PROTOCOL = uint32(133) // Type: Enumerated AVP_MANAGEMENT_TRANSPORT_PROTECTION = uint32(134) // Type: Enumerated AVP_MANAGEMENT_POLICY_ID = uint32(135) // Type: UTF8String AVP_MANAGEMENT_PRIVILEGE_LEVEL = uint32(136) // Type: Integer32 AVP_PKM_SS_CERT = uint32(137) // Type: OctetString AVP_PKM_CA_CERT = uint32(138) // Type: OctetString AVP_PKM_CONFIG_SETTINGS = uint32(139) // Type: OctetString AVP_PKM_CRYPTOSUITE_LIST = uint32(140) // Type: OctetString AVP_PPKM_SAID = uint32(141) // Type: OctetString AVP_PKM_SA_DESCRIPTOR = uint32(142) // Type: OctetString AVP_PKM_AUTH_KEY = uint32(143) // Type: OctetString AVP_HOST_IP_ADDRESS = uint32(257) // Type: IPAddress AVP_AUTH_APPLICATION_ID = uint32(258) // Type: AppId AVP_ACCT_APPLICATION_ID = uint32(259) // Type: AppId AVP_VENDOR_SPECIFIC_APPLICATION_ID = uint32(260) // Type: AVP_REDIRECT_HOST_USAGE = uint32(261) // Type: Enumerated AVP_REDIRECT_MAX_CACHE_TIME = uint32(262) // Type: Unsigned32 AVP_SESSION_ID = uint32(263) // Type: UTF8String AVP_ORIGIN_HOST = uint32(264) // Type: DiameterIdentity AVP_SUPPORTED_VENDOR_ID = uint32(265) // Type: VendorId AVP_VENDOR_ID = uint32(266) // Type: VendorId AVP_FIRMWARE_REVISION = uint32(267) // Type: Unsigned32 AVP_RESULT_CODE = uint32(268) // Type: Unsigned32 AVP_PRODUCT_NAME = uint32(269) // Type: UTF8String AVP_SESSION_BINDING = uint32(270) // Type: Unsigned32 AVP_SESSION_SERVER_FAILOVER = uint32(271) // Type: Unsigned32 AVP_MULTI_ROUND_TIME_OUT = uint32(272) // Type: Unsigned32 AVP_DISCONNECT_CAUSE = uint32(273) // Type: Enumerated AVP_AUTH_REQUEST_TYPE = uint32(274) // Type: Unsigned32 AVP_ALTERNATE_PEER = uint32(275) // Type: DiameterIdentity AVP_AUTH_GRACE_PERIOD = uint32(276) // Type: Unsigned32 AVP_AUTH_SESSION_STATE = uint32(277) // Type: Unsigned32 AVP_ORIGIN_STATE_ID = uint32(278) // Type: Unsigned32 AVP_FAILED_AVP = uint32(279) // Type: AVP_PROXY_HOST = uint32(280) // Type: DiameterIdentity AVP_ERROR_MESSAGE = uint32(281) // Type: UTF8String AVP_ROUTE_RECORD = uint32(282) // Type: DiameterIdentity AVP_DESTINATION_REALM = uint32(283) // Type: DiameterIdentity AVP_PROXY_INFO = uint32(284) // Type: AVP_RE_AUTH_REQUEST_TYPE = uint32(285) // Type: Unsigned32 AVP_ACCOUNTING_SUB_SESSION_ID = uint32(287) // Type: Unsigned64 AVP_AUTHORIZATION_LIFETIME = uint32(291) // Type: Integer32 AVP_REDIRECT_HOST = uint32(292) // Type: DiameterURI AVP_DESTINATION_HOST = uint32(293) // Type: DiameterIdentity AVP_ERROR_REPORTING_HOST = uint32(294) // Type: DiameterIdentity AVP_TERMINATION_CAUSE = uint32(295) // Type: Enumerated AVP_ORIGIN_REALM = uint32(296) // Type: DiameterIdentity AVP_EXPERIMENTAL_RESULT = uint32(297) // Type: AVP_EXPERIMENTAL_RESULT_CODE = uint32(298) // Type: Unsigned32 AVP_INBAND_SECURITY_ID = uint32(299) // Type: Unsigned32 AVP_E2E_SEQUENCE = uint32(300) // Type: AVP_REQUESTED_ACTION = uint32(436) // Type: Enumerated AVP_ACCOUNTING_RECORD_TYPE = uint32(480) // Type: Enumerated AVP_ACCOUNTING_REALTIME_REQUIRED = uint32(483) // Type: Unsigned32 AVP_ACCOUNTING_RECORD_NUMBER = uint32(485) // Type: Unsigned32 AVP_TMOD_1 = uint32(495) // Type: AVP_TOKEN_RATE = uint32(496) // Type: Float32 AVP_BUCKET_DEPTH = uint32(497) // Type: Float32 AVP_PEAK_TRAFFIC_RATE = uint32(498) // Type: Float32 AVP_MINIMUM_POLICED_UNIT = uint32(499) // Type: Unsigned32 AVP_MAXIMUM_PACKET_SIZE = uint32(500) // Type: Unsigned32 AVP_TMOD_2 = uint32(501) // Type: AVP_BANDWIDTH = uint32(502) // Type: Float32 AVP_PHB_CLASS = uint32(503) // Type: Unsigned32 AVP_PORT = uint32(530) // Type: Integer32 AVP_PORT_RANGE = uint32(531) // Type: AVP_PORT_START = uint32(532) // Type: Integer32 AVP_PORT_END = uint32(533) // Type: Integer32 AVP_3GPP_AAA_SERVER_NAME = uint32(318) // Type: OctetString AVP_MAXIMUM_NUMBER_ACCESSES = uint32(319) // Type: Unsigned32 AVP_GBA_USERSECSETTINGS = uint32(400) // Type: OctetString AVP_TRANSACTION_IDENTIFIER = uint32(401) // Type: OctetString AVP_NAF_HOSTNAME = uint32(402) // Type: OctetString AVP_GAA_SERVICE_IDENTIFIER = uint32(403) // Type: OctetString AVP_KEY_EXPIRYTIME = uint32(404) // Type: Time AVP_ME_KEY_MATERIAL = uint32(405) // Type: OctetString AVP_UICC_KEY_MATERIAL = uint32(406) // Type: OctetString AVP_GBA_U_AWARENESS_INDICATOR = uint32(407) // Type: Enumerated AVP_BOOTSTRAPINFOCREATIONTIME = uint32(408) // Type: Time AVP_GUSS_TIMESTAMP = uint32(409) // Type: Time AVP_GBA_TYPE = uint32(410) // Type: Enumerated AVP_UE_ID = uint32(411) // Type: OctetString AVP_UE_ID_TYPE = uint32(412) // Type: Enumerated AVP_UICC_APP_LABEL = uint32(413) // Type: OctetString AVP_UICC_ME = uint32(414) // Type: Enumerated AVP_REQUESTED_KEY_LIFETIME = uint32(415) // Type: Time AVP_PRIVATE_IDENTITY_REQUEST = uint32(416) // Type: Enumerated AVP_GBA_PUSH_INFO = uint32(417) // Type: OctetString AVP_NAF_SA_IDENTIFIER = uint32(418) // Type: OctetString AVP_SECURITY_FEATURE_REQUEST = uint32(419) // Type: OctetString AVP_SECURITY_FEATURE_RESPONSE = uint32(420) // Type: OctetString AVP_EVENT_TYPE = uint32(823) // Type: AVP_SIP_METHOD = uint32(824) // Type: UTF8String AVP_EVENT = uint32(825) // Type: UTF8String AVP_CONTENT_TYPE = uint32(826) // Type: UTF8String AVP_CONTENT_LENGTH = uint32(827) // Type: Unsigned32 AVP_CONTENT_DISPOSITION = uint32(828) // Type: UTF8String AVP_ROLE_OF_NODE = uint32(829) // Type: Enumerated AVP_USER_SESSION_ID = uint32(830) // Type: UTF8String AVP_CALLING_PARTY_ADDRESS = uint32(831) // Type: UTF8String AVP_CALLED_PARTY_ADDRESS = uint32(832) // Type: UTF8String AVP_TIME_STAMPS = uint32(833) // Type: AVP_SIP_REQUEST_TIMESTAMP = uint32(834) // Type: Time AVP_SIP_RESPONSE_TIMESTAMP = uint32(835) // Type: Time AVP_APPLICATION_SERVER = uint32(836) // Type: UTF8String AVP_APPLICATION_PROVIDED_CALLED_PARTY_ADDRESS = uint32(837) // Type: UTF8String AVP_INTER_OPERATOR_IDENTIFIER = uint32(838) // Type: AVP_ORIGINATING_IOI = uint32(839) // Type: UTF8String AVP_TERMINATING_IOI = uint32(840) // Type: UTF8String AVP_IMS_CHARGING_IDENTIFIER = uint32(841) // Type: UTF8String AVP_SDP_SESSION_DESCRIPTION = uint32(842) // Type: UTF8String AVP_SDP_MEDIA_COMPONENTS = uint32(843) // Type: AVP_SDP_MEDIA_NAME = uint32(844) // Type: UTF8String AVP_SDP_MEDIA_DESCRIPTION = uint32(845) // Type: UTF8String AVP_CG_ADDRESS = uint32(846) // Type: IPAddress AVP_GGSN_ADDRESS = uint32(847) // Type: IPAddress AVP_SERVED_PARTY_IP_ADDRESS = uint32(848) // Type: IPAddress AVP_AUTHORISED_QOS = uint32(849) // Type: UTF8String AVP_APPLICATION_SERVER_INFORMATION = uint32(850) // Type: AVP_TRUNK_GROUP_ID = uint32(851) // Type: AVP_INCOMING_TRUNK_GROUP_ID = uint32(852) // Type: UTF8String AVP_OUTGOING_TRUNK_GROUP_ID = uint32(853) // Type: UTF8String AVP_BEARER_SERVICE = uint32(854) // Type: OctetString AVP_SERVICE_ID = uint32(855) // Type: UTF8String TODO: FIX AVP_POC_CONTROLLING_ADDRESS = uint32(858) // Type: UTF8String AVP_POC_GROUP_NAME = uint32(859) // Type: UTF8String AVP_CAUSE = uint32(860) // Type: AVP_CAUSE_CODE = uint32(861) // Type: Enumerated AVP_NODE_FUNCTIONALITY = uint32(862) // Type: Unsigned32 AVP_SERVICE_SPECIFIC_DATA = uint32(863) // Type: UTF8String AVP_ORIGINATOR = uint32(864) // Type: Enumerated AVP_PS_FURNISH_CHARGING_INFORMATION = uint32(865) // Type: AVP_PS_FREE_FORMAT_DATA = uint32(866) // Type: OctetString AVP_PS_APPEND_FREE_FORMAT_DATA = uint32(867) // Type: Enumerated AVP_TIME_QUOTA_THRESHOLD = uint32(868) // Type: Unsigned32 AVP_VOLUME_QUOTA_THRESHOLD = uint32(869) // Type: Unsigned32 AVP_TRIGGER_TYPE = uint32(870) // Type: Enumerated AVP_QUOTA_HOLDING_TIME = uint32(871) // Type: Unsigned32 AVP_REPORTING_REASON = uint32(872) // Type: Enumerated AVP_SERVICE_INFORMATION = uint32(873) // Type: AVP_PS_INFORMATION = uint32(874) // Type: AVP_WLAN_INFORMATION = uint32(875) // Type: AVP_IMS_INFORMATION = uint32(876) // Type: AVP_MMS_INFORMATION = uint32(877) // Type: AVP_LCS_INFORMATION = uint32(878) // Type: AVP_POC_INFORMATION = uint32(879) // Type: AVP_MBMS_INFORMATION = uint32(880) // Type: AVP_QUOTA_CONSUMPTION_TIME = uint32(881) // Type: Unsigned32 AVP_MEDIA_INITIATOR_FLAG = uint32(882) // Type: Enumerated AVP_POC_SERVER_ROLE = uint32(883) // Type: Enumerated AVP_POC_SESSION_TYPE = uint32(884) // Type: Enumerated AVP_NUMBER_OF_PARTICIPANTS = uint32(885) // Type: Integer32 AVP_ORIGINATOR_ADDRESS = uint32(886) // Type: AVP_PARTICIPANTS_INVOLVED = uint32(887) // Type: UTF8String AVP_EXPIRES = uint32(888) // Type: Unsigned32 AVP_MESSAGE_BODY = uint32(889) // Type: AVP_WAG_ADDRESS = uint32(890) // Type: IPAddress AVP_WAG_PLMN_ID = uint32(891) // Type: OctetString AVP_WLAN_RADIO_CONTAINER = uint32(892) // Type: AVP_WLAN_TECHNOLOGY = uint32(893) // Type: Unsigned32 AVP_WLAN_UE_LOCAL_IPADDRESS = uint32(894) // Type: IPAddress AVP_PDG_ADDRESS = uint32(895) // Type: IPAddress AVP_PDG_CHARGING_ID = uint32(896) // Type: Unsigned32 AVP_ADDRESS_DATA = uint32(897) // Type: UTF8String AVP_ADDRESS_DOMAIN = uint32(898) // Type: AVP_ADDRESS_TYPE = uint32(899) // Type: Enumerated AVP_BEARER_USAGE = uint32(1000) // Type: Enumerated AVP_CHARGING_RULE_INSTALL = uint32(1001) // Type: AVP_CHARGING_RULE_REMOVE = uint32(1002) // Type: AVP_CHARGING_RULE_DEFINITION = uint32(1003) // Type: AVP_CHARGING_RULE_BASE_NAME = uint32(1004) // Type: UTF8String AVP_CHARGING_RULE_NAME = uint32(1005) // Type: OctetString AVP_EVENT_TRIGGER = uint32(1006) // Type: Enumerated AVP_METERING_METHOD = uint32(1007) // Type: Enumerated AVP_OFFLINE = uint32(1008) // Type: Enumerated AVP_ONLINE = uint32(1009) // Type: Enumerated AVP_PRECEDENCE = uint32(1010) // Type: Unsigned32 AVP_REPORTING_LEVEL = uint32(1011) // Type: Enumerated AVP_TFT_FILTER = uint32(1012) // Type: IPFilterRule TODO: FIX AVP_TFT_PACKET_FILTER_INFORMATION = uint32(1013) // Type: AVP_TOS_TRAFFIC_CLASS = uint32(1014) // Type: OctetString AVP_PDP_SESSION_OPERATION = uint32(1015) // Type: Unsigned32 AVP_QOS_INFORMATION = uint32(1016) // Type: AVP_CHARGING_RULE_REPORT = uint32(1018) // Type: AVP_PCC_RULE_STATUS = uint32(1019) // Type: Unsigned32 AVP_BEARER_IDENTIFIER = uint32(1020) // Type: OctetString AVP_BEARER_OPERATION = uint32(1021) // Type: Enumerated AVP_ACCESS_NETWORK_CHARGING_IDENTIFIER_GX = uint32(1022) // Type: AVP_BEARER_CONTROL_MODE = uint32(1023) // Type: Enumerated AVP_NETWORK_REQUEST_SUPPORT = uint32(1024) // Type: Enumerated AVP_GUARANTEED_BITRATE_DL = uint32(1025) // Type: Unsigned32 AVP_GUARANTEED_BITRATE_UL = uint32(1026) // Type: Unsigned32 AVP_IP_CAN_TYPE = uint32(1027) // Type: Enumerated AVP_QOS_CLASS_IDENTIFIER = uint32(1028) // Type: Enumerated AVP_QOS_NEGOTIATION = uint32(1029) // Type: Enumerated AVP_QOS_UPGRADE = uint32(1030) // Type: Enumerated AVP_RULE_FAILURE_CODE = uint32(1031) // Type: Enumerated AVP_RAT_TYPE = uint32(1032) // Type: Enumerated AVP_EVENT_REPORT_INDICATION = uint32(1033) // Type: AVP_ALLOCATION_RETENTION_PRIORITY = uint32(1034) // Type: AVP_COA_IP_ADDRESS = uint32(1035) // Type: IPAddress AVP_TUNNEL_HEADER_FILTER = uint32(1036) // Type: IPFilterRule AVP_TUNNEL_HEADER_LENGTH = uint32(1037) // Type: Unsigned32 AVP_TUNNEL_INFORMATION = uint32(1038) // Type: AVP_COA_INFORMATION = uint32(1039) // Type: AVP_APN_AGGREGATE_MAX_BITRATE_DL = uint32(1040) // Type: Unsigned32 AVP_APN_AGGREGATE_MAX_BITRATE_UL = uint32(1041) // Type: Unsigned32 AVP_REVALIDATION_TIME = uint32(1042) // Type: Time AVP_RULE_ACTIVATION_TIME = uint32(1043) // Type: Time AVP_RULE_DEACTIVATION_TIME = uint32(1044) // Type: Time AVP_SESSION_RELEASE_CAUSE = uint32(1045) // Type: Enumerated AVP_PRIORITY_LEVEL = uint32(1046) // Type: Unsigned32 AVP_PRE_EMPTION_CAPABILITY = uint32(1047) // Type: Enumerated AVP_PRE_EMPTION_VULNERABILITY = uint32(1048) // Type: Enumerated AVP_DEFAULT_EPS_BEARER_QOS = uint32(1049) // Type: AVP_AN_GW_ADDRESS = uint32(1050) // Type: IPAddress AVP_QOS_RULE_INSTALL = uint32(1051) // Type: AVP_QOS_RULE_REMOVE = uint32(1052) // Type: AVP_QOS_RULE_DEFINITION = uint32(1053) // Type: AVP_QOS_RULE_NAME = uint32(1054) // Type: OctetString AVP_QOS_RULE_REPORT = uint32(1055) // Type: AVP_SECURITY_PARAMETER_INDEX = uint32(1056) // Type: OctetString AVP_FLOW_LABEL = uint32(1057) // Type: OctetString AVP_FLOW_INFORMATION = uint32(1058) // Type: AVP_PACKET_FILTER_CONTENT = uint32(1059) // Type: IPFilterRule AVP_PACKET_FILTER_IDENTIFIER = uint32(1060) // Type: OctetString AVP_PACKET_FILTER_INFORMATION = uint32(1061) // Type: AVP_PACKET_FILTER_OPERATION = uint32(1062) // Type: Enumerated AVP_RESOURCE_ALLOCATION_NOTIFICATION = uint32(1063) // Type: Enumerated AVP_SESSION_LINKING_INDICATOR = uint32(1064) // Type: Enumerated AVP_PDN_CONNECTION_ID = uint32(1065) // Type: OctetString AVP_MONITORING_KEY = uint32(1066) // Type: OctetString AVP_USAGE_MONITORING_INFORMATION = uint32(1067) // Type: AVP_USAGE_MONITORING_LEVEL = uint32(1068) // Type: Enumerated AVP_USAGE_MONITORING_REPORT = uint32(1069) // Type: Enumerated AVP_USAGE_MONITORING_SUPPORT = uint32(1070) // Type: Enumerated AVP_CSG_INFORMATION_REPORTING = uint32(1071) // Type: Enumerated AVP_PACKET_FILTER_USAGE = uint32(1072) // Type: Enumerated AVP_CHARGING_CORRELATION_INDICATOR = uint32(1073) // Type: Enumerated AVP_QOS_RULE_BASE_NAME = uint32(1074) // Type: UTF8String AVP_ROUTING_RULE_REMOVE = uint32(1075) // Type: AVP_ROUTING_RULE_DEFINITION = uint32(1076) // Type: AVP_ROUTING_RULE_IDENTIFIER = uint32(1077) // Type: OctetString AVP_ROUTING_FILTER = uint32(1078) // Type: AVP_ROUTING_IP_ADDRESS = uint32(1079) // Type: IPAddress AVP_FLOW_DIRECTION = uint32(1080) // Type: Enumerated AVP_ROUTING_RULE_INSTALL = uint32(1081) // Type: AVP_MAXIMUM_BANDWIDTH = uint32(1082) // Type: AVP_MAX_SUPPORTED_BANDWIDTH_DL = uint32(1083) // Type: Unsigned32 AVP_MAX_SUPPORTED_BANDWIDTH_UL = uint32(1084) // Type: Unsigned32 AVP_SERVED_USER_IDENTITY = uint32(1100) // Type: AVP_VASP_ID = uint32(1101) // Type: UTF8String AVP_VAS_ID = uint32(1102) // Type: UTF8String AVP_TRIGGER_EVENT = uint32(1103) // Type: Enumerated AVP_SENDER_ADDRESS = uint32(1104) // Type: UTF8String AVP_INITIAL_RECIPIENT_ADDRESS = uint32(1105) // Type: AVP_RESULT_RECIPIENT_ADDRESS = uint32(1106) // Type: AVP_SEQUENCE_NUMBER = uint32(1107) // Type: Unsigned32 AVP_RECIPIENT_ADDRESS = uint32(1108) // Type: UTF8String AVP_ROUTEING_ADDRESS = uint32(1109) // Type: UTF8String AVP_ORIGINATING_INTERFACE = uint32(1110) // Type: Enumerated AVP_DELIVERY_REPORT = uint32(1111) // Type: Enumerated AVP_READ_REPLY = uint32(1112) // Type: Enumerated AVP_SENDER_VISIBILITY = uint32(1113) // Type: Enumerated AVP_SERVICE_KEY = uint32(1114) // Type: UTF8String AVP_BILLING_INFORMATION = uint32(1115) // Type: UTF8String AVP_STATUS = uint32(1116) // Type: AVP_STATUS_CODE = uint32(1117) // Type: UTF8String AVP_STATUS_TEXT = uint32(1118) // Type: UTF8String AVP_ROUTEING_ADDRESS_RESOLUTION = uint32(1119) // Type: Enumerated AVP_DOMAIN_NAME = uint32(1200) // Type: UTF8String // AVP_RECIPIENT_ADDRESS = uint32(1201) // Type: AVP_SUBMISSION_TIME = uint32(1202) // Type: Time AVP_MM_CONTENT_TYPE = uint32(1203) // Type: AVP_TYPE_NUMBER = uint32(1204) // Type: Enumerated AVP_ADDITIONAL_TYPE_INFORMATION = uint32(1205) // Type: UTF8String AVP_CONTENT_SIZE = uint32(1206) // Type: Unsigned32 AVP_ADDITIONAL_CONTENT_INFORMATION = uint32(1207) // Type: AVP_ADDRESSEE_TYPE = uint32(1208) // Type: Enumerated AVP_PRIORITY = uint32(1209) // Type: Enumerated AVP_MESSAGE_ID = uint32(1210) // Type: UTF8String AVP_MESSAGE_TYPE = uint32(1211) // Type: Enumerated AVP_MESSAGE_SIZE = uint32(1212) // Type: Unsigned32 AVP_MESSAGE_CLASS = uint32(1213) // Type: AVP_CLASS_IDENTIFIER = uint32(1214) // Type: Enumerated AVP_TOKEN_TEXT = uint32(1215) // Type: UTF8String AVP_DELIVERY_REPORT_REQUESTED = uint32(1216) // Type: Enumerated AVP_ADAPTATIONS = uint32(1217) // Type: Enumerated AVP_APPLIC_ID = uint32(1218) // Type: UTF8String AVP_AUX_APPLIC_INFO = uint32(1219) // Type: UTF8String AVP_CONTENT_CLASS = uint32(1220) // Type: Enumerated AVP_DRM_CONTENT = uint32(1221) // Type: Enumerated AVP_READ_REPLY_REPORT_REQUESTED = uint32(1222) // Type: Enumerated AVP_REPLY_APPLIC_ID = uint32(1223) // Type: UTF8String AVP_FILE_REPAIR_SUPPORTED = uint32(1224) // Type: Enumerated AVP_MBMS_USER_SERVICE_TYPE = uint32(1225) // Type: Enumerated AVP_UNIT_QUOTA_THRESHOLD = uint32(1226) // Type: Unsigned32 AVP_PDP_ADDRESS = uint32(1227) // Type: IPAddress AVP_SGSN_ADDRESS = uint32(1228) // Type: IPAddress AVP_POC_SESSION_ID = uint32(1229) // Type: UTF8String AVP_DEFERRED_LOCATION_EVENT_TYPE = uint32(1230) // Type: UTF8String AVP_LCS_APN = uint32(1231) // Type: UTF8String AVP_LCS_CLIENT_ID = uint32(1232) // Type: AVP_LCS_CLIENT_DIALED_BY_MS = uint32(1233) // Type: UTF8String AVP_LCS_CLIENT_EXTERNAL_ID = uint32(1234) // Type: UTF8String AVP_LCS_CLIENT_NAME = uint32(1235) // Type: AVP_LCS_DATA_CODING_SCHEME = uint32(1236) // Type: UTF8String AVP_LCS_FORMAT_INDICATOR = uint32(1237) // Type: Enumerated AVP_LCS_NAME_STRING = uint32(1238) // Type: UTF8String AVP_LCS_REQUESTOR_ID = uint32(1239) // Type: AVP_LCS_REQUESTOR_ID_STRING = uint32(1240) // Type: UTF8String AVP_LCS_CLIENT_TYPE = uint32(1241) // Type: Enumerated AVP_LOCATION_ESTIMATE = uint32(1242) // Type: UTF8String AVP_LOCATION_ESTIMATE_TYPE = uint32(1243) // Type: Enumerated AVP_LOCATION_TYPE = uint32(1244) // Type: AVP_POSITIONING_DATA = uint32(1245) // Type: UTF8String AVP_WLAN_SESSION_ID = uint32(1246) // Type: UTF8String AVP_PDP_CONTEXT_TYPE = uint32(1247) // Type: Enumerated AVP_MMBOX_STORAGE_REQUESTED = uint32(1248) // Type: Enumerated AVP_SERVICE_SPECIFIC_INFO = uint32(1249) // Type: AVP_CALLED_ASSERTED_IDENTITY = uint32(1250) // Type: UTF8String AVP_REQUESTED_PARTY_ADDRESS = uint32(1251) // Type: UTF8String AVP_POC_USER_ROLE = uint32(1252) // Type: AVP_POC_USER_ROLE_IDS = uint32(1253) // Type: UTF8String AVP_POC_USER_ROLE_INFO_UNITS = uint32(1254) // Type: Enumerated AVP_TALK_BURST_EXCHANGE = uint32(1255) // Type: AVP_SERVICE_GENERIC_INFORMATION = uint32(1256) // Type: AVP_SERVICE_SPECIFIC_TYPE = uint32(1257) // Type: Unsigned32 AVP_EVENT_CHARGING_TIMESTAMP = uint32(1258) // Type: Time AVP_PARTICIPANT_ACCESS_PRIORITY = uint32(1259) // Type: Enumerated AVP_PARTICIPANT_GROUP = uint32(1260) // Type: AVP_POC_CHANGE_CONDITION = uint32(1261) // Type: Enumerated AVP_POC_CHANGE_TIME = uint32(1262) // Type: Time AVP_ACCESS_NETWORK_INFORMATION = uint32(1263) // Type: UTF8String AVP_TRIGGER = uint32(1264) // Type: AVP_BASE_TIME_INTERVAL = uint32(1265) // Type: Unsigned32 AVP_ENVELOPE = uint32(1266) // Type: AVP_ENVELOPE_END_TIME = uint32(1267) // Type: Time AVP_ENVELOPE_REPORTING = uint32(1268) // Type: Enumerated AVP_ENVELOPE_START_TIME = uint32(1269) // Type: Time AVP_TIME_QUOTA_MECHANISM = uint32(1270) // Type: AVP_TIME_QUOTA_TYPE = uint32(1271) // Type: Enumerated AVP_EARLY_MEDIA_DESCRIPTION = uint32(1272) // Type: AVP_SDP_TIMESTAMPS = uint32(1273) // Type: AVP_SDP_OFFER_TIMESTAMP = uint32(1274) // Type: Time AVP_SDP_ANSWER_TIMESTAMP = uint32(1275) // Type: Time AVP_AF_CORRELATION_INFORMATION = uint32(1276) // Type: AVP_POC_SESSION_INITIATION_TYPE = uint32(1277) // Type: Enumerated AVP_OFFLINE_CHARGING = uint32(1278) // Type: AVP_USER_PARTICIPATING_TYPE = uint32(1279) // Type: Enumerated AVP_ALTERNATE_CHARGED_PARTY_ADDRESS = uint32(1280) // Type: UTF8String AVP_IMS_COMMUNICATION_SERVICE_IDENTIFIER = uint32(1281) // Type: UTF8String AVP_NUMBER_OF_RECEIVED_TALK_BURSTS = uint32(1282) // Type: Unsigned32 AVP_NUMBER_OF_TALK_BURSTS = uint32(1283) // Type: Unsigned32 AVP_RECEIVED_TALK_BURST_TIME = uint32(1284) // Type: Unsigned32 AVP_RECEIVED_TALK_BURST_VOLUME = uint32(1285) // Type: Unsigned32 AVP_TALK_BURST_TIME = uint32(1286) // Type: Unsigned32 AVP_TALK_BURST_VOLUME = uint32(1287) // Type: Unsigned32 AVP_MEDIA_INITIATOR_PARTY = uint32(1288) // Type: UTF8String AVP_SUBSCRIPTION_DATA = uint32(1400) // Type: AVP_TERMINAL_INFORMATION = uint32(1401) // Type: AVP_IMEI = uint32(1402) // Type: UTF8String AVP_SOFTWARE_VERSION = uint32(1403) // Type: UTF8String AVP_QOS_SUBSCRIBED = uint32(1404) // Type: UTF8String AVP_ULR_FLAGS = uint32(1405) // Type: Unsigned32 AVP_ULA_FLAGS = uint32(1406) // Type: Unsigned32 AVP_VISITED_PLMN_ID = uint32(1407) // Type: OctetString AVP_REQUESTED_EUTRAN_AUTHENTICATION_INFO = uint32(1408) // Type: AVP_REQUESTED_UTRAN_GERAN_AUTHENTICATION_INFO = uint32(1409) // Type: AVP_NUMBER_OF_REQUESTED_VECTORS = uint32(1410) // Type: Unsigned32 AVP_RE_SYNCHRONIZATION_INFO = uint32(1411) // Type: OctetString AVP_IMMEDIATE_RESPONSE_PREFERRED = uint32(1412) // Type: Unsigned32 AVP_AUTHENTICATION_INFO = uint32(1413) // Type: AVP_E_UTRAN_VECTOR = uint32(1414) // Type: AVP_UMTS_VECTOR = uint32(1415) // Type: AVP_GERAN_VECTOR = uint32(1416) // Type: AVP_NETWORK_ACCESS_MODE = uint32(1417) // Type: Enumerated AVP_HPLMN_ODB = uint32(1418) // Type: Unsigned32 AVP_ITEM_NUMBER = uint32(1419) // Type: Unsigned32 AVP_CANCELLATION_TYPE = uint32(1420) // Type: Enumerated AVP_DSR_FLAGS = uint32(1421) // Type: Unsigned32 AVP_DSA_FLAGS = uint32(1422) // Type: Unsigned32 AVP_CONTEXT_IDENTIFIER = uint32(1423) // Type: Unsigned32 AVP_SUBSCRIBER_STATUS = uint32(1424) // Type: Enumerated AVP_OPERATOR_DETERMINED_BARRING = uint32(1425) // Type: Unsigned32 AVP_ACCESS_RESTRICTION_DATA = uint32(1426) // Type: Unsigned32 AVP_APN_OI_REPLACEMENT = uint32(1427) // Type: UTF8String AVP_ALL_APN_CONFIGURATIONS_INCLUDED_INDICATOR = uint32(1428) // Type: Enumerated AVP_APN_CONFIGURATION_PROFILE = uint32(1429) // Type: AVP_APN_CONFIGURATION = uint32(1430) // Type: AVP_EPS_SUBSCRIBED_QOS_PROFILE = uint32(1431) // Type: AVP_VPLMN_DYNAMIC_ADDRESS_ALLOWED = uint32(1432) // Type: Enumerated AVP_STN_SR = uint32(1433) // Type: OctetString AVP_ALERT_REASON = uint32(1434) // Type: Enumerated AVP_AMBR = uint32(1435) // Type: AVP_CSG_SUBSCRIPTION_DATA = uint32(1436) // Type: AVP_CSG_ID = uint32(1437) // Type: Unsigned32 AVP_PDN_GW_ALLOCATION_TYPE = uint32(1438) // Type: Enumerated AVP_EXPIRATION_DATE = uint32(1439) // Type: Time AVP_RAT_FREQUENCY_SELECTION_PRIORITY_ID = uint32(1440) // Type: Unsigned32 AVP_IDA_FLAGS = uint32(1441) // Type: Unsigned32 AVP_PUA_FLAGS = uint32(1442) // Type: Unsigned32 AVP_NOR_FLAGS = uint32(1443) // Type: Unsigned32 AVP_USER_ID = uint32(1444) // Type: UTF8String AVP_EQUIPMENT_STATUS = uint32(1445) // Type: Enumerated AVP_REGIONAL_SUBSCRIPTION_ZONE_CODE = uint32(1446) // Type: OctetString AVP_RAND = uint32(1447) // Type: OctetString AVP_XRES = uint32(1448) // Type: OctetString AVP_AUTN = uint32(1449) // Type: OctetString AVP_KASME = uint32(1450) // Type: OctetString AVP_TRACE_COLLECTION_ENTITY = uint32(1452) // Type: IPAddress AVP_KC = uint32(1453) // Type: OctetString AVP_SRES = uint32(1454) // Type: OctetString AVP_REQUESTING_NODE_TYPE = uint32(1455) // Type: Enumerated AVP_PDN_TYPE = uint32(1456) // Type: Enumerated AVP_ROAMING_RESTRICTED_DUE_TO_UNSUPPORTED_FEATURE = uint32(1457) // Type: Enumerated AVP_TRACE_DATA = uint32(1458) // Type: AVP_TRACE_REFERENCE = uint32(1459) // Type: OctetString AVP_TRACE_DEPTH = uint32(1462) // Type: Enumerated AVP_TRACE_NE_TYPE_LIST = uint32(1463) // Type: OctetString AVP_TRACE_INTERFACE_LIST = uint32(1464) // Type: OctetString AVP_TRACE_EVENT_LIST = uint32(1465) // Type: OctetString AVP_OMC_ID = uint32(1466) // Type: OctetString AVP_GPRS_SUBSCRIPTION_DATA = uint32(1467) // Type: AVP_COMPLETE_DATA_LIST_INCLUDED_INDICATOR = uint32(1468) // Type: Enumerated AVP_PDP_CONTEXT = uint32(1469) // Type: AVP_PDP_TYPE = uint32(1470) // Type: OctetString AVP_TGPP2_MEID = uint32(1471) // Type: OctetString AVP_SPECIFIC_APN_INFO = uint32(1472) // Type: AVP_LCS_INFO = uint32(1473) // Type: AVP_GMLC_ADDRESS = uint32(1474) // Type: OctetString AVP_LCS_PRIVACYEXCEPTION = uint32(1475) // Type: AVP_SS_CODE = uint32(1476) // Type: OctetString AVP_SS_STATUS = uint32(1477) // Type: OctetString AVP_NOTIFICATION_TO_UE_USER = uint32(1478) // Type: Enumerated AVP_EXTERNAL_CLIENT = uint32(1479) // Type: AVP_CLIENT_IDENTITY = uint32(1480) // Type: OctetString AVP_GMLC_RESTRICTION = uint32(1481) // Type: Enumerated AVP_PLMN_CLIENT = uint32(1482) // Type: Enumerated // AVP_SERVICE_TYPE = uint32(1483) // Type: AVP_SERVICETYPEIDENTITY = uint32(1484) // Type: Unsigned32 AVP_MO_LR = uint32(1485) // Type: AVP_TELESERVICE_LIST = uint32(1486) // Type: AVP_TS_CODE = uint32(1487) // Type: OctetString AVP_CALL_BARRING_INFOR_LIST = uint32(1488) // Type: AVP_SGSN_NUMBER = uint32(1489) // Type: OctetString AVP_IDR_FLAGS = uint32(1490) // Type: Unsigned32 AVP_ICS_INDICATOR = uint32(1491) // Type: Enumerated AVP_IMS_VOICE_OVER_PSSESSIONS_SUPPORTED = uint32(1492) // Type: Enumerated AVP_HOMOGENEOUS_SUPPORT_OF_IMS_VOICE_OVER_PS_SESSIONS = uint32(1493) // Type: Enumerated AVP_LAST_UE_ACTIVITY_TIME = uint32(1494) // Type: Time AVP_EPS_USER_STATE = uint32(1495) // Type: AVP_EPS_LOCATION_INFORMATION = uint32(1496) // Type: AVP_MME_USER_STATE = uint32(1497) // Type: AVP_SGSN_USER_STATE = uint32(1498) // Type: AVP_USER_STATE = uint32(1499) // Type: Enumerated AVP_NON_3GPP_USER_DATA = uint32(1500) // Type: AVP_NON_3GPP_IP_ACCESS = uint32(1501) // Type: Enumerated AVP_NON_3GPP_IP_ACCESS_APN = uint32(1502) // Type: Enumerated AVP_AN_TRUSTED = uint32(1503) // Type: Enumerated AVP_ANID = uint32(1504) // Type: UTF8String AVP_TRACE_INFO = uint32(1505) // Type: AVP_MIP_FA_RK = uint32(1506) // Type: OctetString AVP_MIP_FA_RK_SPI = uint32(1507) // Type: Unsigned32 AVP_MME_LOCATION_INFORMATION = uint32(1600) // Type: AVP_SGSN_LOCATION_INFORMATION = uint32(1601) // Type: AVP_E_UTRAN_CELL_GLOBAL_IDENTITY = uint32(1602) // Type: OctetString AVP_TRACKING_AREA_IDENTITY = uint32(1603) // Type: OctetString AVP_CELL_GLOBAL_IDENTITY = uint32(1604) // Type: OctetString AVP_ROUTING_AREA_IDENTITY = uint32(1605) // Type: OctetString AVP_LOCATION_AREA_IDENTITY = uint32(1606) // Type: OctetString AVP_SERVICE_AREA_IDENTITY = uint32(1607) // Type: OctetString AVP_GEOGRAPHICAL_INFORMATION = uint32(1608) // Type: OctetString AVP_GEODETIC_INFORMATION = uint32(1609) // Type: OctetString AVP_CURRENT_LOCATION_RETRIEVED = uint32(1610) // Type: Enumerated AVP_AGE_OF_LOCATION_INFORMATION = uint32(1611) // Type: Unsigned32 AVP_ACTIVE_APN = uint32(1612) // Type: AVP_SIPTO_PERMISSION = uint32(1613) // Type: Enumerated AVP_ERROR_DIAGNOSTIC = uint32(1614) // Type: Enumerated AVP_UE_SRVCC_CAPABILITY = uint32(1615) // Type: Enumerated AVP_MPS_PRIORITY = uint32(1616) // Type: Unsigned32 AVP_VPLMN_LIPA_ALLOWED = uint32(1617) // Type: Enumerated AVP_LIPA_PERMISSION = uint32(1618) // Type: Enumerated AVP_SUBSCRIBED_PERIODIC_RAU_TAU_TIMER = uint32(1619) // Type: Unsigned32 AVP_EXT_PDP_TYPE = uint32(1620) // Type: OctetString AVP_EXT_PDP_ADDRESS = uint32(1621) // Type: IPAddress AVP_MDT_CONFIGURATION = uint32(1622) // Type: AVP_JOB_TYPE = uint32(1623) // Type: Enumerated AVP_AREA_SCOPE = uint32(1624) // Type: AVP_LIST_OF_MEASUREMENTS = uint32(1625) // Type: Unsigned32 AVP_REPORTING_TRIGGER = uint32(1626) // Type: Unsigned32 AVP_REPORT_INTERVAL = uint32(1627) // Type: Enumerated AVP_REPORT_AMOUNT = uint32(1628) // Type: Enumerated AVP_EVENT_THRESHOLD_RSRP = uint32(1629) // Type: Unsigned32 AVP_EVENT_THRESHOLD_RSRQ = uint32(1630) // Type: Unsigned32 AVP_LOGGING_INTERVAL = uint32(1631) // Type: Enumerated AVP_LOGGING_DURATION = uint32(1632) // Type: Enumerated AVP_RELAY_NODE_INDICATOR = uint32(1633) // Type: Enumerated AVP_MDT_USER_CONSENT = uint32(1634) // Type: Enumerated AVP_PUR_FLAGS = uint32(1635) // Type: Unsigned32 AVP_SUBSCRIBED_VSRVCC = uint32(1636) // Type: Enumerated AVP_EQUIVALENT_PLMN_LIST = uint32(1637) // Type: AVP_CLR_FLAGS = uint32(1638) // Type: Unsigned32 AVP_UVR_FLAGS = uint32(1639) // Type: Unsigned32 AVP_UVA_FLAGS = uint32(1640) // Type: Unsigned32 AVP_VPLMN_CSG_SUBSCRIPTION_DATA = uint32(1641) // Type: AVP_TIME_ZONE = uint32(1642) // Type: UTF8String AVP_A_MSISDN = uint32(1643) // Type: OctetString AVP_MME_NUMBER_FOR_MT_SMS = uint32(1645) // Type: OctetString AVP_SMS_REGISTER_REQUEST = uint32(1648) // Type: Enumerated AVP_DAYLIGHT_SAVING_TIME = uint32(1650) // Type: Enumerated AVP_SUBSCRIPTION_DATA_FLAGS = uint32(1654) // Type: Unsigned32 AVP_MEASUREMENT_PERIOD_UMTS = uint32(1655) // Type: Enumerated AVP_MEASUREMENT_PERIOD_LTE = uint32(1656) // Type: Enumerated AVP_COLLECTION_PERIOD_RRM_LTE = uint32(1657) // Type: Enumerated AVP_COLLECTION_PERIOD_RRM_UMTS = uint32(1658) // Type: Enumerated AVP_POSITIONING_METHOD = uint32(1659) // Type: OctetString AVP_MEASUREMENT_QUANTITY = uint32(1660) // Type: OctetString AVP_EVENT_THRESHOLD_EVENT_1F = uint32(1661) // Type: Integer32 AVP_EVENT_THRESHOLD_EVENT_1I = uint32(1662) // Type: Integer32 AVP_SMS_INFORMATION = uint32(2000) // Type: AVP_DATA_CODING_SCHEME = uint32(2001) // Type: Integer32 AVP_DESTINATION_INTERFACE = uint32(2002) // Type: AVP_INTERFACE_ID = uint32(2003) // Type: UTF8String AVP_INTERFACE_PORT = uint32(2004) // Type: UTF8String AVP_INTERFACE_TEXT = uint32(2005) // Type: UTF8String AVP_INTERFACE_TYPE = uint32(2006) // Type: Enumerated AVP_SM_MESSAGE_TYPE = uint32(2007) // Type: Enumerated AVP_ORIGINATING_SCCP_ADDRESS = uint32(2008) // Type: IPAddress AVP_ORIGINATOR_INTERFACE = uint32(2009) // Type: AVP_RECIPIENT_SCCP_ADDRESS = uint32(2010) // Type: IPAddress AVP_REPLY_PATH_REQUESTED = uint32(2011) // Type: Enumerated AVP_SM_DISCHARGE_TIME = uint32(2012) // Type: Time AVP_SM_PROTOCOL_ID = uint32(2013) // Type: OctetString AVP_SM_STATUS = uint32(2014) // Type: OctetString AVP_SM_USER_DATA_HEADER = uint32(2015) // Type: OctetString AVP_SMS_NODE = uint32(2016) // Type: Enumerated AVP_SMSC_ADDRESS = uint32(2017) // Type: IPAddress AVP_CLIENT_ADDRESS = uint32(2018) // Type: IPAddress AVP_NUMBER_OF_MESSAGES_SENT = uint32(2019) // Type: Unsigned32 AVP_LOW_BALANCE_INDICATION = uint32(2020) // Type: Enumerated AVP_REMAINING_BALANCE = uint32(2021) // Type: AVP_REFUND_INFORMATION = uint32(2022) // Type: OctetString AVP_CARRIER_SELECT_ROUTING_INFORMATION = uint32(2023) // Type: UTF8String AVP_NUMBER_PORTABILITY_ROUTING_INFORMATION = uint32(2024) // Type: UTF8String AVP_POC_EVENT_TYPE = uint32(2025) // Type: Enumerated AVP_RECIPIENTS = uint32(2026) // Type: // AVP_DESTINATION_INTERFACE = uint32(2027) // Type: AVP_RECIPIENT_RECEIVED_ADDRESS = uint32(2028) // Type: AVP_SM_SERVICE_TYPE = uint32(2029) // Type: Enumerated AVP_MMTEL_INFORMATION = uint32(2030) // Type: // AVP_SERVICE_TYPE = uint32(2031) // Type: Enumerated AVP_SERVICE_MODE = uint32(2032) // Type: Enumerated AVP_SUBSCRIBER_ROLE = uint32(2033) // Type: Enumerated AVP_NUMBER_OF_DIVERSIONS = uint32(2034) // Type: Unsigned32 AVP_ASSOCIATED_PARTY_ADDRESS = uint32(2035) // Type: UTF8String AVP_SDP_TYPE = uint32(2036) // Type: Enumerated AVP_CHANGE_CONDITION = uint32(2037) // Type: Integer32 AVP_CHANGE_TIME = uint32(2038) // Type: Time AVP_DIAGNOSTICS = uint32(2039) // Type: Time AVP_SERVICE_DATA_CONTAINER = uint32(2040) // Type: AVP_START_TIME = uint32(2041) // Type: Time AVP_STOP_TIME = uint32(2042) // Type: Time AVP_TIME_FIRST_USAGE = uint32(2043) // Type: Time AVP_TIME_LAST_USAGE = uint32(2044) // Type: Time AVP_TIME_USAGE = uint32(2045) // Type: Unsigned32 AVP_TRAFFIC_DATA_VOLUMES = uint32(2046) // Type: AVP_SERVING_NODE_TYPE = uint32(2047) // Type: Enumerated AVP_SUPPLEMENTARY_SERVICE = uint32(2048) // Type: AVP_PARTICIPANT_ACTION_TYPE = uint32(2049) // Type: Enumerated // AVP_PDN_CONNECTION_ID = uint32(2050) // Type: Unsigned32 AVP_DYNAMIC_ADDRESS_FLAG = uint32(2051) // Type: Enumerated AVP_ACCUMULATED_COST = uint32(2052) // Type: AVP_AOC_COST_INFORMATION = uint32(2053) // Type: AVP_AOC_INFORMATION = uint32(2054) // Type: AVP_AOC_REQUEST_TYPE = uint32(2055) // Type: Enumerated AVP_CURRENT_TARIFF = uint32(2056) // Type: AVP_NEXT_TARIFF = uint32(2057) // Type: AVP_RATE_ELEMENT = uint32(2058) // Type: AVP_SCALE_FACTOR = uint32(2059) // Type: AVP_TARIFF_INFORMATION = uint32(2060) // Type: AVP_UNIT_COST = uint32(2061) // Type: AVP_INCREMENTAL_COST = uint32(2062) // Type: AVP_LOCAL_SEQUENCE_NUMBER = uint32(2063) // Type: Unsigned32 AVP_NODE_ID = uint32(2064) // Type: UTF8String AVP_SGW_CHANGE = uint32(2065) // Type: Enumerated AVP_CHARGING_CHARACTERISTICS_SELECTION_MODE = uint32(2066) // Type: Enumerated AVP_SGW_ADDRESS = uint32(2067) // Type: Address AVP_DYNAMIC_ADDRESS_FLAG_EXTENSION = uint32(2068) // Type: Enumerated AVP_APPLICATION_SERVER_ID = uint32(2101) // Type: Unsigned32 AVP_APPLICATION_SERVICE_TYPE = uint32(2102) // Type: Enumerated AVP_APPLICATION_SESSION_ID = uint32(2103) // Type: Unsigned32 AVP_DELIVERY_STATUS = uint32(2104) // Type: UTF8String AVP_IM_INFORMATION = uint32(2110) // Type: AVP_NUMBER_OF_MESSAGES_SUCCESSFULLY_EXPLODED = uint32(2111) // Type: Unsigned32 AVP_NUMBER_OF_MESSAGES_SUCCESSFULLY_SENT = uint32(2112) // Type: Unsigned32 AVP_TOTAL_NUMBER_OF_MESSAGES_EXPLODED = uint32(2113) // Type: Unsigned32 AVP_TOTAL_NUMBER_OF_MESSAGES_SENT = uint32(2114) // Type: Unsigned32 AVP_DCD_INFORMATION = uint32(2115) // Type: AVP_CONTENT_ID = uint32(2116) // Type: UTF8String AVP_CONTENT_PROVIDER_ID = uint32(2117) // Type: UTF8String AVP_CHARGE_REASON_CODE = uint32(2118) // Type: Enumerated AVP_SIP_REQUEST_TIMESTAMP_FRACTION = uint32(2301) // Type: Unsigned32 AVP_SIP_RESPONSE_TIMESTAMP_FRACTION = uint32(2302) // Type: Unsigned32 AVP_ONLINE_CHARGING_FLAG = uint32(2303) // Type: Enumerated AVP_CUG_INFORMATION = uint32(2304) // Type: OctetString AVP_REAL_TIME_TARIFF_INFORMATION = uint32(2305) // Type: AVP_TARIFF_XML = uint32(2306) // Type: UTF8String AVP_MBMS_GW_ADDRESS = uint32(2307) // Type: IPAddress AVP_IMSI_UNAUTHENTICATED_FLAG = uint32(2308) // Type: Enumerated AVP_ACCOUNT_EXPIRATION = uint32(2309) // Type: Time AVP_AOC_FORMAT = uint32(2310) // Type: Enumerated AVP_AOC_SERVICE = uint32(2311) // Type: AVP_AOC_SERVICE_OBLIGATORY_TYPE = uint32(2312) // Type: Enumerated AVP_AOC_SERVICE_TYPE = uint32(2313) // Type: Enumerated AVP_AOC_SUBSCRIPTION_INFORMATION = uint32(2314) // Type: AVP_PREFERRED_AOC_CURRENCY = uint32(2315) // Type: Unsigned32 AVP_CSG_ACCESS_MODE = uint32(2317) // Type: Enumerated AVP_CSG_MEMBERSHIP_INDICATION = uint32(2318) // Type: Enumerated AVP_USER_CSG_INFORMATION = uint32(2319) // Type: AVP_OUTGOING_SESSION_ID = uint32(2320) // Type: UTF8String AVP_INITIAL_IMS_CHARGING_IDENTIFIER = uint32(2321) // Type: UTF8String AVP_SERVING_NODE = uint32(2401) // Type: AVP_MME_NAME = uint32(2402) // Type: DiameterIdentity AVP_MSC_NUMBER = uint32(2403) // Type: OctetString AVP_LCS_CAPABILITIES_SETS = uint32(2404) // Type: Unsigned32 AVP_ADDITIONAL_SERVING_NODE = uint32(2406) // Type: AVP_MME_REALM = uint32(2408) // Type: DiameterIdentity // AVP_LOCATION_TYPE = uint32(2500) // Type: Enumerated AVP_LCS_EPS_CLIENT_NAME = uint32(2501) // Type: AVP_LCS_REQUESTOR_NAME = uint32(2502) // Type: AVP_LCS_PRIORITY = uint32(2503) // Type: Unsigned32 AVP_LCS_QOS = uint32(2504) // Type: AVP_HORIZONTAL_ACCURACY = uint32(2505) // Type: Unsigned32 AVP_VERTICAL_ACCURACY = uint32(2506) // Type: Unsigned32 AVP_VELOCITY_REQUESTED = uint32(2508) // Type: Enumerated AVP_RESPONSE_TIME = uint32(2509) // Type: Enumerated AVP_SUPPORTED_GAD_SHAPES = uint32(2510) // Type: Unsigned32 AVP_LCS_CODEWORD = uint32(2511) // Type: UTF8String AVP_LCS_PRIVACY_CHECK = uint32(2512) // Type: Enumerated AVP_ACCURACY_FULFILMENT_INDICATOR = uint32(2513) // Type: Enumerated AVP_AGE_OF_LOCATION_ESTIMATE = uint32(2514) // Type: Unsigned32 AVP_VELOCITY_ESTIMATE = uint32(2515) // Type: OctetString AVP_EUTRAN_POSITIONING_DATA = uint32(2516) // Type: OctetString AVP_ECGI = uint32(2517) // Type: OctetString AVP_LOCATION_EVENT = uint32(2518) // Type: Enumerated AVP_LCS_SERVICE_TYPE_ID = uint32(2520) // Type: Unsigned32 AVP_LCS_PRIVACY_CHECK_NON_SESSION = uint32(2521) // Type: AVP_LCS_PRIVACY_CHECK_SESSION = uint32(2522) // Type: AVP_LCS_QOS_CLASS = uint32(2523) // Type: Enumerated AVP_IMS_APPLICATION_REFERENCE_IDENTIFIER = uint32(2601) // Type: UTF8String AVP_LOW_PRIORITY_INDICATOR = uint32(2602) // Type: Enumerated AVP_IP_REALM_DEFAULT_INDICATOR = uint32(2603) // Type: Enumerated AVP_LOCAL_GW_INSERTED_INDICATOR = uint32(2604) // Type: Enumerated AVP_TRANSCODER_INSERTED_INDICATOR = uint32(2605) // Type: Enumerated AVP_PDP_ADDRESS_PREFIX_LENGTH = uint32(2606) // Type: Unsigned32 AVP_POLICY_COUNTER_IDENTIFIER = uint32(2901) // Type: UTF8String AVP_POLICY_COUNTER_STATUS = uint32(2902) // Type: UTF8String AVP_POLICY_COUNTER_STATUS_REPORT = uint32(2903) // Type: UTF8String AVP_SL_REQUEST_TYPE = uint32(2904) // Type: Enumerated AVP_DEVICE_ACTION = uint32(3001) // Type: AVP_DEVICE_NOTIFICATION = uint32(3002) // Type: AVP_TRIGGER_DATA = uint32(3003) // Type: AVP_PAYLOAD = uint32(3004) // Type: OctetString AVP_ACTION_TYPE = uint32(3005) // Type: Enumerated AVP_PRIORITY_INDICATION = uint32(3006) // Type: Enumerated AVP_REFERENCE_NUMBER = uint32(3007) // Type: Unsigned32 AVP_REQUEST_STATUS = uint32(3008) // Type: Enumerated AVP_DELIVERY_OUTCOME = uint32(3009) // Type: Enumerated AVP_APPLICATION_PORT_IDENTIFIER = uint32(3010) // Type: Unsigned32 AVP_IP_SM_GW_NUMBER = uint32(3100) // Type: OctetString AVP_IP_SM_GW_NAME = uint32(3101) // Type: DiameterIdentity AVP_USER_IDENTIFIER = uint32(3102) // Type: // AVP_SERVICE_ID = uint32(3103) // Type: Enumerated AVP_SCS_IDENTITY = uint32(3104) // Type: OctetString AVP_SERVICE_PARAMETERS = uint32(3105) // Type: AVP_T4_PARAMETERS = uint32(3106) // Type: AVP_SERVICE_DATA = uint32(3107) // Type: AVP_T4_DATA = uint32(3108) // Type: AVP_HSS_CAUSE = uint32(3109) // Type: Unsigned32 AVP_SIR_FLAGS = uint32(3110) // Type: Unsigned32 AVP_EXTERNAL_IDENTIFIER = uint32(3111) // Type: UTF8String AVP_SM_DELIVERY_OUTCOME_T4 = uint32(3200) // Type: Enumerated AVP_ABSENT_SUBSCRIBER_DIAGNOSTIC_T4 = uint32(3201) // Type: Enumerated // AVP_TFT_FILTER = uint32(1017) // Type: IPFilterRule AVP_3GPP2_BSID = uint32(9010) // Type: UTF8String )
Diameter AVP Constants
const ( COMMAND_CODE_CAPABILITIES_EXCHANGE = uint32(257) COMMAND_CODE_RE_AUTH = uint32(258) COMMAND_CODE_ACCOUNTING = uint32(271) COMMAND_CODE_ABORT_SESSION = uint32(274) COMMAND_CODE_SESSION_TERMINATION = uint32(275) COMMAND_CODE_DEVICE_WATCHDOG = uint32(280) COMMAND_CODE_DISCONNECT_PEER = uint32(282) COMMAND_CODE_BOOSTRAPPING_INFO = uint32(310) COMMAND_CODE_MESSAGE_PROCESS = uint32(311) COMMAND_CODE_GBAPUSH_INFO = uint32(312) COMMAND_CODE_POLICY_DATA = uint32(314) COMMAND_CODE_POLICY_INSTALL = uint32(315) COMMAND_CODE_3GPP_UPDATE_LOCATION = uint32(316) COMMAND_CODE_3GPP_CANCEL_LOCATION = uint32(317) COMMAND_CODE_3GPP_AUTHENTICATION_INFORMATION = uint32(318) COMMAND_CODE_3GPP_INSERT_SUBSCRIBER_DATA = uint32(319) COMMAND_CODE_3GPP_DELETE_SUBSCRIBER_DATA = uint32(320) COMMAND_CODE_3GPP_PURGE_UE = uint32(321) COMMAND_CODE_3GPP_RESET = uint32(322) COMMAND_CODE_3GPP_NOTIFY = uint32(323) COMMAND_CODE_3GPP_ME_IDENTITY_CHECK = uint32(324) COMMAND_CODE_MIP6 = uint32(325) COMMAND_CODE_QOS_AUTHORIZATION = uint32(326) COMMAND_CODE_QOS_INSTALL = uint32(327) COMMAND_CODE_CAPABILITIES_UPDATE = uint32(328) COMMAND_CODE_IKEV2_SK = uint32(329) COMMAND_CODE_3GPP_PROVIDE_LOCATION = uint32(8388620) COMMAND_CODE_3GPP_LOCATION_REPORT = uint32(8388621) COMMAND_CODE_3GPP_LCS_ROUTING_INFO = uint32(8388622) COMMAND_CODE_SUBSCRIPTION_INFORMATION_APPLICATION = uint32(8388631) COMMAND_CODE_DISTRIBUTED_CHARGING = uint32(8388632) COMMAND_CODE_ERICSSON_SL = uint32(8388633) COMMAND_CODE_ERICSSON_SN = uint32(8388634) COMMAND_CODE_SPENDING_LIMIT = uint32(8388635) COMMAND_CODE_SPENDING_STATUS_NOTIFICATION = uint32(8388636) COMMAND_CODE_3GPP_DEVICE_ACTION = uint32(8388639) COMMAND_CODE_3GPP_DEVICE_NOTIFICATION = uint32(8388640) COMMAND_CODE_3GPP_SUBSCRIBER_INFORMATION = uint32(8388641) COMMAND_CODE_3GPP_DEVICE_TRIGGER = uint32(8388643) COMMAND_CODE_3GPP_DELIVERY_REPORT = uint32(8388644) )
Diameter Command Codes
const ( IPAddressTypeLength = 2 IPv4AddressLength = 4 IPv6AddressLength = 16 )
const ( AddressFamilyIPv4Byte = byte(0x01) // 0x01 for IPv4 AddressFamilyIPv6Byte = byte(0x02) // 0x02 for IPv6 )
const ( DIAMETER_VERSION_SIZE = 1 DIAMETER_MESSAGE_SIZE = 3 DIAMETER_COMMAND_FLAGS_SIZE = 1 DIAMETER_COMMAND_CODE_SIZE = 3 DIAMETER_APPLICATION_ID_SIZE = 4 DIAMETER_HOP_BY_HOP_ID_SIZE = 4 DIAMETER_END_TO_END_ID_SIZE = 4 DIAMETER_HEADER_SIZE = 20 )
const ( COMMAND_FLAG_REQUEST = 0x80 COMMAND_FLAG_PROXIABLE = 0x40 COMMAND_FLAG_ERROR = 0x20 COMMAND_FLAG_RETRANSMITTED = 0x10 COMMAND_FLAG_RESPONSE = 0x00 )
Command Flags
const ( COMMAND_CODE_CER = uint32(257) COMMAND_CODE_DWR = uint32(280) )
Command Codes
const ( VENDOR_NONE = 0 VENDOR_HEWLETT_PACKARD = 11 VENDOR_SUN_MICROSYSTEMS_INC = 42 VENDOR_MERIT_NETWORKS = 61 VENDOR_NOKIA = 94 VENDOR_NOKIA_SIEMENS_NETWORKS = 28458 VENDOR_ERICSSON = 193 VENDOR_US_ROBOTICS_CORP = 429 VENDOR_ALU_NETWORK = 637 VENDOR_LUCENT_TECHNOLOGIES = 1751 VENDOR_HUAWEI = 2011 VENDOR_DEUTSCHE_TELEKOM_AG = 2937 VENDOR_3GPP2 = 5535 VENDOR_CISCO = 5771 VENDOR_SK_TELECOM = 5806 VENDOR_3GPP = 10415 VENDOR_VODAFONE = 12645 VENDOR_VERIZON_WIRELESS = 12951 VENDOR_ETSI = 13019 VENDOR_TANGO_TELECOM_LIMITED = 13421 VENDOR_CHINA_TELECOM = 81000 VENDOR_3GPP_CX_DX = 16777216 )
Diameter Vendor Codes
const DIAMETER_VERSION = 1
Variables ¶
var ( InvalidDiameterVersionError = errors.New("invalid version") InvalidDiameterHeaderLengthError = errors.New("invalid header length") )
Diameter errors
var ( InvalidIPv4AddressError = errors.New("invalid IPv4 address") InvalidIPv6AddressError = errors.New("invalid IPv6 address") InvalidIPv4AddressLengthError = errors.New("invalid IPv4 address length") InvalidIPv6AddressLengthError = errors.New("invalid IPv6 address length") UnknownAddressTypeError = errors.New("unknown address type") InvalidAddressLengthError = errors.New("invalid address length") )
IPAddr errors
var CommandCodeToName map[uint32]string = map[uint32]string{ COMMAND_CODE_CER: "Capabilities-Exchange-Request", COMMAND_CODE_DWR: "Diameter-Watchdog-Request", }
var (
InvalidCommandCodeError = errors.New("invalid command code")
)
var (
InvalidMessageLengthError = errors.New("invalid message length for decoding")
)
Decoding errors
var ResultCodeToName map[ResultCode]string = map[ResultCode]string{ DIAMETER_SUCCESS: "DIAMETER_SUCCESS", DIMAETER_LIMITED_SUCCESS: "DIMAETER_LIMITED_SUCCESS", DIAMETER_MULTI_ROUND_AUTH: "DIAMETER_MULTI_ROUND_AUTH", DIAMETER_COMMAND_UNSUPPORTED: "DIAMETER_COMMAND_UNSUPPORTED", DIAMETER_UNABLE_TO_DELIVER: "DIAMETER_UNABLE_TO_DELIVER", DIAMETER_REALM_NOT_SERVED: "DIAMETER_REALM_NOT_SERVED", DIAMETER_TOO_BUSY: "DIAMETER_TOO_BUSY", DIAMETER_LOOP_DETECTED: "DIAMETER_LOOP_DETECTED", DIAMETER_REDIRECT_INDICATION: "DIAMETER_REDIRECT_INDICATION", DIAMETER_APPLICATION_UNSUPPORTED: "DIAMETER_APPLICATION_UNSUPPORTED", DIAMETER_INVALID_HDR_BITS: "DIAMETER_INVALID_HDR_BITS", DIAMETER_INVALID_AVP_BITS: "DIAMETER_INVALID_AVP_BITS", DIAMETER_UNKNOWN_PEER: "DIAMETER_UNKNOWN_PEER", DIAMETER_AUTHENTICATION_REJECTED: "DIAMETER_AUTHENTICATION_REJECTED", DIAMETER_OUT_OF_SPACE: "DIAMETER_OUT_OF_SPACE", DIAMETER_ELECTION_LOST: "DIAMETER_ELECTION_LOST", DIAMETER_AVP_UNSUPPORTED: "DIAMETER_AVP_UNSUPPORTED", DIAMETER_UNKNOWN_SESSION_ID: "DIAMETER_UNKNOWN_SESSION_ID", DIAMETER_AUTHORIZATION_REJECTED: "DIAMETER_AUTHORIZATION_REJECTED", DIAMETER_INVALID_AVP_VALUE: "DIAMETER_INVALID_AVP_VALUE", DIAMETER_MISSING_AVP: "DIAMETER_MISSING_AVP", DIAMETER_RESOURCES_EXCEEDED: "DIAMETER_RESOURCES_EXCEEDED", DIAMETER_CONTRADICTING_AVPS: "DIAMETER_CONTRADICTING_AVPS", DIAMETER_AVP_NOT_ALLOWED: "DIAMETER_AVP_NOT_ALLOWED", DIAMETER_AVP_OCCURS_TOO_MANY_TIMES: "DIAMETER_AVP_OCCURS_TOO_MANY_TIMES", DIAMETER_NO_COMMON_APPLICATION: "DIAMETER_NO_COMMON_APPLICATION", DIAMETER_UNSUPPORTED_VERSION: "DIAMETER_UNSUPPORTED_VERSION", DIAMETER_UNABLE_TO_COMPLY: "DIAMETER_UNABLE_TO_COMPLY", DIAMETER_INVALID_BIT_IN_HEADER: "DIAMETER_INVALID_BIT_IN_HEADER", DIAMETER_INVALID_AVP_LENGTH: "DIAMETER_INVALID_AVP_LENGTH", DIAMETER_INVALID_MESSAGE_LENGTH: "DIAMETER_INVALID_MESSAGE_LENGTH", DIAMETER_INVALID_AVP_BIT_COMBO: "DIAMETER_INVALID_AVP_BIT_COMBO", DIAMETER_NO_COMMON_SECURITY: "DIAMETER_NO_COMMON_SECURITY", }
var (
UnsupportedTypeError = errors.New("unsupported type")
)
datatype errors
var (
VendorIDRequiredError = errors.New("VendorID is required for vendor specific AVP")
)
AVP errors
Functions ¶
func GetCommandNameFromCode ¶
func ValidateSuccessfulResponse ¶
func ValidateSuccessfulResponse(msg *DiameterMessage) error
Types ¶
type AVP ¶
type AVP struct {
Code uint32
Flags uint8
AVPlength uint32 // Contains the length of the AVP header and data
VendorID uint32 // This is optional
Data AVPData
}
AVP represents a Diameter Attribute-Value Pair. Code 4 bytes Flags 1 byte: - Vendor specific bit - 1 bit - Mandatory bit - 1 bit - P bit - 1 bit - Reserved - 5 bits Length 3 bytes VendorID 4 bytes
func NewAVP ¶
func NewAVP[T constraints.Ordered | net.IP]( code uint32, value T, flag uint8, vendorID ...uint32, ) (*AVP, error)
NewAVP creates a new AVP (Attribute-Value Pair) with the given parameters. The function supports various types for the value parameter, including net.IP, string, int32, int64, uint32, uint64, *AVP, and *Grouped. The function also handles flags for vendor-specific and protected AVPs.
Parameters:
code: The AVP code. value: The value of the AVP, which can be of various types. - net.IP for IPAddr AVP. - string for OctetString AVP. - int32 for Integer32 AVP. - int64 for Integer64 AVP. - uint32 for Unsigned32 AVP. - uint64 for Unsigned64 AVP. - *AVP for nested AVPs. - *Grouped for grouped AVPs. flag: The AVP flags. vendorID: Optional vendor ID(s) for vendor-specific AVPs.
Returns:
A pointer to the newly created AVP and an error if the creation fails.
func ReadCEA ¶
func ReadCEA(cea DiameterMessage) ([]*AVP, error)
read CEA message, check Success or Failure and return AVPs
type Address ¶
Derived Type
Address
The Address format is derived from the OctetString AVP Base
Format. It is a discriminated union, representing, for example a
32-bit (IPv4) [IPV4] or 128-bit (IPv6) [IPV6] address, most
significant octet first. The first two octets of the Address
AVP represents the AddressType, which contains an Address Family
defined in [IANAADFAM]. The AddressType is used to discriminate
the content and format of the remaining octets.
type DiameterHeader ¶
type DiameterHeader struct {
Version uint8
MessageLength uint32
CommandFlags uint8
CommandCode uint32
ApplicationID uint32
HopByHopID uint32
EndToEndID uint32
}
DiameterHeader represents a basic Diameter message header. The header is 20 bytes long and contains the following fields:
- Version: 1 byte
- MessageLength: 3 bytes
- CommandFlags: 1 byte
- CommandCode: 3 bytes
- ApplicationID: 4 bytes
- HopByHopID: 4 bytes
- EndToEndID: 4 bytes
func (*DiameterHeader) Decode ¶
func (h *DiameterHeader) Decode(data []byte) error
func (*DiameterHeader) Encode ¶
func (h *DiameterHeader) Encode() []byte
func (*DiameterHeader) String ¶
func (h *DiameterHeader) String() string
type DiameterIdentity ¶
type DiameterIdentity struct {
Data string
}
DiameterIdentity
The DiameterIdentity format is derived from the OctetString Basic
AVP Format.
DiameterIdentity = FQDN/Realm
The DiameterIdentity value is used to uniquely identify either:
A Diameter node for purposes of duplicate connection and routing loop detection.
A Realm to determine whether messages can be satisfied locally or whether they must be routed or redirected.
When a DiameterIdentity value is used to identify a Diameter node, the contents of the string MUST be the Fully Qualified Domain Name (FQDN) of the Diameter node. If multiple Diameter nodes run on the same host, each Diameter node MUST be assigned a unique DiameterIdentity. If a Diameter node can be identified by several FQDNs, a single FQDN should be picked at startup and used as the only DiameterIdentity for that node, whatever the connection on which it is sent. In this document, note that DiameterIdentity is in ASCII form in order to be compatible with existing DNS infrastructure. See Appendix D for interactions between the Diameter protocol and Internationalized Domain Names (IDNs).
func (*DiameterIdentity) Decode ¶
func (d *DiameterIdentity) Decode(data []byte) error
func (*DiameterIdentity) Encode ¶
func (d *DiameterIdentity) Encode() ([]byte, error)
func (*DiameterIdentity) Length ¶
func (d *DiameterIdentity) Length() uint32
func (*DiameterIdentity) SetData ¶
func (i *DiameterIdentity) SetData(data interface{}) error
func (*DiameterIdentity) String ¶
func (d *DiameterIdentity) String() string
type DiameterMessage ¶
type DiameterMessage struct {
Header *DiameterHeader
AVPs []*AVP
}
DiameterMessage represents a Diameter message with header and AVPs.
func NewCER ¶
func NewCER(avps ...*AVP) (*DiameterMessage, error)
NewCER generates a Capabilities-Exchange-Request message.
func NewDWR ¶
func NewDWR(avps ...*AVP) (*DiameterMessage, error)
func (*DiameterMessage) Decode ¶
func (msg *DiameterMessage) Decode(data []byte) error
func (*DiameterMessage) Encode ¶
func (msg *DiameterMessage) Encode() ([]byte, error)
func (*DiameterMessage) GetAVP ¶
func (msg *DiameterMessage) GetAVP(code uint32) *AVP
get AVP with either name or code based on type of input using generic input type to allow for either string or uint32
func (*DiameterMessage) String ¶
func (m *DiameterMessage) String() string
type DiameterURI ¶
type DiameterURI struct {
Data string
}
DiameterURI
The DiameterURI MUST follow the Uniform Resource Identifiers (RFC
3986) syntax [RFC3986] rules specified below:
"aaa://" FQDN [ port ] [ transport ] [ protocol ]
; No transport security
"aaas://" FQDN [ port ] [ transport ] [ protocol ]
; Transport security used
FQDN = < Fully Qualified Domain Name >
port = ":" 1*DIGIT
; One of the ports used to listen for
; incoming connections.
; If absent, the default Diameter port
; (3868) is assumed if no transport
; security is used and port 5658 when
; transport security (TLS/TCP and DTLS/SCTP)
; is used.
transport = ";transport=" transport-protocol
; One of the transports used to listen
; for incoming connections. If absent,
; the default protocol is assumed to be TCP.
; UDP MUST NOT be used when the aaa-protocol
; field is set to diameter.
transport-protocol = ( "tcp" / "sctp" / "udp" )
protocol = ";protocol=" aaa-protocol
; If absent, the default AAA protocol
; is Diameter.
aaa-protocol = ( "diameter" / "radius" / "tacacs+" )
The following are examples of valid Diameter host identities:
aaa://host.example.com;transport=tcp
aaa://host.example.com:6666;transport=tcp
aaa://host.example.com;protocol=diameter
aaa://host.example.com:6666;protocol=diameter
aaa://host.example.com:6666;transport=tcp;protocol=diameter
aaa://host.example.com:1813;transport=udp;protocol=radius
func (*DiameterURI) Decode ¶
func (d *DiameterURI) Decode(data []byte) error
func (*DiameterURI) Encode ¶
func (d *DiameterURI) Encode() ([]byte, error)
func (*DiameterURI) Length ¶
func (d *DiameterURI) Length() uint32
func (*DiameterURI) SetData ¶
func (i *DiameterURI) SetData(data interface{}) error
func (*DiameterURI) String ¶
func (d *DiameterURI) String() string
type Enumerated ¶
type Enumerated struct {
Data uint32
}
Enumerated
The Enumerated format is derived from the Integer32 Basic AVP Format. The definition contains a list of valid values and their interpretation and is described in the Diameter application introducing the AVP.
func (*Enumerated) Decode ¶
func (e *Enumerated) Decode(data []byte) error
func (*Enumerated) Encode ¶
func (e *Enumerated) Encode() ([]byte, error)
func (*Enumerated) Length ¶
func (e *Enumerated) Length() uint32
func (*Enumerated) SetData ¶
func (e *Enumerated) SetData(data interface{}) error
func (*Enumerated) String ¶
func (e *Enumerated) String() string
type Float32 ¶
type Float32 struct {
Data float32
}
Float32
This represents floating point values of single precision as described by [FLOATPOINT]. The 32-bit value is transmitted in network byte order. The AVP Length field MUST be set to 12 (16 if the 'V' bit is enabled).
type Float64 ¶
type Float64 struct {
Data float64
}
Float64
This represents floating point values of double precision as described by [FLOATPOINT]. The 64-bit value is transmitted in network byte order. The AVP Length field MUST be set to 16 (20 if the 'V' bit is enabled).
type Grouped ¶
type Grouped struct {
AVPs []*AVP
}
Grouped
The Data field is specified as a sequence of AVPs. These AVPs are concatenated -- including their headers and padding -- in the order in which they are specified and the result encapsulated in the Data field. The AVP Length field is set to 8 (12 if the 'V' bit is enabled) plus the total length of all included AVPs, including their headers and padding. Thus, the AVP Length field of an AVP of type Grouped is always a multiple of 4.
type IPFilterRule ¶
type IPFilterRule struct {
Data uint32
}
IPFilterRule
The IPFilterRule format is derived from the OctetString Basic AVP
Format and uses the ASCII charset. The rule syntax is a modified
subset of ipfw(8) from FreeBSD. Packets may be filtered based on
the following information that is associated with it:
Direction (in or out)
Source and destination IP address (possibly masked)
Protocol
Source and destination port (lists or ranges)
TCP flags
IP fragment flag
IP options
ICMP types
see rfc6733 for more details on the format
func (*IPFilterRule) Decode ¶
func (i *IPFilterRule) Decode(data []byte) error
func (*IPFilterRule) Encode ¶
func (i *IPFilterRule) Encode() ([]byte, error)
func (*IPFilterRule) Length ¶
func (i *IPFilterRule) Length() uint32
func (*IPFilterRule) SetData ¶
func (i *IPFilterRule) SetData(data interface{}) error
func (*IPFilterRule) String ¶
func (i *IPFilterRule) String() string
type Integer32 ¶
type Integer32 struct {
Data int32
}
Integer32
32-bit signed value, in network byte order. The AVP Length field MUST be set to 12 (16 if the 'V' bit is enabled).
type Integer64 ¶
type Integer64 struct {
Data int64
}
Integer64
64-bit signed value, in network byte order. The AVP Length field MUST be set to 16 (20 if the 'V' bit is enabled).
type OctetString ¶
type OctetString struct {
Data []byte
// contains filtered or unexported fields
}
OctetString
The data contains arbitrary data of variable length. Unless otherwise noted, the AVP Length field MUST be set to at least 8 (12 if the 'V' bit is enabled). AVP values of this type that are not a multiple of 4 octets in length are followed by the necessary padding so that the next AVP (if any) will start on a 32-bit boundary.
func (*OctetString) Decode ¶
func (o *OctetString) Decode(data []byte) error
func (*OctetString) Encode ¶
func (o *OctetString) Encode() ([]byte, error)
func (*OctetString) Length ¶
func (o *OctetString) Length() uint32
func (*OctetString) SetData ¶
func (o *OctetString) SetData(data interface{}) error
func (*OctetString) String ¶
func (o *OctetString) String() string
type ResultCode ¶
type ResultCode uint32
const ( DIAMETER_MULTI_ROUND_AUTH ResultCode = 1001 DIAMETER_SUCCESS ResultCode = 2001 DIMAETER_LIMITED_SUCCESS ResultCode = 2002 )
const ( DIAMETER_COMMAND_UNSUPPORTED ResultCode = 3001 + iota DIAMETER_UNABLE_TO_DELIVER DIAMETER_REALM_NOT_SERVED DIAMETER_TOO_BUSY DIAMETER_LOOP_DETECTED DIAMETER_REDIRECT_INDICATION DIAMETER_APPLICATION_UNSUPPORTED DIAMETER_INVALID_HDR_BITS DIAMETER_INVALID_AVP_BITS DIAMETER_UNKNOWN_PEER )
const ( DIAMETER_AUTHENTICATION_REJECTED ResultCode = 4001 + iota DIAMETER_OUT_OF_SPACE DIAMETER_ELECTION_LOST )
const ( DIAMETER_AVP_UNSUPPORTED ResultCode = 5001 + iota DIAMETER_UNKNOWN_SESSION_ID DIAMETER_AUTHORIZATION_REJECTED DIAMETER_INVALID_AVP_VALUE DIAMETER_MISSING_AVP DIAMETER_RESOURCES_EXCEEDED DIAMETER_CONTRADICTING_AVPS DIAMETER_AVP_NOT_ALLOWED DIAMETER_AVP_OCCURS_TOO_MANY_TIMES DIAMETER_NO_COMMON_APPLICATION DIAMETER_UNSUPPORTED_VERSION DIAMETER_UNABLE_TO_COMPLY DIAMETER_INVALID_BIT_IN_HEADER DIAMETER_INVALID_AVP_LENGTH DIAMETER_INVALID_MESSAGE_LENGTH DIAMETER_INVALID_AVP_BIT_COMBO DIAMETER_NO_COMMON_SECURITY )
func GetResultCode ¶
func GetResultCode(msg *DiameterMessage) (ResultCode, string, error)
7.1. Result-Code AVP
The Result-Code AVP (AVP Code 268) is of type Unsigned32 and indicates whether a particular request was completed successfully or whether an error occurred. All Diameter answer messages defined in IETF applications MUST include one Result-Code AVP. A non-successful Result-Code AVP (one containing a non 2xxx value other than DIAMETER_REDIRECT_INDICATION) MUST include the Error-Reporting-Host AVP if the host setting the Result-Code AVP is different from the identity encoded in the Origin-Host AVP. The Result-Code data field contains an IANA-managed 32-bit address space representing errors (see Section 11.4). Diameter provides the following classes of errors, all identified by the thousands digit in the decimal notation: - 1xxx (Informational) - 2xxx (Success) - 3xxx (Protocol Errors) - 4xxx (Transient Failures) - 5xxx (Permanent Failure)
type Time ¶
type Time struct {
Data uint32
}
Time
The Time format is derived from the OctetString Basic AVP Format. The string MUST contain four octets, in the same format as the first four bytes are in the NTP timestamp format. The NTP timestamp format is defined in Section 3 of [RFC5905]. This represents the number of seconds since 0h on 1 January 1900 with respect to the Coordinated Universal Time (UTC). On 6h 28m 16s UTC, 7 February 2036, the time value will overflow. Simple Network Time Protocol (SNTP) [RFC5905] describes a procedure to extend the time to 2104. This procedure MUST be supported by all Diameter nodes.
type UTF8String ¶
type UTF8String struct {
Data string
}
UTF8String
The UTF8String format is derived from the OctetString Basic AVP Format. This is a human-readable string represented using the ISO/IEC IS 10646-1 character set, encoded as an OctetString using the UTF-8 transformation format [RFC3629]. Since additional code points are added by amendments to the 10646 standard from time to time, implementations MUST be prepared to encounter any code point from 0x00000001 to 0x7fffffff. Byte sequences that do not correspond to the valid encoding of a code point into UTF-8 charset or are outside this range are prohibited. The use of control codes SHOULD be avoided. When it is necessary to represent a new line, the control code sequence CR LF SHOULD be used. The use of leading or trailing white space SHOULD be avoided. For code points not directly supported by user interface hardware or software, an alternative means of entry and display, such as hexadecimal, MAY be provided. For information encoded in 7-bit US-ASCII, the UTF-8 charset is identical to the US-ASCII charset. UTF-8 may require multiple bytes to represent a single character / code point; thus, the length of a UTF8String in octets may be different from the number of characters encoded. Note that the AVP Length field of an UTF8String is measured in octets not characters.
func (*UTF8String) Decode ¶
func (u *UTF8String) Decode(data []byte) error
func (*UTF8String) Encode ¶
func (u *UTF8String) Encode() ([]byte, error)
func (*UTF8String) Length ¶
func (u *UTF8String) Length() uint32
func (*UTF8String) SetData ¶
func (u *UTF8String) SetData(data interface{}) error
func (*UTF8String) String ¶
func (u *UTF8String) String() string
type Unsigned32 ¶
type Unsigned32 struct {
Data uint32
}
Unsigned32
32-bit unsigned value, in network byte order. The AVP Length field MUST be set to 12 (16 if the 'V' bit is enabled).
func (*Unsigned32) Decode ¶
func (u *Unsigned32) Decode(data []byte) error
func (*Unsigned32) Encode ¶
func (u *Unsigned32) Encode() ([]byte, error)
func (*Unsigned32) Length ¶
func (u *Unsigned32) Length() uint32
func (*Unsigned32) SetData ¶
func (u *Unsigned32) SetData(data interface{}) error
func (*Unsigned32) String ¶
func (u *Unsigned32) String() string
type Unsigned64 ¶
type Unsigned64 struct {
Data uint64
}
Unsigned64
64-bit unsigned value, in network byte order. The AVP Length field MUST be set to 16 (20 if the 'V' bit is enabled).
func (*Unsigned64) Decode ¶
func (u *Unsigned64) Decode(data []byte) error
func (*Unsigned64) Encode ¶
func (u *Unsigned64) Encode() ([]byte, error)
func (*Unsigned64) Length ¶
func (u *Unsigned64) Length() uint32
func (*Unsigned64) SetData ¶
func (u *Unsigned64) SetData(data interface{}) error
func (*Unsigned64) String ¶
func (u *Unsigned64) String() string