1*1568fe7eSjsing /* $OpenBSD: gtp.h,v 1.1 2009/11/04 09:43:11 jsing Exp $ */ 2*1568fe7eSjsing /* 3*1568fe7eSjsing * Copyright (c) 2009 Joel Sing <jsing@openbsd.org> 4*1568fe7eSjsing * 5*1568fe7eSjsing * Permission to use, copy, modify, and distribute this software for any 6*1568fe7eSjsing * purpose with or without fee is hereby granted, provided that the above 7*1568fe7eSjsing * copyright notice and this permission notice appear in all copies. 8*1568fe7eSjsing * 9*1568fe7eSjsing * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10*1568fe7eSjsing * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11*1568fe7eSjsing * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12*1568fe7eSjsing * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13*1568fe7eSjsing * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14*1568fe7eSjsing * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15*1568fe7eSjsing * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16*1568fe7eSjsing */ 17*1568fe7eSjsing 18*1568fe7eSjsing #ifndef __GTP_H_DEFINED 19*1568fe7eSjsing #define __GTP_H_DEFINED 20*1568fe7eSjsing 21*1568fe7eSjsing #define GTP_VERSION_0 0 22*1568fe7eSjsing #define GTP_VERSION_1 1 23*1568fe7eSjsing #define GTP_VERSION_2 2 24*1568fe7eSjsing 25*1568fe7eSjsing #define GTP_VERSION_MASK 0x07 << 5 26*1568fe7eSjsing #define GTP_VERSION_SHIFT 5 27*1568fe7eSjsing 28*1568fe7eSjsing #define GTP_V0_PROTO 0 29*1568fe7eSjsing #define GTP_V0_PRIME_PROTO 1 30*1568fe7eSjsing #define GTP_V1_CTRL_PROTO 2 31*1568fe7eSjsing #define GTP_V1_USER_PROTO 3 32*1568fe7eSjsing #define GTP_V1_PRIME_PROTO 4 33*1568fe7eSjsing 34*1568fe7eSjsing #define GTPV0_PORT 3386 35*1568fe7eSjsing 36*1568fe7eSjsing #define GTPV1_C_PORT 2123 37*1568fe7eSjsing #define GTPV1_U_PORT 2152 38*1568fe7eSjsing #define GTPV1_PRIME_PORT 3386 39*1568fe7eSjsing 40*1568fe7eSjsing #define GTPV0_HDR_PROTO_TYPE 1 << 4 41*1568fe7eSjsing #define GTPV0_HDR_SNN 1 << 0 42*1568fe7eSjsing 43*1568fe7eSjsing #define GTPV0_IE_TYPE_MASK 1 << 7 44*1568fe7eSjsing #define GTPV0_IE_VALUE_MASK ~GTPV1_IE_TYPE_MASK 45*1568fe7eSjsing 46*1568fe7eSjsing /* 47*1568fe7eSjsing * GTPv0 Message Types. 48*1568fe7eSjsing */ 49*1568fe7eSjsing #define GTPV0_ECHO_REQUEST 1 50*1568fe7eSjsing #define GTPV0_ECHO_RESPONSE 2 51*1568fe7eSjsing #define GTPV0_VERSION_NOT_SUPPORTED 3 52*1568fe7eSjsing #define GTPV0_NODE_ALIVE_REQUEST 4 53*1568fe7eSjsing #define GTPV0_NODE_ALIVE_RESPONSE 5 54*1568fe7eSjsing #define GTPV0_REDIRECTION_REQUEST 6 55*1568fe7eSjsing #define GTPV0_REDIRECTION_RESPONSE 7 56*1568fe7eSjsing #define GTPV0_CREATE_PDP_CONTEXT_REQUEST 16 57*1568fe7eSjsing #define GTPV0_CREATE_PDP_CONTEXT_RESPONSE 17 58*1568fe7eSjsing #define GTPV0_UPDATE_PDP_CONTEXT_REQUEST 18 59*1568fe7eSjsing #define GTPV0_UPDATE_PDP_CONTEXT_RESPONSE 19 60*1568fe7eSjsing #define GTPV0_DELETE_PDP_CONTEXT_REQUEST 20 61*1568fe7eSjsing #define GTPV0_DELETE_PDP_CONTEXT_RESPONSE 21 62*1568fe7eSjsing #define GTPV0_CREATE_AA_PDP_CONTEXT_REQUEST 22 63*1568fe7eSjsing #define GTPV0_CREATE_AA_PDP_CONTEXT_RESPONSE 23 64*1568fe7eSjsing #define GTPV0_DELETE_AA_PDP_CONTEXT_REQUEST 24 65*1568fe7eSjsing #define GTPV0_DELETE_AA_PDP_CONTEXT_RESPONSE 25 66*1568fe7eSjsing #define GTPV0_ERROR_INDICATION 26 67*1568fe7eSjsing #define GTPV0_PDU_NOTIFICATION_REQUEST 27 68*1568fe7eSjsing #define GTPV0_PDU_NOTIFICATION_RESPONSE 28 69*1568fe7eSjsing #define GTPV0_PDU_NOTIFICATION_REJECT_REQUEST 29 70*1568fe7eSjsing #define GTPV0_PDU_NOTIFICATION_REJECT_RESPONSE 30 71*1568fe7eSjsing #define GTPV0_SEND_ROUTEING_INFO_REQUEST 32 72*1568fe7eSjsing #define GTPV0_SEND_ROUTEING_INFO_RESPONSE 33 73*1568fe7eSjsing #define GTPV0_FAILURE_REPORT_REQUEST 34 74*1568fe7eSjsing #define GTPV0_FAILURE_REPORT_RESPONSE 35 75*1568fe7eSjsing #define GTPV0_MS_GPRS_PRESENT_REQUEST 36 76*1568fe7eSjsing #define GTPV0_MS_GPRS_PRESENT_RESPONSE 37 77*1568fe7eSjsing #define GTPV0_IDENTIFICATION_REQUEST 48 78*1568fe7eSjsing #define GTPV0_IDENTIFICATION_RESPONSE 49 79*1568fe7eSjsing #define GTPV0_SGSN_CONTEXT_REQUEST 50 80*1568fe7eSjsing #define GTPV0_SGSN_CONTEXT_RESPONSE 51 81*1568fe7eSjsing #define GTPV0_SGSN_CONTEXT_ACKNOWLEDGE 52 82*1568fe7eSjsing #define GTPV0_DATA_RECORD_TRANSFER_REQUEST 240 83*1568fe7eSjsing #define GTPV0_DATA_RECORD_TRANSFER_RESPONSE 241 84*1568fe7eSjsing #define GTPV0_T_PDU 255 85*1568fe7eSjsing 86*1568fe7eSjsing /* 87*1568fe7eSjsing * GTPv0 Information Elements. 88*1568fe7eSjsing */ 89*1568fe7eSjsing #define GTPV0_TV_CAUSE 1 90*1568fe7eSjsing #define GTPV0_TV_CAUSE_LENGTH 2 91*1568fe7eSjsing #define GTPV0_TV_IMSI 2 92*1568fe7eSjsing #define GTPV0_TV_IMSI_LENGTH 9 93*1568fe7eSjsing #define GTPV0_TV_RAI 3 94*1568fe7eSjsing #define GTPV0_TV_RAI_LENGTH 7 95*1568fe7eSjsing #define GTPV0_TV_TLLI 4 96*1568fe7eSjsing #define GTPV0_TV_TLLI_LENGTH 5 97*1568fe7eSjsing #define GTPV0_TV_PTMSI 5 98*1568fe7eSjsing #define GTPV0_TV_PTMSI_LENGTH 5 99*1568fe7eSjsing #define GTPV0_TV_QOS 6 100*1568fe7eSjsing #define GTPV0_TV_QOS_LENGTH 4 101*1568fe7eSjsing #define GTPV0_TV_REORDER 8 102*1568fe7eSjsing #define GTPV0_TV_REORDER_LENGTH 2 103*1568fe7eSjsing #define GTPV0_TV_AUTH_TRIPLET 9 104*1568fe7eSjsing #define GTPV0_TV_AUTH_TRIPLET_LENGTH 29 105*1568fe7eSjsing #define GTPV0_TV_MAP_CAUSE 11 106*1568fe7eSjsing #define GTPV0_TV_MAP_CAUSE_LENGTH 2 107*1568fe7eSjsing #define GTPV0_TV_PTMSI_SIGNATURE 12 108*1568fe7eSjsing #define GTPV0_TV_PTMSI_SIGNATURE_LENGTH 4 109*1568fe7eSjsing #define GTPV0_TV_MS_VALIDATED 13 110*1568fe7eSjsing #define GTPV0_TV_MS_VALIDATED_LENGTH 2 111*1568fe7eSjsing #define GTPV0_TV_RECOVERY 14 112*1568fe7eSjsing #define GTPV0_TV_RECOVERY_LENGTH 2 113*1568fe7eSjsing #define GTPV0_TV_SELECTION_MODE 15 114*1568fe7eSjsing #define GTPV0_TV_SELECTION_MODE_LENGTH 2 115*1568fe7eSjsing #define GTPV0_TV_FLOW_LABEL_DATA_I 16 116*1568fe7eSjsing #define GTPV0_TV_FLOW_LABEL_DATA_I_LENGTH 3 117*1568fe7eSjsing #define GTPV0_TV_FLOW_LABEL_SIGNALLING 17 118*1568fe7eSjsing #define GTPV0_TV_FLOW_LABEL_SIGNALLING_LENGTH 3 119*1568fe7eSjsing #define GTPV0_TV_FLOW_LABEL_DATA_II 18 120*1568fe7eSjsing #define GTPV0_TV_FLOW_LABEL_DATA_II_LENGTH 4 121*1568fe7eSjsing #define GTPV0_TV_PACKET_XFER_CMD 126 122*1568fe7eSjsing #define GTPV0_TV_PACKET_XFER_CMD_LENGTH 2 123*1568fe7eSjsing #define GTPV0_TV_CHARGING_ID 127 124*1568fe7eSjsing #define GTPV0_TV_CHARGING_ID_LENGTH 5 125*1568fe7eSjsing 126*1568fe7eSjsing #define GTPV0_TLV_END_USER_ADDRESS 128 127*1568fe7eSjsing #define GTPV0_TLV_MM_CONTEXT 129 128*1568fe7eSjsing #define GTPV0_TLV_PDP_CONTEXT 130 129*1568fe7eSjsing #define GTPV0_TLV_ACCESS_POINT_NAME 131 130*1568fe7eSjsing #define GTPV0_TLV_PROTOCOL_CONFIG_OPTIONS 132 131*1568fe7eSjsing #define GTPV0_TLV_GSN_ADDRESS 133 132*1568fe7eSjsing #define GTPV0_TLV_MS_ISDN 134 133*1568fe7eSjsing #define GTPV0_TLV_RELEASED_PACKETS 249 134*1568fe7eSjsing #define GTPV0_TLV_CANCELLED_PACKETS 250 135*1568fe7eSjsing #define GTPV0_TLV_CHARGING_GATEWAY_ADDRESS 251 136*1568fe7eSjsing #define GTPV0_TLV_DATA_RECORD_PACKET 252 137*1568fe7eSjsing #define GTPV0_TLV_REQUESTS_RESPONDED 253 138*1568fe7eSjsing #define GTPV0_TLV_RECOMMENDED_NODE 254 139*1568fe7eSjsing #define GTPV0_TLV_PRIVATE_EXTENSION 255 140*1568fe7eSjsing 141*1568fe7eSjsing /* 142*1568fe7eSjsing * GTP Version 1. 143*1568fe7eSjsing */ 144*1568fe7eSjsing 145*1568fe7eSjsing #define GTPV1_HDR_PROTO_TYPE 1 << 4 146*1568fe7eSjsing #define GTPV1_HDR_RSVD 1 << 3 147*1568fe7eSjsing #define GTPV1_HDR_EH_FLAG 1 << 2 148*1568fe7eSjsing #define GTPV1_HDR_SN_FLAG 1 << 1 149*1568fe7eSjsing #define GTPV1_HDR_NPDU_FLAG 1 << 0 150*1568fe7eSjsing 151*1568fe7eSjsing /* 152*1568fe7eSjsing * GTPv1 Extended Headers. 153*1568fe7eSjsing */ 154*1568fe7eSjsing #define GTPV1_HDR_EXT (GTPV1_HDR_EH_FLAG | \ 155*1568fe7eSjsing GTPV1_HDR_SN_FLAG | \ 156*1568fe7eSjsing GTPV1_HDR_NPDU_FLAG) 157*1568fe7eSjsing 158*1568fe7eSjsing #define GTPV1_EH_NONE 0x00 159*1568fe7eSjsing #define GTPV1_EH_MBMS_SUPPORT 0x01 160*1568fe7eSjsing #define GTPV1_EH_MSI_CHANGE_RPT 0x02 161*1568fe7eSjsing #define GTPV1_EH_PDCP_PDU_NO 0xc0 162*1568fe7eSjsing #define GTPV1_EH_SUSPEND_REQUEST 0xc1 163*1568fe7eSjsing #define GTPV1_EH_SUSPEND_RESPONSE 0xc2 164*1568fe7eSjsing 165*1568fe7eSjsing #define GTPV1_IE_TYPE_MASK 1 << 7 166*1568fe7eSjsing #define GTPV1_IE_VALUE_MASK ~GTPV1_IE_TYPE_MASK 167*1568fe7eSjsing 168*1568fe7eSjsing #define GTPV1_CAUSE_VALUE_MASK 3 << 6 169*1568fe7eSjsing #define GTPV1_CAUSE_REQUEST 0x00 170*1568fe7eSjsing #define GTPV1_CAUSE_ACCEPTANCE 0x80 171*1568fe7eSjsing #define GTPV1_CAUSE_REJECTION 0xc0 172*1568fe7eSjsing 173*1568fe7eSjsing /* 174*1568fe7eSjsing * GTPv1 Message Types. 175*1568fe7eSjsing */ 176*1568fe7eSjsing #define GTPV1_ECHO_REQUEST 1 177*1568fe7eSjsing #define GTPV1_ECHO_RESPONSE 2 178*1568fe7eSjsing #define GTPV1_VERSION_NOT_SUPPORTED 3 179*1568fe7eSjsing #define GTPV1_NODE_ALIVE_REQUEST 4 180*1568fe7eSjsing #define GTPV1_NODE_ALIVE_RESPONSE 5 181*1568fe7eSjsing #define GTPV1_REDIRECTION_REQUEST 6 182*1568fe7eSjsing #define GTPV1_REDIRECTION_RESPONSE 7 183*1568fe7eSjsing #define GTPV1_CREATE_PDP_REQUEST 16 184*1568fe7eSjsing #define GTPV1_CREATE_PDP_RESPONSE 17 185*1568fe7eSjsing #define GTPV1_UPDATE_PDP_REQUEST 18 186*1568fe7eSjsing #define GTPV1_UPDATE_PDP_RESPONSE 19 187*1568fe7eSjsing #define GTPV1_DELETE_PDP_REQUEST 20 188*1568fe7eSjsing #define GTPV1_DELETE_PDP_RESPONSE 21 189*1568fe7eSjsing #define GTPV1_INIT_PDP_ACTIVATE_REQUEST 22 190*1568fe7eSjsing #define GTPV1_INIT_PDP_ACTIVATE_RESPONSE 23 191*1568fe7eSjsing #define GTPV1_ERROR_INDICATION 26 192*1568fe7eSjsing #define GTPV1_PDU_NOTIFICATION_REQUEST 27 193*1568fe7eSjsing #define GTPV1_PDU_NOTIFICATION_RESPONSE 28 194*1568fe7eSjsing #define GTPV1_PDU_NOTIFICATION_REJECT_REQUEST 29 195*1568fe7eSjsing #define GTPV1_PDU_NOTIFICATION_REJECT_RESPONSE 30 196*1568fe7eSjsing #define GTPV1_SUPPORT_EXT_HEADER_NOTIFICATION 31 197*1568fe7eSjsing #define GTPV1_SEND_ROUTEING_INFO_REQUEST 32 198*1568fe7eSjsing #define GTPV1_SEND_ROUTEING_INFO_RESPONSE 33 199*1568fe7eSjsing #define GTPV1_FAILURE_REPORT_REQUEST 34 200*1568fe7eSjsing #define GTPV1_FAILURE_REPORT_RESPONSE 35 201*1568fe7eSjsing #define GTPV1_NOTE_MS_GPRS_PRESENT_REQUEST 36 202*1568fe7eSjsing #define GTPV1_NOTE_MS_GPRS_PRESENT_RESPONSE 37 203*1568fe7eSjsing #define GTPV1_IDENTIFICATION_REQUEST 48 204*1568fe7eSjsing #define GTPV1_IDENTIFICATION_RESPONSE 49 205*1568fe7eSjsing #define GTPV1_SGSN_CONTEXT_REQUEST 50 206*1568fe7eSjsing #define GTPV1_SGSN_CONTEXT_RESPONSE 51 207*1568fe7eSjsing #define GTPV1_SGSN_CONTEXT_ACKNOWLEDGE 52 208*1568fe7eSjsing #define GTPV1_FORWARD_RELOCATION_REQUEST 53 209*1568fe7eSjsing #define GTPV1_FORWARD_RELOCATION_RESPONSE 54 210*1568fe7eSjsing #define GTPV1_FORWARD_RELOCATION_COMPLETE 55 211*1568fe7eSjsing #define GTPV1_RELOCATION_CANCEL_REQUEST 56 212*1568fe7eSjsing #define GTPV1_RELOCATION_CANCEL_RESPONSE 57 213*1568fe7eSjsing #define GTPV1_FORWARD_SRNS_CONTEXT 58 214*1568fe7eSjsing #define GTPV1_FORWARD_RELOCATION_COMPLETE_ACK 59 215*1568fe7eSjsing #define GTPV1_FORWARD_SRNS_CONTEXT_ACK 60 216*1568fe7eSjsing #define GTPV1_RAN_INFORMATION_RELAY 70 217*1568fe7eSjsing #define GTPV1_MBMS_NOTIFICATION_REQUEST 96 218*1568fe7eSjsing #define GTPV1_MBMS_NOTIFICATION_RESPONSE 97 219*1568fe7eSjsing #define GTPV1_MBMS_NOTIFICATION_REJECT_REQUEST 98 220*1568fe7eSjsing #define GTPV1_MBMS_NOTIFICATION_REJECT_RESPONSE 99 221*1568fe7eSjsing #define GTPV1_CREATE_MBMS_CONTEXT_REQUEST 100 222*1568fe7eSjsing #define GTPV1_CREATE_MBMS_CONTEXT_RESPONSE 101 223*1568fe7eSjsing #define GTPV1_UPDATE_MBMS_CONTEXT_REQUEST 102 224*1568fe7eSjsing #define GTPV1_UPDATE_MBMS_CONTEXT_RESPONSE 103 225*1568fe7eSjsing #define GTPV1_DELETE_MBMS_CONTEXT_REQUEST 104 226*1568fe7eSjsing #define GTPV1_DELETE_MBMS_CONTEXT_RESPONSE 105 227*1568fe7eSjsing #define GTPV1_MBMS_REGISTRATION_REQUEST 112 228*1568fe7eSjsing #define GTPV1_MBMS_REGISTRATION_RESPONSE 113 229*1568fe7eSjsing #define GTPV1_MBMS_DEREGISTRATION_REQUEST 114 230*1568fe7eSjsing #define GTPV1_MBMS_DEREGISTRATION_RESPONSE 115 231*1568fe7eSjsing #define GTPV1_MBMS_SESSION_START_REQUEST 116 232*1568fe7eSjsing #define GTPV1_MBMS_SESSION_START_RESPONSE 117 233*1568fe7eSjsing #define GTPV1_MBMS_SESSION_STOP_REQUEST 118 234*1568fe7eSjsing #define GTPV1_MBMS_SESSION_STOP_RESPONSE 119 235*1568fe7eSjsing #define GTPV1_MBMS_SESSION_UPDATE_REQUEST 120 236*1568fe7eSjsing #define GTPV1_MBMS_SESSION_UPDATE_RESPONSE 121 237*1568fe7eSjsing #define GTPV1_MS_INFO_CHANGE_REQUEST 128 238*1568fe7eSjsing #define GTPV1_MS_INFO_CHANGE_RESPONSE 129 239*1568fe7eSjsing #define GTPV1_DATA_RECORD_XFER_REQUEST 240 240*1568fe7eSjsing #define GTPV1_DATA_RECORD_XFER_RESPONSE 241 241*1568fe7eSjsing #define GTPV1_G_PDU 255 242*1568fe7eSjsing 243*1568fe7eSjsing /* 244*1568fe7eSjsing * GTPv1 Information Elements. 245*1568fe7eSjsing */ 246*1568fe7eSjsing #define GTPV1_TV_CAUSE 1 247*1568fe7eSjsing #define GTPV1_TV_CAUSE_LENGTH 2 248*1568fe7eSjsing #define GTPV1_TV_IMSI 2 249*1568fe7eSjsing #define GTPV1_TV_IMSI_LENGTH 9 250*1568fe7eSjsing #define GTPV1_TV_RAI 3 251*1568fe7eSjsing #define GTPV1_TV_RAI_LENGTH 7 252*1568fe7eSjsing #define GTPV1_TV_TLLI 4 253*1568fe7eSjsing #define GTPV1_TV_TLLI_LENGTH 5 254*1568fe7eSjsing #define GTPV1_TV_PTMSI 5 255*1568fe7eSjsing #define GTPV1_TV_PTMSI_LENGTH 6 256*1568fe7eSjsing #define GTPV1_TV_REORDER 8 257*1568fe7eSjsing #define GTPV1_TV_REORDER_LENGTH 2 258*1568fe7eSjsing #define GTPV1_TV_AUTH 9 259*1568fe7eSjsing #define GTPV1_TV_AUTH_LENGTH 29 260*1568fe7eSjsing #define GTPV1_TV_MAP_CAUSE 11 261*1568fe7eSjsing #define GTPV1_TV_MAP_CAUSE_LENGTH 2 262*1568fe7eSjsing #define GTPV1_TV_PTMSI_SIGNATURE 12 263*1568fe7eSjsing #define GTPV1_TV_PTMSI_SIGNATURE_LENGTH 4 264*1568fe7eSjsing #define GTPV1_TV_MS_VALIDATED 13 265*1568fe7eSjsing #define GTPV1_TV_MS_VALIDATED_LENGTH 2 266*1568fe7eSjsing #define GTPV1_TV_RECOVERY 14 267*1568fe7eSjsing #define GTPV1_TV_RECOVERY_LENGTH 2 268*1568fe7eSjsing #define GTPV1_TV_SELECTION_MODE 15 269*1568fe7eSjsing #define GTPV1_TV_SELECTION_MODE_LENGTH 2 270*1568fe7eSjsing #define GTPV1_TV_TEID_DATA_I 16 271*1568fe7eSjsing #define GTPV1_TV_TEID_DATA_I_LENGTH 5 272*1568fe7eSjsing #define GTPV1_TV_TEID_CTRL 17 273*1568fe7eSjsing #define GTPV1_TV_TEID_CTRL_LENGTH 5 274*1568fe7eSjsing #define GTPV1_TV_TEID_DATA_II 18 275*1568fe7eSjsing #define GTPV1_TV_TEID_DATA_II_LENGTH 6 276*1568fe7eSjsing #define GTPV1_TV_TEARDOWN 19 277*1568fe7eSjsing #define GTPV1_TV_TEARDOWN_LENGTH 2 278*1568fe7eSjsing #define GTPV1_TV_NSAPI 20 279*1568fe7eSjsing #define GTPV1_TV_NSAPI_LENGTH 2 280*1568fe7eSjsing #define GTPV1_TV_RANAP 21 281*1568fe7eSjsing #define GTPV1_TV_RANAP_LENGTH 2 282*1568fe7eSjsing #define GTPV1_TV_RAB_CONTEXT 22 283*1568fe7eSjsing #define GTPV1_TV_RAB_CONTEXT_LENGTH 10 284*1568fe7eSjsing #define GTPV1_TV_RADIO_PRIORITY_SMS 23 285*1568fe7eSjsing #define GTPV1_TV_RADIO_PRI_SMS_LENGTH 2 286*1568fe7eSjsing #define GTPV1_TV_RADIO_PRIORITY 24 287*1568fe7eSjsing #define GTPV1_TV_RADIO_PRI_LENGTH 2 288*1568fe7eSjsing #define GTPV1_TV_PACKET_FLOW_ID 25 289*1568fe7eSjsing #define GTPV1_TV_PACKET_FLOW_ID_LENGTH 3 290*1568fe7eSjsing #define GTPV1_TV_CHARGING 26 291*1568fe7eSjsing #define GTPV1_TV_CHARGING_LENGTH 3 292*1568fe7eSjsing #define GTPV1_TV_TRACE_REFERENCE 27 293*1568fe7eSjsing #define GTPV1_TV_TRACE_REFERENCE_LENGTH 3 294*1568fe7eSjsing #define GTPV1_TV_TRACE_TYPE 28 295*1568fe7eSjsing #define GTPV1_TV_TRACE_TYPE_LENGTH 3 296*1568fe7eSjsing #define GTPV1_TV_MSNRR 29 297*1568fe7eSjsing #define GTPV1_TV_MSNRR_LENGTH 2 298*1568fe7eSjsing #define GTPV1_TV_PACKET_XFER_CMD 126 299*1568fe7eSjsing #define GTPV1_TV_PACKET_XFER_CMD_LENGTH 2 300*1568fe7eSjsing #define GTPV1_TV_CHARGING_ID 127 301*1568fe7eSjsing #define GTPV1_TV_CHARGING_ID_LENGTH 5 302*1568fe7eSjsing 303*1568fe7eSjsing #define GTPV1_TLV_END_USER_ADDRESS 128 304*1568fe7eSjsing #define GTPV1_TLV_MM_CONTEXT 129 305*1568fe7eSjsing #define GTPV1_TLV_PDP_CONTEXT 130 306*1568fe7eSjsing #define GTPV1_TLV_ACCESS_POINT_NAME 131 307*1568fe7eSjsing #define GTPV1_TLV_PROTOCOL_CONFIG_OPTIONS 132 308*1568fe7eSjsing #define GTPV1_TLV_GSN_ADDRESS 133 309*1568fe7eSjsing #define GTPV1_TLV_MSISDN 134 310*1568fe7eSjsing #define GTPV1_TLV_QOS_PROFILE 135 311*1568fe7eSjsing #define GTPV1_TLV_AUTHENTICATION 136 312*1568fe7eSjsing #define GTPV1_TLV_TRAFFIC_FLOW 137 313*1568fe7eSjsing #define GTPV1_TLV_TARGET_IDENTIFICATION 138 314*1568fe7eSjsing #define GTPV1_TLV_UTRAN_CONTAINER 139 315*1568fe7eSjsing #define GTPV1_TLV_RAB_SETUP_INFORMATION 140 316*1568fe7eSjsing #define GTPV1_TLV_EXT_HEADER_TYPE_LIST 141 317*1568fe7eSjsing #define GTPV1_TLV_TRIGGER_ID 142 318*1568fe7eSjsing #define GTPV1_TLV_OMC_IDENTITY 143 319*1568fe7eSjsing #define GTPV1_TLV_RAN_CONTAINER 144 320*1568fe7eSjsing #define GTPV1_TLV_PDP_CONTEXT_PRIORITIZATION 145 321*1568fe7eSjsing #define GTPV1_TLV_ADDITIONAL_RAB_SETUP_INFO 146 322*1568fe7eSjsing #define GTPV1_TLV_SGSN_NUMBER 147 323*1568fe7eSjsing #define GTPV1_TLV_COMMON_FLAGS 148 324*1568fe7eSjsing #define GTPV1_TLV_APN_RESTRICTION 149 325*1568fe7eSjsing #define GTPV1_TLV_RADIO_PRIORITY_LCS 150 326*1568fe7eSjsing #define GTPV1_TLV_RAT_TYPE 151 327*1568fe7eSjsing #define GTPV1_TLV_USER_LOCATION_INFO 152 328*1568fe7eSjsing #define GTPV1_TLV_MS_TIME_ZONE 153 329*1568fe7eSjsing #define GTPV1_TLV_IMEI_SV 154 330*1568fe7eSjsing #define GTPV1_TLV_CAMEL_CHARGING_CONTAINER 155 331*1568fe7eSjsing #define GTPV1_TLV_MBMS_UE_CONTEXT 156 332*1568fe7eSjsing #define GTPV1_TLV_TMGI 157 333*1568fe7eSjsing #define GTPV1_TLV_RIM_ROUTING_ADDRESS 158 334*1568fe7eSjsing #define GTPV1_TLV_MBMS_PROTOCOL_CONFIG_OPTIONS 159 335*1568fe7eSjsing #define GTPV1_TLV_MBMS_SERVICE_AREA 160 336*1568fe7eSjsing #define GTPV1_TLV_SOURCE_RNC_PDCP_CONTEXT_INFO 161 337*1568fe7eSjsing #define GTPV1_TLV_ADDITIONAL_TRACE_INFO 162 338*1568fe7eSjsing #define GTPV1_TLV_HOP_COUNTER 163 339*1568fe7eSjsing #define GTPV1_TLV_SELECTED_PLMN_ID 164 340*1568fe7eSjsing #define GTPV1_TLV_MBMS_SESSION_IDENTIFIER 165 341*1568fe7eSjsing #define GTPV1_TLV_MBMS_2G_3G_INDICATOR 166 342*1568fe7eSjsing #define GTPV1_TLV_ENHANCED_NSAPI 167 343*1568fe7eSjsing #define GTPV1_TLV_MBMS_SESSION_DURATION 168 344*1568fe7eSjsing #define GTPV1_TLV_ADDITIONAL_MBMS_TRACE_INFO 169 345*1568fe7eSjsing #define GTPV1_TLV_MBMS_SESSION_REPITITION_NO 170 346*1568fe7eSjsing #define GTPV1_TLV_MBMS_TIME_TO_DATA_TRANSFER 171 347*1568fe7eSjsing #define GTPV1_TLV_PS_HANDOVER_REQUEST_CONTEXT 172 348*1568fe7eSjsing #define GTPV1_TLV_BSS_CONTAINER 173 349*1568fe7eSjsing #define GTPV1_TLV_CELL_IDENTIFICATION 174 350*1568fe7eSjsing #define GTPV1_TLV_PDU_NUMBERS 175 351*1568fe7eSjsing #define GTPV1_TLV_BSSGP_CAUSE 176 352*1568fe7eSjsing #define GTPV1_TLV_REQUIRED_MBMS_BEARER_CAP 177 353*1568fe7eSjsing #define GTPV1_TLV_RIM_ROUTING_ADDRESS_DISC 178 354*1568fe7eSjsing #define GTPV1_TLV_LIST_OF_SETUP_PFCS 179 355*1568fe7eSjsing #define GTPV1_TLV_PS_HANDOVER_XID_PARAMETERS 180 356*1568fe7eSjsing #define GTPV1_TLV_MS_INFO_CHANGE_REPORTING 181 357*1568fe7eSjsing #define GTPV1_TLV_DIRECT_TUNNEL_FLAGS 182 358*1568fe7eSjsing #define GTPV1_TLV_CORRELATION_ID 183 359*1568fe7eSjsing #define GTPV1_TLV_BEARER_CONTROL_MODE 184 360*1568fe7eSjsing #define GTPV1_TLV_MBMS_FLOW_IDENTIFIER 185 361*1568fe7eSjsing 362*1568fe7eSjsing #define GTPV1_TLV_RELEASED_PACKETS 249 363*1568fe7eSjsing #define GTPV1_TLV_CANCELLED_PACKETS 250 364*1568fe7eSjsing #define GTPV1_TLV_CHARGING_GATEWAY_ADDRESS 251 365*1568fe7eSjsing #define GTPV1_TLV_DATA_RECORD_PACKET 252 366*1568fe7eSjsing #define GTPV1_TLV_REQUESTS_RESPONDED 253 367*1568fe7eSjsing #define GTPV1_TLV_ADDRESS_OF_RECOMMENDED_NODE 254 368*1568fe7eSjsing 369*1568fe7eSjsing #define GTPV1_TLV_PRIVATE_EXTENSION 255 370*1568fe7eSjsing 371*1568fe7eSjsing struct gtp_v0_hdr { 372*1568fe7eSjsing u_int8_t flags; 373*1568fe7eSjsing u_int8_t msgtype; 374*1568fe7eSjsing u_int16_t length; 375*1568fe7eSjsing u_int16_t seqno; 376*1568fe7eSjsing u_int16_t flow; 377*1568fe7eSjsing u_int8_t npduno; 378*1568fe7eSjsing u_int8_t spare1; 379*1568fe7eSjsing u_int8_t spare2; 380*1568fe7eSjsing u_int8_t spare3; 381*1568fe7eSjsing u_int64_t tid; 382*1568fe7eSjsing } __packed; 383*1568fe7eSjsing 384*1568fe7eSjsing struct gtp_v0_prime_hdr { 385*1568fe7eSjsing u_int8_t flags; 386*1568fe7eSjsing u_int8_t msgtype; 387*1568fe7eSjsing u_int16_t length; 388*1568fe7eSjsing u_int16_t seqno; 389*1568fe7eSjsing } __packed; 390*1568fe7eSjsing 391*1568fe7eSjsing struct gtp_v1_hdr { 392*1568fe7eSjsing u_int8_t flags; 393*1568fe7eSjsing u_int8_t msgtype; 394*1568fe7eSjsing u_int16_t length; 395*1568fe7eSjsing u_int32_t teid; 396*1568fe7eSjsing } __packed; 397*1568fe7eSjsing 398*1568fe7eSjsing struct gtp_v1_hdr_ext { 399*1568fe7eSjsing struct gtp_v1_hdr gh; 400*1568fe7eSjsing u_int16_t seqno; 401*1568fe7eSjsing u_int8_t npduno; 402*1568fe7eSjsing u_int8_t nexthdr; 403*1568fe7eSjsing } __packed; 404*1568fe7eSjsing 405*1568fe7eSjsing struct gtp_v1_prime_hdr { 406*1568fe7eSjsing u_int8_t flags; 407*1568fe7eSjsing u_int8_t msgtype; 408*1568fe7eSjsing u_int16_t length; 409*1568fe7eSjsing u_int16_t seqno; 410*1568fe7eSjsing } __packed; 411*1568fe7eSjsing 412*1568fe7eSjsing static struct tok gtp_type[] = { 413*1568fe7eSjsing { 0, "GTPv0" }, 414*1568fe7eSjsing { 1, "GTPv0'" }, 415*1568fe7eSjsing { 2, "GTPv1-C" }, 416*1568fe7eSjsing { 3, "GTPv1-U" }, 417*1568fe7eSjsing { 4, "GTPv1'" } 418*1568fe7eSjsing }; 419*1568fe7eSjsing 420*1568fe7eSjsing static const char *gtp_rat_type[] = { 421*1568fe7eSjsing NULL, "UTRAN", "GERAN", "WLAN", "GAN", "HSPA Evolution" 422*1568fe7eSjsing }; 423*1568fe7eSjsing 424*1568fe7eSjsing static const char *gtp_packet_xfer_cmd[] = { 425*1568fe7eSjsing NULL, "Send Data Record", "Send Duplicated Record", 426*1568fe7eSjsing "Cancel Data Record", "Release Data Record" 427*1568fe7eSjsing }; 428*1568fe7eSjsing 429*1568fe7eSjsing static const char *mbms_2g3g_indicator[] = { 430*1568fe7eSjsing "2G Only", "3G Only", "2G and 3G" 431*1568fe7eSjsing }; 432*1568fe7eSjsing 433*1568fe7eSjsing static const char *ms_info_change_rpt[] = { 434*1568fe7eSjsing "Stop Reporting", "Start Reporting CGI/SAI", "Start Reporting RAI" 435*1568fe7eSjsing }; 436*1568fe7eSjsing 437*1568fe7eSjsing #endif 438