/* Do not modify this file. Changes will be overwritten. */
/* Generated automatically by the ASN.1 to Wireshark dissector compiler */
/* packet-rrc.c */
/* asn2wrs.py -p rrc -c ./rrc.cnf -s ./packet-rrc-template -D . -O ../.. Class-definitions.asn PDU-definitions.asn InformationElements.asn Constant-definitions.asn Internode-definitions.asn */
/* Input file: packet-rrc-template.c */
#line 1 "./asn1/rrc/packet-rrc-template.c"
/* packet-rrc.c
* Routines for Universal Mobile Telecommunications System (UMTS);
* Radio Resource Control (RRC) protocol specification
* (3GPP TS 25.331 packet dissection)
* Copyright 2006-2010, Anders Broman <anders.broman@ericsson.com>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*
* Ref: 3GPP TS 25.331 V15.4.0 (2018-09)
*/
/**
*
* TODO:
* - Fix ciphering information for circuit switched stuff
*/
#include "config.h"
#include <epan/packet.h>
#include <epan/asn1.h>
#include <epan/conversation.h>
#include <epan/expert.h>
#include <epan/proto_data.h>
#include "packet-ber.h"
#include "packet-per.h"
#include "packet-rrc.h"
#include "packet-gsm_a_common.h"
#include "packet-nbap.h"
#include "packet-umts_fp.h"
#include "packet-umts_mac.h"
#include "packet-umts_rlc.h"
#ifdef _MSC_VER
/* disable: "warning C4049: compiler limit : terminating line number emission" */
#pragma warning(disable:4049)
/* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
#pragma warning(disable:4146)
#endif
#define PNAME "Radio Resource Control (RRC) protocol"
#define PSNAME "RRC"
#define PFNAME "rrc"
extern int proto_fp; /*Handler to FP*/
extern int proto_umts_mac; /*Handler to MAC*/
extern int proto_umts_rlc; /*Handler to RLC*/
GTree * hsdsch_muxed_flows = NULL;
GTree * rrc_ciph_info_tree = NULL;
wmem_tree_t* rrc_global_urnti_crnti_map = NULL;
static int msg_type _U_;
enum rrc_sib_segment_type {
RRC_SIB_SEG_NO_SEGMENT = 0,
RRC_SIB_SEG_FIRST = 1,
RRC_SIB_SEG_SUBSEQUENT = 2,
RRC_SIB_SEG_LAST_SHORT = 3,
RRC_SIB_SEG_LAST_AND_FIRST = 4,
RRC_SIB_SEG_LAST_AND_COMP = 5,
RRC_SIB_SEG_LAST_AND_COMP_AND_FIRST = 6,
RRC_SIB_SEG_COMP_LIST = 7,
RRC_SIB_SEG_COMP_AND_FIRST = 8,
RRC_SIB_SEG_COMP = 10,
};
/*****************************************************************************/
/* Packet private data */
/* For this dissector, all access to actx->private_data should be made */
/* through this API, which ensures that they will not overwrite each other!! */
/*****************************************************************************/
typedef struct umts_rrc_private_data_t
{
guint32 s_rnc_id; /* The S-RNC ID part of a U-RNTI */
guint32 s_rnti; /* The S-RNTI part of a U-RNTI */
guint32 new_u_rnti;
guint32 current_u_rnti;
guint32 scrambling_code;
enum nas_sys_info_gsm_map cn_domain;
wmem_strbuf_t* digits_strbuf; /* A collection of digits in a string. Used for reconstructing IMSIs or MCC-MNC pairs */
wmem_strbuf_t* last_mcc_strbuf; /* Last seen MCC digits string */
gboolean digits_strbuf_parsing_failed_flag; /* Whether an error occured when creating the IMSI/MCC-MNC pair string */
guint32 rbid;
guint32 rlc_ciphering_sqn; /* Sequence number where ciphering starts in a given bearer */
rrc_ciphering_info* ciphering_info;
enum rrc_ue_state rrc_state_indicator;
enum rrc_sib_segment_type curr_sib_segment_type;
guint32 curr_sib_type;
} umts_rrc_private_data_t;
/* Helper function to get or create a struct that will be actx->private_data */
static umts_rrc_private_data_t* umts_rrc_get_private_data(asn1_ctx_t *actx)
{
if (actx->private_data == NULL) {
actx->private_data = wmem_new0(wmem_packet_scope(), umts_rrc_private_data_t);
}
return (umts_rrc_private_data_t*)actx->private_data;
}
static guint32 private_data_get_s_rnc_id(asn1_ctx_t *actx)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
return private_data->s_rnc_id;
}
static void private_data_set_s_rnc_id(asn1_ctx_t *actx, guint32 s_rnc_id)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
private_data->s_rnc_id = s_rnc_id;
}
static guint32 private_data_get_s_rnti(asn1_ctx_t *actx)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
return private_data->s_rnti;
}
static void private_data_set_s_rnti(asn1_ctx_t *actx, guint32 s_rnti)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
private_data->s_rnti = s_rnti;
}
static guint32 private_data_get_new_u_rnti(asn1_ctx_t *actx)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
return private_data->new_u_rnti;
}
static void private_data_set_new_u_rnti(asn1_ctx_t *actx, guint32 new_u_rnti)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
private_data->new_u_rnti = new_u_rnti;
}
static guint32 private_data_get_current_u_rnti(asn1_ctx_t *actx)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
return private_data->current_u_rnti;
}
static void private_data_set_current_u_rnti(asn1_ctx_t *actx, guint32 current_u_rnti)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
private_data->current_u_rnti = current_u_rnti;
}
static guint32 private_data_get_scrambling_code(asn1_ctx_t *actx)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
return private_data->scrambling_code;
}
static void private_data_set_scrambling_code(asn1_ctx_t *actx, guint32 scrambling_code)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
private_data->scrambling_code = scrambling_code;
}
static enum nas_sys_info_gsm_map private_data_get_cn_domain(asn1_ctx_t *actx)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
return private_data->cn_domain;
}
static void private_data_set_cn_domain(asn1_ctx_t *actx, enum nas_sys_info_gsm_map cn_domain)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
private_data->cn_domain = cn_domain;
}
static wmem_strbuf_t* private_data_get_digits_strbuf(asn1_ctx_t *actx)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
return private_data->digits_strbuf;
}
static void private_data_set_digits_strbuf(asn1_ctx_t *actx, wmem_strbuf_t* digits_strbuf)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
private_data->digits_strbuf = digits_strbuf;
}
static gboolean private_data_get_digits_strbuf_parsing_failed_flag(asn1_ctx_t *actx)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
return private_data->digits_strbuf_parsing_failed_flag;
}
static void private_data_set_digits_strbuf_parsing_failed_flag(asn1_ctx_t *actx, gboolean digits_strbuf_parsing_failed_flag)
{
umts_rrc_private_data_t *private_data = (umts_rrc_private_data_t*)umts_rrc_get_private_data(actx);
private_data->digits_strbuf_parsing_failed_flag = digits_strbuf_parsing_failed_flag;
}
static wmem_strbuf_t* private_data_get_last_mcc_strbuf(asn1_ctx_t *actx)
{
umts_rrc_private_data_t *private_data = (umts_rrc_pr
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
wireshark 2020-08-31 最新源代码 (2000个子文件)
packet-rrc.c 9.68MB
packet-lte-rrc.c 7.16MB
packet-nr-rrc.c 4.54MB
packet-parlay.c 3.81MB
packet-nbap.c 3.72MB
packet-rnsap.c 3.22MB
packet-gsm_map.c 1.52MB
packet-ieee80211.c 1.49MB
packet-dcerpc-clusapi.c 1.36MB
packet-x2ap.c 1.26MB
packet-ngap.c 1.2MB
packet-lpp.c 1.07MB
packet-lppe.c 1.06MB
usb.c 1.03MB
packet-dcerpc-srvsvc.c 1000KB
packet-its.c 997KB
packet-ansi_map.c 977KB
packet-s1ap.c 976KB
packet-h245.c 914KB
packet-zbee-zcl-se.c 888KB
packet-lbmc.c 876KB
packet-ranap.c 871KB
packet-asterix.c 864KB
packet-netflow.c 861KB
packet-pcap.c 850KB
packet-xnap.c 826KB
packet-gsm_rlcmac.c 814KB
packet-dcerpc-samr.c 776KB
packet-btatt.c 762KB
packet-zbee-zcl-general.c 752KB
packet-qsig.c 726KB
packet-opa-mad.c 688KB
packet-smb.c 669KB
packet-gsm_a_rr.c 660KB
packet-dcerpc-lsa.c 635KB
packet-f1ap.c 632KB
packet-dcerpc-winspool.c 631KB
packet-bgp.c 597KB
packet-bacapp.c 593KB
packet-cigi.c 592KB
packet-rtps.c 582KB
packet-z3950.c 581KB
packet-dcerpc-pn-io.c 579KB
packet-dcerpc-nspi.c 569KB
packet-amqp.c 568KB
packet-inap.c 562KB
packet-dcerpc-wkssvc.c 562KB
packet-isup.c 561KB
packet-dcerpc-mapi.c 541KB
packet-h225.c 535KB
packet-mbim.c 535KB
packet-pfcp.c 534KB
packet-p1.c 524KB
packet-ain.c 521KB
packet-ff.c 506KB
packet-gtpv2.c 502KB
packet-gtp.c 502KB
packet-rrlp.c 480KB
packet-bthci_cmd.c 478KB
packet-nfs.c 476KB
packet-camel.c 476KB
packet-tetra.c 474KB
packet-q708.c 471KB
packet-rsvp.c 470KB
packet-openflow_v6.c 467KB
packet-s7comm.c 466KB
packet-e1ap.c 464KB
packet-mms.c 456KB
packet-assa_r3.c 454KB
packet-skinny.c 453KB
packet-mac-lte.c 448KB
packet-dof.c 445KB
packet-ulp.c 444KB
packet-nfapi.c 444KB
packet-ieee1905.c 442KB
packet-bthci_evt.c 439KB
packet-smb2.c 438KB
packet-ansi_a.c 438KB
packet-c15ch.c 437KB
packet-openflow_v5.c 422KB
packet-dis.c 420KB
packet-ndps.c 419KB
packet-cip.c 414KB
packet-tds.c 411KB
packet-tls-utils.c 410KB
packet-gias.c 407KB
packet-dhcp.c 407KB
packet-infiniband.c 406KB
packet-docsis-macmgmt.c 406KB
packet-dcerpc-drsuapi.c 405KB
packet-lustre.c 396KB
packet-dcerpc-netlogon.c 390KB
packet-kafka.c 385KB
packet-scsi.c 376KB
packet-gprscdr.c 374KB
packet-homeplug-av.c 368KB
proto.c 361KB
packet-atn-cpdlc.c 357KB
packet-lbmr.c 355KB
packet-nas_5gs.c 351KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
zlifes
- 粉丝: 18
- 资源: 256
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于ThinkPHP的轻量级PHP开发框架设计源码
- 基于CSS的响应式鲜花网站全屏效果设计源码
- 基于JavaScript的访客预约系统设计源码
- 基于Vue和ECharts的工作租房数据可视化系统设计源码
- 1040g0cg310ravpiu6ibg5pg00tsipsln3ju2d0g 2
- 基于Python的SAR图像去噪CNN-NLM设计源码
- redhat6升级到redhat7,过程redhat6.x-> redhat6.10->rehat7.9 主版本最高版本
- 基于Django的流程引擎设计源码
- 基于Node.js的Express框架与MySQL的后台管理系统设计源码
- 基于Java的Flink流批一体数据处理快速集成开发框架设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功